17585: First initial impl
[arvados-workbench2.git] / src / store / collection-panel / collection-panel-files / collection-panel-files-actions.ts
index 3217d01439e084bd96aca8230cd96e74fc11bcac..71e1f6e8eed4b02343552843a746c29d10494a1b 100644 (file)
@@ -4,6 +4,7 @@
 
 import { unionize, ofType, UnionOf } from "common/unionize";
 import { Dispatch } from "redux";
+import servicesProvider from 'common/service-provider';
 import { CollectionFilesTree, CollectionFileType, createCollectionFilesTree } from "models/collection-file";
 import { ServiceRepository } from "services/services";
 import { RootState } from "../../store";
@@ -31,6 +32,13 @@ export type CollectionPanelFilesAction = UnionOf<typeof collectionPanelFilesActi
 export const COLLECTION_PANEL_LOAD_FILES = 'collectionPanelLoadFiles';
 export const COLLECTION_PANEL_LOAD_FILES_THRESHOLD = 40000;
 
+export const setCollectionFiles = (files, joinParents = true) => (dispatch: any) => {
+    const tree = createCollectionFilesTree(files, joinParents);
+    const sorted = sortFilesTree(tree);
+    const mapped = mapTreeValues(servicesProvider.getServices().collectionService.extendFileURL)(sorted);
+    dispatch(collectionPanelFilesAction.SET_COLLECTION_FILES(mapped));
+};
+
 export const loadCollectionFiles = (uuid: string) =>
     (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
         dispatch(progressIndicatorActions.START_WORKING(COLLECTION_PANEL_LOAD_FILES));