From: Peter Amstutz Date: Fri, 24 Mar 2023 15:10:23 +0000 (-0400) Subject: 19482: Fix breadcrumbs to display properly when directly navigating X-Git-Tag: 2.6.0~6^2~2 X-Git-Url: https://git.arvados.org/arvados-workbench2.git/commitdiff_plain/bf2e7c937e911629122eec14c29e8f6fa9b84aa6 19482: Fix breadcrumbs to display properly when directly navigating Arvados-DCO-1.1-Signed-off-by: Peter Amstutz --- diff --git a/src/store/workbench/workbench-actions.ts b/src/store/workbench/workbench-actions.ts index f4b65e63..52433779 100644 --- a/src/store/workbench/workbench-actions.ts +++ b/src/store/workbench/workbench-actions.ts @@ -87,6 +87,7 @@ import { loadCollectionPanel, } from 'store/collection-panel/collection-panel-action'; import { CollectionResource } from 'models/collection'; +import { WorkflowResource } from 'models/workflow'; import { loadSearchResultsPanel, searchResultsPanelActions, @@ -452,41 +453,34 @@ export const loadCollection = (uuid: string) => userUuid, services, }); + let collection: CollectionResource | undefined; + let breadcrumbfunc: ((uuid: string) => (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => Promise) | undefined; + let sidepanel: string | undefined; match({ - OWNED: (collection) => { - dispatch( - collectionPanelActions.SET_COLLECTION( - collection as CollectionResource - ) - ); - dispatch(updateResources([collection])); - dispatch(activateSidePanelTreeItem(collection.ownerUuid)); - dispatch(setSidePanelBreadcrumbs(collection.ownerUuid)); - dispatch(loadCollectionPanel(collection.uuid)); + OWNED: (thecollection) => { + collection = thecollection as CollectionResource; + sidepanel = collection.ownerUuid; + breadcrumbfunc = setSidePanelBreadcrumbs; }, - SHARED: (collection) => { - dispatch( - collectionPanelActions.SET_COLLECTION( - collection as CollectionResource - ) - ); - dispatch(updateResources([collection])); - dispatch(setSharedWithMeBreadcrumbs(collection.ownerUuid)); - dispatch(activateSidePanelTreeItem(collection.ownerUuid)); - dispatch(loadCollectionPanel(collection.uuid)); + SHARED: (thecollection) => { + collection = thecollection as CollectionResource; + sidepanel = collection.ownerUuid; + breadcrumbfunc = setSharedWithMeBreadcrumbs; }, - TRASHED: (collection) => { - dispatch( - collectionPanelActions.SET_COLLECTION( - collection as CollectionResource - ) - ); - dispatch(updateResources([collection])); - dispatch(setTrashBreadcrumbs('')); - dispatch(activateSidePanelTreeItem(SidePanelTreeCategory.TRASH)); - dispatch(loadCollectionPanel(collection.uuid)); + TRASHED: (thecollection) => { + collection = thecollection as CollectionResource; + sidepanel = SidePanelTreeCategory.TRASH; + breadcrumbfunc = () => setTrashBreadcrumbs(''); }, }); + if (collection && breadcrumbfunc && sidepanel) { + dispatch(updateResources([collection])); + await dispatch(finishLoadingProject(collection.ownerUuid)); + dispatch(collectionPanelActions.SET_COLLECTION(collection)); + await dispatch(activateSidePanelTreeItem(sidepanel)); + dispatch(breadcrumbfunc(collection.ownerUuid)); + dispatch(loadCollectionPanel(collection.uuid)); + } } } ); @@ -580,6 +574,7 @@ export const loadProcess = (uuid: string) => dispatch(loadProcessPanel(uuid)); const process = await dispatch(processesActions.loadProcess(uuid)); if (process) { + await dispatch(finishLoadingProject(process.containerRequest.ownerUuid)); await dispatch( activateSidePanelTreeItem(process.containerRequest.ownerUuid) ); @@ -600,19 +595,25 @@ export const loadRegisteredWorkflow = (uuid: string) => userUuid, services, }); + let workflow: WorkflowResource | undefined; + let breadcrumbfunc: ((uuid: string) => (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => Promise) | undefined; match({ - OWNED: (workflow) => { - dispatch(updateResources([workflow])); - dispatch(activateSidePanelTreeItem(workflow.ownerUuid)); - dispatch(setSidePanelBreadcrumbs(workflow.ownerUuid)); + OWNED: async (theworkflow) => { + workflow = theworkflow as WorkflowResource; + breadcrumbfunc = setSidePanelBreadcrumbs; }, - SHARED: (workflow) => { - dispatch(updateResources([workflow])); - dispatch(activateSidePanelTreeItem(workflow.ownerUuid)); - dispatch(setSharedWithMeBreadcrumbs(workflow.ownerUuid)); + SHARED: async (theworkflow) => { + workflow = theworkflow as WorkflowResource; + breadcrumbfunc = setSharedWithMeBreadcrumbs; }, TRASHED: () => { } }); + if (workflow && breadcrumbfunc) { + dispatch(updateResources([workflow])); + await dispatch(finishLoadingProject(workflow.ownerUuid)); + await dispatch(activateSidePanelTreeItem(workflow.ownerUuid)); + dispatch(breadcrumbfunc(workflow.ownerUuid)); + } } });