X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/2f857ebcd67a607b7fde9c0ea4808ac30c591876..96086f4ff017f24b8436d92f6a5b7f6ec566276e:/src/store/link-account-panel/link-account-panel-reducer.ts diff --git a/src/store/link-account-panel/link-account-panel-reducer.ts b/src/store/link-account-panel/link-account-panel-reducer.ts index 9e0bd3f7..15d07810 100644 --- a/src/store/link-account-panel/link-account-panel-reducer.ts +++ b/src/store/link-account-panel/link-account-panel-reducer.ts @@ -2,17 +2,20 @@ // // SPDX-License-Identifier: AGPL-3.0 -import { linkAccountPanelActions, LinkAccountPanelAction } from "~/store/link-account-panel/link-account-panel-actions"; -import { UserResource } from "~/models/user"; +import { linkAccountPanelActions, LinkAccountPanelAction } from "store/link-account-panel/link-account-panel-actions"; +import { UserResource } from "models/user"; export enum LinkAccountPanelStatus { + NONE, INITIAL, + HAS_SESSION_DATA, LINKING, ERROR } export enum LinkAccountPanelError { NONE, + INACTIVE, NON_ADMIN, SAME_USER } @@ -24,6 +27,7 @@ export enum OriginatingUser { } export interface LinkAccountPanelState { + selectedCluster: string | undefined; originatingUser: OriginatingUser | undefined; targetUser: UserResource | undefined; targetUserToken: string | undefined; @@ -31,15 +35,18 @@ export interface LinkAccountPanelState { userToLinkToken: string | undefined; status: LinkAccountPanelStatus; error: LinkAccountPanelError; + isProcessing: boolean; } const initialState = { - originatingUser: undefined, + selectedCluster: undefined, + originatingUser: OriginatingUser.NONE, targetUser: undefined, targetUserToken: undefined, userToLink: undefined, userToLinkToken: undefined, - status: LinkAccountPanelStatus.INITIAL, + isProcessing: false, + status: LinkAccountPanelStatus.NONE, error: LinkAccountPanelError.NONE }; @@ -47,12 +54,33 @@ export const linkAccountPanelReducer = (state: LinkAccountPanelState = initialSt linkAccountPanelActions.match(action, { default: () => state, LINK_INIT: ({ targetUser }) => ({ - ...state, targetUser, status: LinkAccountPanelStatus.INITIAL, error: LinkAccountPanelError.NONE, originatingUser: OriginatingUser.NONE + ...state, + targetUser, targetUserToken: undefined, + userToLink: undefined, userToLinkToken: undefined, + status: LinkAccountPanelStatus.INITIAL, error: LinkAccountPanelError.NONE, originatingUser: OriginatingUser.NONE }), LINK_LOAD: ({ originatingUser, userToLink, targetUser, targetUserToken, userToLinkToken}) => ({ - ...state, originatingUser, targetUser, targetUserToken, userToLink, userToLinkToken, status: LinkAccountPanelStatus.LINKING, error: LinkAccountPanelError.NONE + ...state, + originatingUser, + targetUser, targetUserToken, + userToLink, userToLinkToken, + status: LinkAccountPanelStatus.LINKING, error: LinkAccountPanelError.NONE + }), + LINK_INVALID: ({ originatingUser, targetUser, userToLink, error }) => ({ + ...state, + originatingUser, + targetUser, targetUserToken: undefined, + userToLink, userToLinkToken: undefined, + error, status: LinkAccountPanelStatus.ERROR + }), + SET_SELECTED_CLUSTER: ({ selectedCluster }) => ({ + ...state, selectedCluster + }), + SET_IS_PROCESSING: ({ isProcessing }) =>({ + ...state, + isProcessing }), - LINK_INVALID: ({originatingUser, targetUser, userToLink, error}) => ({ - ...state, originatingUser, targetUser, userToLink, error, status: LinkAccountPanelStatus.ERROR + HAS_SESSION_DATA: () => ({ + ...state, status: LinkAccountPanelStatus.HAS_SESSION_DATA }) }); \ No newline at end of file