private static String getCustomUserKey(String key) { CredentialedUser activeUser = Services.getLoginService().getActiveUser(); if (activeUser == null) { return key; } return key + "_" + activeUser.getEmail(); }
@VisibleForTesting void setSelectedProject(CloudProject cloudProject) { if (cloudProject != null && !Strings.isNullOrEmpty(cloudProject.googleUsername())) { Optional<CredentialedUser> loggedInUser = Services.getLoginService().getLoggedInUser(cloudProject.googleUsername()); if (loggedInUser.isPresent()) { selectedProjectsByAccount.put(loggedInUser.get(), cloudProject.projectName()); accountComboBox.setSelectedItem(loggedInUser.get()); } } else { // no project set, show active user projects by default. accountComboBox.setSelectedItem(Services.getLoginService().getActiveUser()); } }
/** * Retrieves the persistently stored {@link OAuthData} object for the active user, if any. * * @return the persistently stored {@code OAuthData} object for the active user if it exists or an * {@code OAuthData} object all of whose getters return {@code null} . */ public static OAuthData loadOAuthData() { String refreshToken = null; String storedEmail = null; SortedSet<String> storedScopes = new TreeSet<String>(); if (Services.getLoginService().getActiveUser() != null) { Preferences prefs = getPrefs(); refreshToken = prefs.get(getCustomUserKey(OAUTH_DATA_REFRESH_TOKEN_KEY), null); storedEmail = prefs.get(getCustomUserKey(OAUTH_DATA_EMAIL_KEY), null); String storedScopesString = prefs.get(getCustomUserKey(OAUTH_SCOPES_KEY), ""); // Use a set to ensure uniqueness. for (String scope : Splitter.on(DELIMITER).split(storedScopesString)) { storedScopes.add(scope); } } return new OAuthData(null, refreshToken, storedEmail, storedScopes, 0); }
@Override public Dimension getPreferredScrollableViewportSize() { int numUsers = listModel.size(); Dimension superPreferredSize = super.getPreferredScrollableViewportSize(); if (numUsers <= 1) { return superPreferredSize; } if (Services.getLoginService().getActiveUser() == null) { return superPreferredSize; } else if (!isActiveUserInVisibleArea()) { return superPreferredSize; } else { // if there is an active user in the visible area int usersToShow = numUsers > MAX_VISIBLE_ROW_COUNT ? MAX_VISIBLE_ROW_COUNT : numUsers; int scrollHeight = ((usersToShow - 1) * usersListCellRenderer.getMainPanelHeight()) + usersListCellRenderer.getActivePanelHeight(); return new Dimension((int) superPreferredSize.getWidth(), scrollHeight); } } };
/** Mocks list of currently signed in users returned by login service. First user is active. */ private void mockUserList(List<CredentialedUser> userList) { Map<String, CredentialedUser> emailUserMap = userList .stream() .collect(Collectors.toMap(CredentialedUser::getEmail, Function.identity())); when(googleLoginService.getAllUsers()).thenReturn(emailUserMap); when(googleLoginService.getActiveUser()).thenReturn(userList.get(0)); for (CredentialedUser user : userList) { when(googleLoginService.ensureLoggedIn(user.getEmail())).thenReturn(true); when(googleLoginService.getLoggedInUser(user.getEmail())).thenReturn(Optional.of(user)); } }
final CredentialedUser activeUser = Services.getLoginService().getActiveUser(); final boolean isActiveUserSelected = activeUser != null && usersListItem.getUserEmail().equals(activeUser.getEmail());
@Override public void update(AnActionEvent e) { Presentation presentation = e.getPresentation(); CredentialedUser activeUser = Services.getLoginService().getActiveUser(); if (activeUser == null) { presentation.setText(SIGN_IN_MESSAGE); } else { presentation.setText(activeUser.getEmail()); } presentation.setIcon(GoogleLoginIcons.getScaledUserIcon(ICON_SIZE, activeUser)); }
/** Clears the persistently stored {@link OAuthData} object for the active user, if any. */ public static void clearStoredOAuthData() { CredentialedUser activeUser = Services.getLoginService().getActiveUser(); if (activeUser == null) { return; } Preferences prefs = getPrefs(); prefs.remove(getCustomUserKey(OAUTH_DATA_REFRESH_TOKEN_KEY)); prefs.remove(getCustomUserKey(OAUTH_DATA_EMAIL_KEY)); prefs.remove(getCustomUserKey(OAUTH_SCOPES_KEY)); removeUser(prefs, activeUser.getEmail()); flushPrefs(prefs); }
.subscribe( GoogleLoginListener.GOOGLE_LOGIN_LISTENER_TOPIC, () -> refreshDialog(Services.getLoginService().getActiveUser()));