X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/dcab8d69b5fb93c025c49fd85bf39d038c4fb3d0..2f857ebcd67a607b7fde9c0ea4808ac30c591876:/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 7f7e3eb3..9e0bd3f7 100644 --- a/src/store/link-account-panel/link-account-panel-reducer.ts +++ b/src/store/link-account-panel/link-account-panel-reducer.ts @@ -17,9 +17,16 @@ export enum LinkAccountPanelError { SAME_USER } +export enum OriginatingUser { + NONE, + TARGET_USER, + USER_TO_LINK +} + export interface LinkAccountPanelState { - user: UserResource | undefined; - userToken: string | undefined; + originatingUser: OriginatingUser | undefined; + targetUser: UserResource | undefined; + targetUserToken: string | undefined; userToLink: UserResource | undefined; userToLinkToken: string | undefined; status: LinkAccountPanelStatus; @@ -27,8 +34,9 @@ export interface LinkAccountPanelState { } const initialState = { - user: undefined, - userToken: undefined, + originatingUser: undefined, + targetUser: undefined, + targetUserToken: undefined, userToLink: undefined, userToLinkToken: undefined, status: LinkAccountPanelStatus.INITIAL, @@ -38,16 +46,13 @@ const initialState = { export const linkAccountPanelReducer = (state: LinkAccountPanelState = initialState, action: LinkAccountPanelAction) => linkAccountPanelActions.match(action, { default: () => state, - INIT: ({ user }) => ({ - ...state, user, state: LinkAccountPanelStatus.INITIAL, error: LinkAccountPanelError.NONE - }), - LOAD: ({ userToLink, user, userToken, userToLinkToken}) => ({ - ...state, user, userToken, userToLink, userToLinkToken, status: LinkAccountPanelStatus.LINKING, error: LinkAccountPanelError.NONE + LINK_INIT: ({ targetUser }) => ({ + ...state, targetUser, status: LinkAccountPanelStatus.INITIAL, error: LinkAccountPanelError.NONE, originatingUser: OriginatingUser.NONE }), - RESET: () => ({ - ...state, userToken: undefined, userToLink: undefined, userToLinkToken: undefined, status: LinkAccountPanelStatus.INITIAL, error: LinkAccountPanelError.NONE + LINK_LOAD: ({ originatingUser, userToLink, targetUser, targetUserToken, userToLinkToken}) => ({ + ...state, originatingUser, targetUser, targetUserToken, userToLink, userToLinkToken, status: LinkAccountPanelStatus.LINKING, error: LinkAccountPanelError.NONE }), - INVALID: ({user, userToLink, error}) => ({ - ...state, user, userToLink, error, status: LinkAccountPanelStatus.ERROR + LINK_INVALID: ({originatingUser, targetUser, userToLink, error}) => ({ + ...state, originatingUser, targetUser, userToLink, error, status: LinkAccountPanelStatus.ERROR }) }); \ No newline at end of file