21357: applied correct filtering to public favorites tree Arvados-DCO-1.1-Signed...
[arvados.git] / services / workbench2 / src / store / side-panel-tree / side-panel-tree-actions.ts
index 3fad5f587a3c41586784987d4925ae01a39d2134..8b8b7cc7d10c195ad21e3f19f7a8dc84e9b772cd 100644 (file)
@@ -17,6 +17,7 @@ import { ResourceKind } from 'models/resource';
 import { CategoriesListReducer } from 'common/plugintypes';
 import { pluginConfig } from 'plugins';
 import { LinkClass } from 'models/link';
+import { verifyAndUpdateLinkName } from 'common/link-update-name';
 
 export enum SidePanelTreeCategory {
     PROJECTS = 'Home Projects',
@@ -144,7 +145,11 @@ export const loadFavoritesTree = () => async (dispatch: Dispatch, getState: () =
         limit: SIDEPANEL_TREE_NODE_LIMIT,
     };
 
-    const { items } = await services.linkService.list(params);
+    let items = (await services.linkService.list(params)).items;
+    for(let item of items) {
+        const verifiedName = await verifyAndUpdateLinkName(item, dispatch, getState, services);
+        item.name = verifiedName;
+    }
 
     dispatch(
         treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({
@@ -174,17 +179,44 @@ export const loadPublicFavoritesTree = () => async (dispatch: Dispatch, getState
         limit: SIDEPANEL_TREE_NODE_LIMIT,
     };
 
-    const { items } = await services.linkService.list(params);
+    const items = (await services.linkService.list(params)).items;
+
+    const uuids = items.map(it => it.headUuid);
+    const groupItems: any = await services.groupsService.list({
+        filters: new FilterBuilder()
+            .addIn("uuid", uuids)
+            .addIsA("uuid", typeFilters)
+            .getFilters()
+    });
+    const collectionItems: any = await services.collectionService.list({
+        filters: new FilterBuilder()
+            .addIn("uuid", uuids)
+            .addIsA("uuid", typeFilters)
+            .getFilters()
+    });
+    const processItems: any = await services.containerRequestService.list({
+        filters: new FilterBuilder()
+            .addIn("uuid", uuids)
+            .addIsA("uuid", typeFilters)
+            .getFilters()
+    });
+
+    const filtereditems = groupItems.items.concat(collectionItems.items).concat(processItems.items);
+
+    for(const item of filtereditems) {
+        const verifiedName = await verifyAndUpdateLinkName(item, dispatch, getState, services);
+        item.name = verifiedName;
+    }
 
     dispatch(
         treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({
             id: SidePanelTreeCategory.PUBLIC_FAVORITES,
             pickerId: SIDE_PANEL_TREE,
-            nodes: items.map(item => initTreeNode({ id: item.headUuid, value: item })),
+            nodes: filtereditems.map(item => initTreeNode({ id: item.headUuid, value: item })),
         })
     );
 
-    dispatch(resourcesActions.SET_RESOURCES(items));
+    dispatch(resourcesActions.SET_RESOURCES(filtereditems));
 };
 
 export const activateSidePanelTreeItem = (id: string) =>