import { WORKBENCH_LOADING_SCREEN } from '~/store/workbench/workbench-actions';
export const linkAccountPanelActions = unionize({
- LINK_INIT: ofType<{ targetUser: UserResource | undefined }>(),
+ LINK_INIT: ofType<{
+ targetUser: UserResource | undefined }>(),
LINK_LOAD: ofType<{
originatingUser: OriginatingUser | undefined,
targetUser: UserResource | undefined,
targetUser: UserResource | undefined,
userToLink: UserResource | undefined,
error: LinkAccountPanelError }>(),
+ SET_SELECTED_CLUSTER: ofType<{
+ selectedCluster: string }>(),
HAS_SESSION_DATA: {}
});
if (linkState.userToLink && linkState.userToLinkToken && linkState.targetUser && linkState.targetUserToken) {
if (linkState.originatingUser === OriginatingUser.TARGET_USER) {
dispatch(switchUser(linkState.targetUser, linkState.targetUserToken));
- dispatch(linkAccountPanelActions.LINK_INIT({targetUser: linkState.targetUser}));
}
else if ((linkState.originatingUser === OriginatingUser.USER_TO_LINK)) {
dispatch(switchUser(linkState.userToLink, linkState.userToLinkToken));
- dispatch(linkAccountPanelActions.LINK_INIT({targetUser: linkState.userToLink}));
}
- dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Account link failed.', kind: SnackbarKind.ERROR , hideDuration: 3000 }));
}
services.linkAccountService.removeAccountToLink();
+ services.linkAccountService.saveLinkOpStatus(LinkAccountStatus.FAILED);
+ location.reload();
};
export const loadLinkAccountPanel = () =>
async (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
+ if (getState().linkAccountPanel.selectedCluster === undefined) {
+ dispatch(linkAccountPanelActions.SET_SELECTED_CLUSTER({ selectedCluster: getState().auth.localCluster }));
+ }
+
// First check if an account link operation has completed
dispatch(checkForLinkStatus());
const accountToLink = {type: t, userUuid: services.authService.getUuid(), token: services.authService.getApiToken()} as AccountToLink;
services.linkAccountService.saveAccountToLink(accountToLink);
const auth = getState().auth;
+ const selectedCluster = getState().linkAccountPanel.selectedCluster;
+ const homeCluster = selectedCluster ? selectedCluster : auth.homeCluster;
dispatch(logout());
- dispatch(login(auth.localCluster, auth.remoteHosts[auth.homeCluster]));
+ dispatch(login(auth.localCluster, homeCluster, auth.remoteHosts));
};
export const getAccountLinkData = () =>