X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/59ee572e791985a36bdd2015c9b494145109e8ed..fdc9e2f707b15d520ec0a39e7cfe52ef23a958f4:/src/store/processes/processes-actions.ts diff --git a/src/store/processes/processes-actions.ts b/src/store/processes/processes-actions.ts index f026d37ed3..f9f5ef728b 100644 --- a/src/store/processes/processes-actions.ts +++ b/src/store/processes/processes-actions.ts @@ -7,22 +7,29 @@ import { RootState } from '~/store/store'; import { ServiceRepository } from '~/services/services'; import { updateResources } from '~/store/resources/resources-actions'; import { FilterBuilder } from '~/services/api/filter-builder'; -import { ContainerRequestResource } from '../../models/container-request'; +import { ContainerRequestResource } from '~/models/container-request'; +import { Process } from './process'; +import { dialogActions } from '~/store/dialog/dialog-actions'; +import { snackbarActions } from '~/store/snackbar/snackbar-actions'; +import { projectPanelActions } from '~/store/project-panel/project-panel-action'; -export const loadProcess = (uuid: string) => - async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { - const containerRequest = await services.containerRequestService.get(uuid); +export const loadProcess = (containerRequestUuid: string) => + async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository): Promise => { + const containerRequest = await services.containerRequestService.get(containerRequestUuid); dispatch(updateResources([containerRequest])); if (containerRequest.containerUuid) { const container = await services.containerService.get(containerRequest.containerUuid); dispatch(updateResources([container])); + await dispatch(loadSubprocesses(containerRequest.containerUuid)); + return { containerRequest, container }; } + return { containerRequest }; }; -export const loadSubprocesses = (uuid: string) => +export const loadSubprocesses = (containerUuid: string) => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { const containerRequests = await dispatch(loadContainerRequests( - new FilterBuilder().addEqual('requestingContainerUuid', uuid).getFilters() + new FilterBuilder().addEqual('requestingContainerUuid', containerUuid).getFilters() )) as ContainerRequestResource[]; const containerUuids: string[] = containerRequests.reduce((uuids, { containerUuid }) => @@ -50,3 +57,28 @@ export const loadContainers = (filters: string) => dispatch(updateResources(items)); return items; }; + +export const openRemoveProcessDialog = (uuid: string) => + (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { + dispatch(dialogActions.OPEN_DIALOG({ + id: REMOVE_PROCESS_DIALOG, + data: { + title: 'Remove process permanently', + text: 'Are you sure you want to remove this process?', + confirmButtonLabel: 'Remove', + uuid + } + })); + }; + +export const REMOVE_PROCESS_DIALOG = 'removeProcessDialog'; + +export const removeProcessPermanently = (uuid: string) => + async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) =>{ + dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Removing ...' })); + await services.containerRequestService.delete(uuid); + dispatch(projectPanelActions.REQUEST_ITEMS()); + dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Removed.', hideDuration: 2000 })); + }; + +