1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import { Dispatch } from "redux";
6 import { RootState } from '~/store/store';
7 import { ServiceRepository } from '~/services/services';
8 import { updateResources } from '~/store/resources/resources-actions';
9 import { FilterBuilder } from '~/common/api/filter-builder';
10 import { ContainerRequestResource } from '../../models/container-request';
12 export const loadProcess = (containerRequestUuid: string) =>
13 async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
14 const containerRequest = await services.containerRequestService.get(containerRequestUuid);
15 dispatch<any>(updateResources([containerRequest]));
16 if (containerRequest.containerUuid) {
17 const container = await services.containerService.get(containerRequest.containerUuid);
18 dispatch<any>(updateResources([container]));
19 await dispatch<any>(loadSubprocesses(containerRequest.containerUuid));
23 export const loadSubprocesses = (containerUuid: string) =>
24 async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
25 const containerRequests = await dispatch<any>(loadContainerRequests(
26 new FilterBuilder().addEqual('requestingContainerUuid', containerUuid).getFilters()
27 )) as ContainerRequestResource[];
29 const containerUuids: string[] = containerRequests.reduce((uuids, { containerUuid }) =>
31 ? [...uuids, containerUuid]
34 if (containerUuids.length > 0) {
35 await dispatch<any>(loadContainers(
36 new FilterBuilder().addIn('uuid', containerUuids).getFilters()
41 export const loadContainerRequests = (filters: string) =>
42 async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
43 const { items } = await services.containerRequestService.list({ filters });
44 dispatch<any>(updateResources(items));
48 export const loadContainers = (filters: string) =>
49 async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
50 const { items } = await services.containerService.list({ filters });
51 dispatch<any>(updateResources(items));