Merge branch 'master' into 14452-my-account
[arvados-workbench2.git] / src / store / virtual-machines / virtual-machines-reducer.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { virtualMachinesActions, VirtualMachineActions } from '~/store/virtual-machines/virtual-machines-actions';
6 import { ListResults } from '~/services/common-service/common-resource-service';
7 import { VirtualMachinesLoginsResource } from '~/models/virtual-machines';
8
9 interface VirtualMachines {
10     date: string;
11     virtualMachines: ListResults<any>;
12     logins: VirtualMachinesLoginsResource[];
13     links: ListResults<any>;
14 }
15
16 const initialState: VirtualMachines = {
17     date: '',
18     virtualMachines: {
19         kind: '',
20         offset: 0,
21         limit: 0,
22         itemsAvailable: 0,
23         items: []
24     },
25     logins: [],
26     links: {
27         kind: '',
28         offset: 0,
29         limit: 0,
30         itemsAvailable: 0,
31         items: []
32     }
33 };
34
35 export const virtualMachinesReducer = (state = initialState, action: VirtualMachineActions): VirtualMachines =>
36     virtualMachinesActions.match(action, {
37         SET_REQUESTED_DATE: date => ({ ...state, date }),
38         SET_VIRTUAL_MACHINES: virtualMachines => ({ ...state, virtualMachines }),
39         SET_LOGINS: logins => ({ ...state, logins }),
40         SET_LINKS: links => ({ ...state, links }),
41         default: () => state
42     });