import { Dispatch, compose } from 'redux';
import { push } from "react-router-redux";
-import { RootState } from "../store";
-import { ResourceKind, Resource, extractUuidKind } from '~/models/resource';
+import { ResourceKind, extractUuidKind } from '~/models/resource';
import { getCollectionUrl } from "~/models/collection";
import { getProjectUrl } from "~/models/project";
-import { loadDetailsPanel } from '~/store/details-panel/details-panel-action';
-import { loadCollectionPanel } from '~/store/collection-panel/collection-panel-action';
-import { snackbarActions } from '../snackbar/snackbar-actions';
-import { resourceLabel } from "~/common/labels";
-import { loadFavoritePanel } from '../favorite-panel/favorite-panel-action';
-import { openProjectPanel, projectPanelActions } from '~/store/project-panel/project-panel-action';
-import { activateSidePanelTreeItem, initSidePanelTree, SidePanelTreeCategory } from '../side-panel-tree/side-panel-tree-actions';
-import { Routes } from '~/routes/routes';
-import { loadResource } from '../resources/resources-actions';
-import { favoritePanelActions } from '~/store/favorite-panel/favorite-panel-action';
-import { projectPanelColumns } from '~/views/project-panel/project-panel';
-import { favoritePanelColumns } from '~/views/favorite-panel/favorite-panel';
-import { matchRootRoute } from '~/routes/routes';
-import { setCollectionBreadcrumbs, setProjectBreadcrumbs, setSidePanelBreadcrumbs } from '../breadcrumbs/breadcrumbs-actions';
+import { SidePanelTreeCategory } from '../side-panel-tree/side-panel-tree-actions';
+import { Routes, getProcessUrl, getProcessLogUrl } from '~/routes/routes';
+import { RootState } from '~/store/store';
+import { ServiceRepository } from '~/services/services';
export const navigateTo = (uuid: string) =>
async (dispatch: Dispatch) => {
dispatch<any>(navigateToProject(uuid));
} else if (kind === ResourceKind.COLLECTION) {
dispatch<any>(navigateToCollection(uuid));
+ } else if (kind === ResourceKind.CONTAINER_REQUEST) {
+ dispatch<any>(navigateToProcess(uuid));
}
if (uuid === SidePanelTreeCategory.FAVORITES) {
dispatch<any>(navigateToFavorites);
+ } else if (uuid === SidePanelTreeCategory.SHARED_WITH_ME) {
+ dispatch(navigateToSharedWithMe);
+ } else if (uuid === SidePanelTreeCategory.WORKFLOWS) {
+ dispatch(navigateToWorkflows);
+ } else if (uuid === SidePanelTreeCategory.TRASH) {
+ dispatch(navigateToTrash);
}
};
-export const loadWorkbench = () =>
- async (dispatch: Dispatch, getState: () => RootState) => {
- const { auth, router } = getState();
- const { user } = auth;
- if (user) {
- const userResource = await dispatch<any>(loadResource(user.uuid));
- if (userResource) {
- dispatch(projectPanelActions.SET_COLUMNS({ columns: projectPanelColumns }));
- dispatch(favoritePanelActions.SET_COLUMNS({ columns: favoritePanelColumns }));
- dispatch<any>(initSidePanelTree());
- if (router.location) {
- const match = matchRootRoute(router.location.pathname);
- if (match) {
- dispatch(navigateToProject(userResource.uuid));
- }
- }
- } else {
- dispatch(userIsNotAuthenticated);
- }
- } else {
- dispatch(userIsNotAuthenticated);
- }
- };
+export const navigateToRoot = push(Routes.ROOT);
export const navigateToFavorites = push(Routes.FAVORITES);
-export const loadFavorites = () =>
- (dispatch: Dispatch) => {
- dispatch<any>(activateSidePanelTreeItem(SidePanelTreeCategory.FAVORITES));
- dispatch<any>(loadFavoritePanel());
- dispatch<any>(setSidePanelBreadcrumbs(SidePanelTreeCategory.FAVORITES));
- };
+export const navigateToTrash = push(Routes.TRASH);
+export const navigateToWorkflows = push(Routes.WORKFLOWS);
export const navigateToProject = compose(push, getProjectUrl);
-export const loadProject = (uuid: string) =>
- async (dispatch: Dispatch) => {
- await dispatch<any>(activateSidePanelTreeItem(uuid));
- dispatch<any>(setProjectBreadcrumbs(uuid));
- dispatch<any>(openProjectPanel(uuid));
- dispatch(loadDetailsPanel(uuid));
- };
-
export const navigateToCollection = compose(push, getCollectionUrl);
-export const loadCollection = (uuid: string) =>
- async (dispatch: Dispatch) => {
- const collection = await dispatch<any>(loadCollectionPanel(uuid));
- await dispatch<any>(activateSidePanelTreeItem(collection.ownerUuid));
- dispatch<any>(setCollectionBreadcrumbs(collection.uuid));
- dispatch(loadDetailsPanel(uuid));
- };
+export const navigateToProcess = compose(push, getProcessUrl);
+
+export const navigateToProcessLogs = compose(push, getProcessLogUrl);
-export const cannotNavigateToResource = ({ kind, uuid }: Resource) =>
- snackbarActions.OPEN_SNACKBAR({
- message: `${resourceLabel(kind)} identified by ${uuid} cannot be opened.`
- });
+export const navigateToRootProject = (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
+ const rootProjectUuid = services.authService.getUuid();
+ if (rootProjectUuid) {
+ dispatch(navigateToProject(rootProjectUuid));
+ }
+};
-export const resourceIsNotLoaded = (uuid: string) =>
- snackbarActions.OPEN_SNACKBAR({
- message: `Resource identified by ${uuid} is not loaded.`
- });
+export const navigateToSharedWithMe = push(Routes.SHARED_WITH_ME);
-export const userIsNotAuthenticated = snackbarActions.OPEN_SNACKBAR({
- message: 'User is not authenticated'
-});
+export const navigateToRunProcess = push(Routes.RUN_PROCESS);
-export const couldNotLoadUser = snackbarActions.OPEN_SNACKBAR({
- message: 'Could not load user'
-});
\ No newline at end of file
+export const navigateToSearchResults = push(Routes.SEARCH_RESULTS);