15088: Adds account linking functionality
[arvados-workbench2.git] / src / store / link-account-panel / link-account-panel-reducer.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { linkAccountPanelActions, LinkAccountPanelAction } from "~/store/link-account-panel/link-account-panel-actions";
6 import { UserResource, User } from "~/models/user";
7
8 export interface LinkAccountPanelState {
9     user: UserResource | undefined;
10     userToken: string | undefined;
11     userToLink: UserResource | undefined;
12     userToLinkToken: string | undefined;
13 }
14
15 const initialState = {
16     user: undefined,
17     userToken: undefined,
18     userToLink: undefined,
19     userToLinkToken: undefined
20 };
21
22 export const linkAccountPanelReducer = (state: LinkAccountPanelState = initialState, action: LinkAccountPanelAction) =>
23     linkAccountPanelActions.match(action, {
24         default: () => state,
25         LOAD_LINKING: ({ userToLink, user, userToken, userToLinkToken}) => ({ ...state, user, userToken, userToLink, userToLinkToken }),
26         RESET_LINKING: () => ({ ...state, user: undefined, userToken: undefined, userToLink: undefined, userToLinkToken: undefined })
27     });