prepared for logins from be
[arvados-workbench2.git] / src / store / virtual-machines / virtual-machines-actions.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { Dispatch } from "redux";
6 import { RootState } from '~/store/store';
7 import { ServiceRepository } from "~/services/services";
8 import { navigateToVirtualMachines } from "../navigation/navigation-action";
9 import { bindDataExplorerActions } from '~/store/data-explorer/data-explorer-action';
10 import { formatDate } from "~/common/formatters";
11 import { unionize, ofType, UnionOf } from "~/common/unionize";
12 import { VirtualMachinesLoginsResource } from '~/models/virtual-machines';
13
14 export const virtualMachinesActions = unionize({
15     SET_REQUESTED_DATE: ofType<string>(),
16     SET_VIRTUAL_MACHINES: ofType<any>(),
17     SET_LOGINS: ofType<VirtualMachinesLoginsResource[]>()
18 });
19
20 export type VirtualMachineActions = UnionOf<typeof virtualMachinesActions>;
21
22 export const VIRTUAL_MACHINES_PANEL = 'virtualMachinesPanel';
23
24 export const openVirtualMachines = () =>
25     async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
26         dispatch<any>(navigateToVirtualMachines);
27     };
28
29 const loadRequestedDate = () =>
30     (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
31         const date = services.virtualMachineService.getRequestedDate();
32         dispatch(virtualMachinesActions.SET_REQUESTED_DATE(date));
33     };
34
35
36 export const loadVirtualMachinesData = () =>
37     async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
38         dispatch<any>(loadRequestedDate());
39         const virtualMachines = await services.virtualMachineService.list();
40         dispatch(virtualMachinesActions.SET_VIRTUAL_MACHINES(virtualMachines));
41         // const logins = await services.virtualMachineService.logins(virtualMachines.items[0].uuid);
42         // console.log(logins);
43         // const getAllLogins = await services.virtualMachineService.getAllLogins();
44         // console.log(getAllLogins);  
45         // dispatch(virtualMachinesActions.SET_LOGINS(getAllLogins));
46     };
47
48 export const saveRequestedDate = () =>
49     (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
50         const date = formatDate((new Date).toISOString());
51         services.virtualMachineService.saveRequestedDate(date);
52         dispatch<any>(loadRequestedDate());
53     };
54
55 const virtualMachinesBindedActions = bindDataExplorerActions(VIRTUAL_MACHINES_PANEL);
56
57 export const loadVirtualMachinesPanel = () =>
58     (dispatch: Dispatch) => {
59         dispatch(virtualMachinesBindedActions.REQUEST_ITEMS());
60     };