1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
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';
10 export const navigateFromSidePanel = (id: string) =>
11 (dispatch: Dispatch) => {
12 if (isSidePanelTreeCategory(id)) {
13 dispatch<any>(getSidePanelTreeCategoryAction(id));
15 dispatch<any>(navigateTo(id));
19 const getSidePanelTreeCategoryAction = (id: string) => {
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;
32 return sidePanelTreeCategoryNotAvailable(id);
36 const sidePanelTreeCategoryNotAvailable = (id: string) =>
37 snackbarActions.OPEN_SNACKBAR({
38 message: `${id} not available`,
40 kind: SnackbarKind.ERROR