Merge branch '18284-vm-listing' into main. Closes #18284
[arvados-workbench2.git] / src / store / workbench / workbench-actions.ts
index 527d9d74bfe5ec60631774ca24c7aec953ae8527..98508f752ead17acf5fe461582a9f128c9af4462 100644 (file)
@@ -100,6 +100,7 @@ import { loadAllProcessesPanel, allProcessesPanelActions } from '../all-processe
 import { allProcessesPanelColumns } from 'views/all-processes-panel/all-processes-panel';
 import { collectionPanelFilesAction } from '../collection-panel/collection-panel-files/collection-panel-files-actions';
 import { createTree } from 'models/tree';
+import { AdminMenuIcon } from 'components/icon/icon';
 
 export const WORKBENCH_LOADING_SCREEN = 'workbenchLoadingScreen';
 
@@ -194,35 +195,34 @@ export const loadProject = (uuid: string) =>
         async (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
             const userUuid = getUserUuid(getState());
             dispatch(setIsProjectPanelTrashed(false));
-            if (userUuid) {
-                if (extractUuidKind(uuid) === ResourceKind.USER && userUuid !== uuid) {
-                    // Load another users home projects
-                    dispatch(finishLoadingProject(uuid));
-                } else if (userUuid !== uuid) {
-                    const match = await loadGroupContentsResource({ uuid, userUuid, services });
-                    match({
-                        OWNED: async project => {
-                            await dispatch(activateSidePanelTreeItem(uuid));
-                            dispatch<any>(setSidePanelBreadcrumbs(uuid));
-                            dispatch(finishLoadingProject(project));
-                        },
-                        SHARED: project => {
-                            dispatch<any>(setSharedWithMeBreadcrumbs(uuid));
-                            dispatch(activateSidePanelTreeItem(uuid));
-                            dispatch(finishLoadingProject(project));
-                        },
-                        TRASHED: project => {
-                            dispatch<any>(setTrashBreadcrumbs(uuid));
-                            dispatch(setIsProjectPanelTrashed(true));
-                            dispatch(activateSidePanelTreeItem(SidePanelTreeCategory.TRASH));
-                            dispatch(finishLoadingProject(project));
-                        }
-                    });
-                } else {
-                    await dispatch(activateSidePanelTreeItem(userUuid));
-                    dispatch<any>(setSidePanelBreadcrumbs(userUuid));
-                    dispatch(finishLoadingProject(userUuid));
-                }
+            if (!userUuid) {
+                return;
+            }
+            if (extractUuidKind(uuid) === ResourceKind.USER && userUuid !== uuid) {
+                // Load another users home projects
+                dispatch(finishLoadingProject(uuid));
+            } else if (userUuid !== uuid) {
+                await dispatch(finishLoadingProject(uuid));
+                const match = await loadGroupContentsResource({ uuid, userUuid, services });
+                match({
+                    OWNED: async () => {
+                        await dispatch(activateSidePanelTreeItem(uuid));
+                        dispatch<any>(setSidePanelBreadcrumbs(uuid));
+                    },
+                    SHARED: async () => {
+                        await dispatch(activateSidePanelTreeItem(uuid));
+                        dispatch<any>(setSharedWithMeBreadcrumbs(uuid));
+                    },
+                    TRASHED: async () => {
+                        await dispatch(activateSidePanelTreeItem(SidePanelTreeCategory.TRASH));
+                        dispatch<any>(setTrashBreadcrumbs(uuid));
+                        dispatch(setIsProjectPanelTrashed(true));
+                    }
+                });
+            } else {
+                await dispatch(finishLoadingProject(userUuid));
+                await dispatch(activateSidePanelTreeItem(userUuid));
+                dispatch<any>(setSidePanelBreadcrumbs(userUuid));
             }
         });
 
@@ -492,6 +492,12 @@ export const loadVirtualMachines = handleFirstTimeLoad(
         dispatch(setBreadcrumbs([{ label: 'Virtual Machines' }]));
     });
 
+export const loadVirtualMachinesAdmin = handleFirstTimeLoad(
+    async (dispatch: Dispatch<any>) => {
+        await dispatch(loadVirtualMachinesPanel());
+        dispatch(setBreadcrumbs([{ label: 'Virtual Machines Admin', icon: AdminMenuIcon }]));
+    });
+
 export const loadRepositories = handleFirstTimeLoad(
     async (dispatch: Dispatch<any>) => {
         await dispatch(loadRepositoriesPanel());