20219: Improve useAsyncInterval testability, add unit test
[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-service';
7 import { VirtualMachineLogins } from 'models/virtual-machines';
8
9 interface VirtualMachines {
10     date: string;
11     virtualMachines: ListResults<any>;
12     logins: VirtualMachineLogins;
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         kind: '',
27         items: []
28     },
29     links: {
30         kind: '',
31         offset: 0,
32         limit: 0,
33         itemsAvailable: 0,
34         items: []
35     }
36 };
37
38 export const virtualMachinesReducer = (state = initialState, action: VirtualMachineActions): VirtualMachines =>
39     virtualMachinesActions.match(action, {
40         SET_REQUESTED_DATE: date => ({ ...state, date }),
41         SET_VIRTUAL_MACHINES: virtualMachines => ({ ...state, virtualMachines }),
42         SET_LOGINS: logins => ({ ...state, logins }),
43         SET_LINKS: links => ({ ...state, links }),
44         default: () => state
45     });