Merge branch '14941-public-favorites-initialize-data-explorer-and-routing'
[arvados-workbench2.git] / src / store / side-panel / side-panel-action.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { Dispatch } from 'redux';
6 import { isSidePanelTreeCategory, SidePanelTreeCategory } from '~/store/side-panel-tree/side-panel-tree-actions';
7 import { navigateToFavorites, navigateTo, navigateToTrash, navigateToSharedWithMe, navigateToWorkflows, navigateToPublicFavorites } from '~/store/navigation/navigation-action';
8 import {snackbarActions, SnackbarKind} from '~/store/snackbar/snackbar-actions';
9
10 export const navigateFromSidePanel = (id: string) =>
11     (dispatch: Dispatch) => {
12         if (isSidePanelTreeCategory(id)) {
13             dispatch<any>(getSidePanelTreeCategoryAction(id));
14         } else {
15             dispatch<any>(navigateTo(id));
16         }
17     };
18
19 const getSidePanelTreeCategoryAction = (id: string) => {
20     switch (id) {
21         case SidePanelTreeCategory.FAVORITES:
22             return navigateToFavorites;
23         case SidePanelTreeCategory.PUBLIC_FAVORITES:
24             return navigateToPublicFavorites;
25         case SidePanelTreeCategory.TRASH:
26             return navigateToTrash;
27         case SidePanelTreeCategory.SHARED_WITH_ME:
28             return navigateToSharedWithMe;
29         case SidePanelTreeCategory.WORKFLOWS:
30             return navigateToWorkflows;
31         default:
32             return sidePanelTreeCategoryNotAvailable(id);
33     }
34 };
35
36 const sidePanelTreeCategoryNotAvailable = (id: string) =>
37     snackbarActions.OPEN_SNACKBAR({
38         message: `${id} not available`,
39         hideDuration: 3000,
40         kind: SnackbarKind.ERROR
41     });