X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/42ec7892e74f6d9d19f2f0155830565f447a861f..7d9ce0248a1f4c2f9fe99230b274ecd1159f4c89:/src/store/store.ts diff --git a/src/store/store.ts b/src/store/store.ts index 0bc351bbe4..f236d02948 100644 --- a/src/store/store.ts +++ b/src/store/store.ts @@ -69,6 +69,9 @@ import { ownerNameReducer } from '~/store/owner-name/owner-name-reducer'; import { SubprocessMiddlewareService } from '~/store/subprocess-panel/subprocess-panel-middleware-service'; import { SUBPROCESS_PANEL_ID } from '~/store/subprocess-panel/subprocess-panel-actions'; import { ALL_PROCESSES_PANEL_ID } from './all-processes-panel/all-processes-panel-action'; +import { Config } from '~/common/config'; +import { pluginConfig } from '~/plugins'; +import { MiddlewareListReducer } from '~/common/plugintypes'; const composeEnhancers = (process.env.NODE_ENV === 'development' && @@ -80,7 +83,7 @@ export type RootState = ReturnType>; export type RootStore = Store & { dispatch: Dispatch }; -export function configureStore(history: History, services: ServiceRepository): RootStore { +export function configureStore(history: History, services: ServiceRepository, config: Config): RootStore { const rootReducer = createRootReducer(services); const projectPanelMiddleware = dataExplorerMiddleware( @@ -135,14 +138,13 @@ export function configureStore(history: History, services: ServiceRepository): R const state = store.getState(); if (state.auth && state.auth.apiToken) { - const { apiToken } = state.auth; - handleRedirects(apiToken); + handleRedirects(state.auth.apiToken, config); } return next(action); }; - const middlewares: Middleware[] = [ + let middlewares: Middleware[] = [ routerMiddleware(history), thunkMiddleware.withExtraArgument(services), authMiddleware(services), @@ -163,6 +165,12 @@ export function configureStore(history: History, services: ServiceRepository): R collectionsContentAddress, subprocessMiddleware, ]; + + const reduceMiddlewaresFn: (a: Middleware[], + b: MiddlewareListReducer) => Middleware[] = (a, b) => b(a, services); + + middlewares = pluginConfig.middlewares.reduce(reduceMiddlewaresFn, middlewares); + const enhancer = composeEnhancers(applyMiddleware(redirectToMiddleware, ...middlewares)); return createStore(rootReducer, enhancer); }