X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/9dbb20349af9d1fa275e01147c53242d3b4680f5..df60d34060e3031bdec0ea58c25bcff99d4d3817:/src/store/virtual-machines/virtual-machines-actions.ts diff --git a/src/store/virtual-machines/virtual-machines-actions.ts b/src/store/virtual-machines/virtual-machines-actions.ts index d87433f9..62564959 100644 --- a/src/store/virtual-machines/virtual-machines-actions.ts +++ b/src/store/virtual-machines/virtual-machines-actions.ts @@ -5,13 +5,13 @@ import { Dispatch } from "redux"; import { RootState } from '~/store/store'; import { ServiceRepository } from "~/services/services"; -import { navigateToVirtualMachines } from "../navigation/navigation-action"; +import { navigateToUserVirtualMachines, navigateToAdminVirtualMachines, navigateToRootProject } from "~/store/navigation/navigation-action"; import { bindDataExplorerActions } from '~/store/data-explorer/data-explorer-action'; import { formatDate } from "~/common/formatters"; import { unionize, ofType, UnionOf } from "~/common/unionize"; import { VirtualMachineLogins } from '~/models/virtual-machines'; import { FilterBuilder } from "~/services/api/filter-builder"; -import { ListResults } from "~/services/common-service/common-resource-service"; +import { ListResults } from "~/services/common-service/common-service"; import { dialogActions } from '~/store/dialog/dialog-actions'; import { snackbarActions, SnackbarKind } from '~/store/snackbar/snackbar-actions'; @@ -28,14 +28,25 @@ export const VIRTUAL_MACHINES_PANEL = 'virtualMachinesPanel'; export const VIRTUAL_MACHINE_ATTRIBUTES_DIALOG = 'virtualMachineAttributesDialog'; export const VIRTUAL_MACHINE_REMOVE_DIALOG = 'virtualMachineRemoveDialog'; -export const openVirtualMachines = () => +export const openUserVirtualMachines = () => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { - dispatch(navigateToVirtualMachines); + dispatch(navigateToUserVirtualMachines); }; -export const openVirtualMachineAttributes = (index: number) => +export const openAdminVirtualMachines = () => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { - const virtualMachineData = getState().virtualMachines.virtualMachines.items[index]; + const user = getState().auth.user; + if (user && user.isAdmin) { + dispatch(navigateToAdminVirtualMachines); + } else { + dispatch(navigateToRootProject); + dispatch(snackbarActions.OPEN_SNACKBAR({ message: "You don't have permissions to view this page", hideDuration: 2000, kind: SnackbarKind.ERROR })); + } + }; + +export const openVirtualMachineAttributes = (uuid: string) => + async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { + const virtualMachineData = getState().virtualMachines.virtualMachines.items.find(it => it.uuid === uuid); dispatch(dialogActions.OPEN_DIALOG({ id: VIRTUAL_MACHINE_ATTRIBUTES_DIALOG, data: { virtualMachineData } })); }; @@ -45,7 +56,16 @@ const loadRequestedDate = () => dispatch(virtualMachinesActions.SET_REQUESTED_DATE(date)); }; -export const loadVirtualMachinesData = () => +export const loadVirtualMachinesAdminData = () => + async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { + dispatch(loadRequestedDate()); + const virtualMachines = await services.virtualMachineService.list(); + dispatch(virtualMachinesActions.SET_VIRTUAL_MACHINES(virtualMachines)); + const getAllLogins = await services.virtualMachineService.getAllLogins(); + dispatch(virtualMachinesActions.SET_LOGINS(getAllLogins)); + }; + +export const loadVirtualMachinesUserData = () => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { dispatch(loadRequestedDate()); const virtualMachines = await services.virtualMachineService.list(); @@ -57,8 +77,6 @@ export const loadVirtualMachinesData = () => }); dispatch(virtualMachinesActions.SET_VIRTUAL_MACHINES(virtualMachines)); dispatch(virtualMachinesActions.SET_LINKS(links)); - const getAllLogins = await services.virtualMachineService.getAllLogins(); - dispatch(virtualMachinesActions.SET_LOGINS(getAllLogins)); }; export const saveRequestedDate = () => @@ -83,10 +101,10 @@ export const openRemoveVirtualMachineDialog = (uuid: string) => export const removeVirtualMachine = (uuid: string) => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { - dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Removing ...' })); + dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Removing ...', kind: SnackbarKind.INFO })); await services.virtualMachineService.delete(uuid); dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Removed.', hideDuration: 2000, kind: SnackbarKind.SUCCESS })); - dispatch(loadVirtualMachinesData()); + dispatch(loadVirtualMachinesAdminData()); }; const virtualMachinesBindedActions = bindDataExplorerActions(VIRTUAL_MACHINES_PANEL);