19482: Breadcrumbs almost work right
[arvados-workbench2.git] / src / store / workbench / workbench-actions.ts
index 1cf71706420fc6c7be736b9d8e4282cdf94ace47..f4b65e639d0f75808a6e50e48716c57aea0d3ee2 100644 (file)
@@ -588,6 +588,34 @@ export const loadProcess = (uuid: string) =>
         }
     });
 
+export const loadRegisteredWorkflow = (uuid: string) =>
+    handleFirstTimeLoad(async (dispatch: Dispatch,
+        getState: () => RootState,
+        services: ServiceRepository) => {
+
+        const userUuid = getUserUuid(getState());
+        if (userUuid) {
+            const match = await loadGroupContentsResource({
+                uuid,
+                userUuid,
+                services,
+            });
+            match({
+                OWNED: (workflow) => {
+                    dispatch(updateResources([workflow]));
+                    dispatch<any>(activateSidePanelTreeItem(workflow.ownerUuid));
+                    dispatch<any>(setSidePanelBreadcrumbs(workflow.ownerUuid));
+                },
+                SHARED: (workflow) => {
+                    dispatch<any>(updateResources([workflow]));
+                    dispatch<any>(activateSidePanelTreeItem(workflow.ownerUuid));
+                    dispatch<any>(setSharedWithMeBreadcrumbs(workflow.ownerUuid));
+                },
+                TRASHED: () => { }
+            });
+        }
+    });
+
 export const updateProcess =
     (data: processUpdateActions.ProcessUpdateFormDialogData) =>
         async (dispatch: Dispatch) => {
@@ -876,8 +904,12 @@ const loadGroupContentsResource = async (params: {
             resource = await params.services.collectionService.get(params.uuid);
         } else if (kind === ResourceKind.PROJECT) {
             resource = await params.services.projectService.get(params.uuid);
-        } else {
+        } else if (kind === ResourceKind.WORKFLOW) {
+            resource = await params.services.workflowService.get(params.uuid);
+        } else if (kind === ResourceKind.CONTAINER_REQUEST) {
             resource = await params.services.containerRequestService.get(params.uuid);
+        } else {
+            throw new Error("loadGroupContentsResource unsupported kind " + kind)
         }
         handler = groupContentsHandlers.SHARED(resource);
     }