X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/c324b64f3b26e79b4640b6f0cf55671f1a261bca..c08ac23e7d1e7043ca250faf8710be1ec69cfae9:/src/store/project-panel/project-panel-middleware-service.ts diff --git a/src/store/project-panel/project-panel-middleware-service.ts b/src/store/project-panel/project-panel-middleware-service.ts index 09e76ae2..0da669a2 100644 --- a/src/store/project-panel/project-panel-middleware-service.ts +++ b/src/store/project-panel/project-panel-middleware-service.ts @@ -2,7 +2,12 @@ // // SPDX-License-Identifier: AGPL-3.0 -import { DataExplorerMiddlewareService, getDataExplorerColumnFilters, dataExplorerToListParams, listResultsToDataExplorerItemsMeta } from '../data-explorer/data-explorer-middleware-service'; +import { + DataExplorerMiddlewareService, + dataExplorerToListParams, + getDataExplorerColumnFilters, + listResultsToDataExplorerItemsMeta +} from '../data-explorer/data-explorer-middleware-service'; import { ProjectPanelColumnNames, ProjectPanelFilter } from "~/views/project-panel/project-panel"; import { RootState } from "../store"; import { DataColumns } from "~/components/data-table/data-table"; @@ -10,9 +15,9 @@ import { ServiceRepository } from "~/services/services"; import { SortDirection } from "~/components/data-table/data-column"; import { OrderBuilder, OrderDirection } from "~/services/api/order-builder"; import { FilterBuilder } from "~/services/api/filter-builder"; -import { GroupContentsResourcePrefix, GroupContentsResource } from "~/services/groups-service/groups-service"; +import { GroupContentsResource, GroupContentsResourcePrefix } from "~/services/groups-service/groups-service"; import { updateFavorites } from "../favorites/favorites-actions"; -import { projectPanelActions, PROJECT_PANEL_CURRENT_UUID } from './project-panel-action'; +import { PROJECT_PANEL_CURRENT_UUID, projectPanelActions } from './project-panel-action'; import { Dispatch, MiddlewareAPI } from "redux"; import { ProjectResource } from "~/models/project"; import { updateResources } from "~/store/resources/resources-actions"; @@ -23,6 +28,9 @@ import { DataExplorer, getDataExplorer } from '../data-explorer/data-explorer-re import { ListResults } from '~/services/common-service/common-resource-service'; import { loadContainers } from '../processes/processes-actions'; import { ResourceKind } from '~/models/resource'; +import { getResource } from "~/store/resources/resources"; +import { CollectionResource } from "~/models/collection"; +import { resourcesDataActions } from "~/store/resources-data/resources-data-actions"; export class ProjectPanelMiddlewareService extends DataExplorerMiddlewareService { constructor(private services: ServiceRepository, id: string) { @@ -42,8 +50,10 @@ export class ProjectPanelMiddlewareService extends DataExplorerMiddlewareService api.dispatch(progressIndicatorActions.START_WORKING(this.getId())); const response = await this.services.groupsService.contents(projectUuid, getParams(dataExplorer)); api.dispatch(progressIndicatorActions.PERSIST_STOP_WORKING(this.getId())); - api.dispatch(updateFavorites(response.items.map(item => item.uuid))); + const resourceUuids = response.items.map(item => item.uuid); + api.dispatch(updateFavorites(resourceUuids)); api.dispatch(updateResources(response.items)); + api.dispatch(updateResourceData(resourceUuids)); await api.dispatch(loadMissingProcessesInformation(response.items)); api.dispatch(setItems(response)); } catch (e) { @@ -76,6 +86,19 @@ export const loadMissingProcessesInformation = (resources: GroupContentsResource } }; +export const updateResourceData = (resourceUuids: string[]) => + async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { + resourceUuids.map(async uuid => { + const resource = getResource(uuid)(getState().resources); + if (resource && resource.kind === ResourceKind.COLLECTION) { + const files = await services.collectionService.files(uuid); + if (files) { + dispatch(resourcesDataActions.SET_FILES({ uuid, files })); + } + } + }); + }; + export const setItems = (listResults: ListResults) => projectPanelActions.SET_ITEMS({ ...listResultsToDataExplorerItemsMeta(listResults),