X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/fc898afbfa340c57062887083c96bc197fc283d0..ecd0b3c069eed7d411e3cec7d707b43ab6675081:/src/index.tsx diff --git a/src/index.tsx b/src/index.tsx index eec60dc1..0a51ed3c 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -14,14 +14,14 @@ import { configureStore, RootStore } from '~/store/store'; import { ConnectedRouter } from "react-router-redux"; import { ApiToken } from "~/views-components/api-token/api-token"; import { AddSession } from "~/views-components/add-session/add-session"; -import { initAuth } from "~/store/auth/auth-action"; +import { initAuth, logout } from "~/store/auth/auth-action"; import { createServices } from "~/services/services"; import { MuiThemeProvider } from '@material-ui/core/styles'; import { CustomTheme } from '~/common/custom-theme'; import { fetchConfig } from '~/common/config'; import { addMenuActionSet, ContextMenuKind } from '~/views-components/context-menu/context-menu'; import { rootProjectActionSet } from "~/views-components/context-menu/action-sets/root-project-action-set"; -import { projectActionSet } from "~/views-components/context-menu/action-sets/project-action-set"; +import { projectActionSet, readOnlyProjectActionSet } from "~/views-components/context-menu/action-sets/project-action-set"; import { resourceActionSet } from '~/views-components/context-menu/action-sets/resource-action-set'; import { favoriteActionSet } from "~/views-components/context-menu/action-sets/favorite-action-set"; import { collectionFilesActionSet, readOnlyCollectionFilesActionSet } from '~/views-components/context-menu/action-sets/collection-files-action-set'; @@ -62,11 +62,13 @@ import { collectionAdminActionSet } from '~/views-components/context-menu/action import { processResourceAdminActionSet } from '~/views-components/context-menu/action-sets/process-resource-admin-action-set'; import { projectAdminActionSet } from '~/views-components/context-menu/action-sets/project-admin-action-set'; import { snackbarActions, SnackbarKind } from "~/store/snackbar/snackbar-actions"; +import { openNotFoundDialog } from './store/not-found-panel/not-found-panel-action'; console.log(`Starting arvados [${getBuildInfo()}]`); addMenuActionSet(ContextMenuKind.ROOT_PROJECT, rootProjectActionSet); addMenuActionSet(ContextMenuKind.PROJECT, projectActionSet); +addMenuActionSet(ContextMenuKind.READONLY_PROJECT, readOnlyProjectActionSet); addMenuActionSet(ContextMenuKind.RESOURCE, resourceActionSet); addMenuActionSet(ContextMenuKind.FAVORITE, favoriteActionSet); addMenuActionSet(ContextMenuKind.COLLECTION_FILES, collectionFilesActionSet); @@ -102,16 +104,23 @@ fetchConfig() progressFn: (id, working) => { store.dispatch(progressIndicatorActions.TOGGLE_WORKING({ id, working })); }, - errorFn: (id, error) => { - console.error("Backend error:", error); - if (false) { // WIP: Should we mix backend with UI code? - store.dispatch(snackbarActions.OPEN_SNACKBAR({ - message: `${error.errors - ? error.errors[0] - : error.message}`, - kind: SnackbarKind.ERROR, - hideDuration: 8000}) - ); + errorFn: (id, error, showSnackBar) => { + if (showSnackBar) { + console.error("Backend error:", error); + + if (error.status === 404) { + store.dispatch(openNotFoundDialog()); + } else if (error.status === 401 && error.errors[0].indexOf("Not logged in") > -1) { + store.dispatch(logout()); + } else { + store.dispatch(snackbarActions.OPEN_SNACKBAR({ + message: `${error.errors + ? error.errors[0] + : error.message}`, + kind: SnackbarKind.ERROR, + hideDuration: 8000}) + ); + } } } });