UNPKG

@snipsonian/redux-first-router

Version:

Redux-first-router snippets

25 lines (24 loc) 1.36 kB
import { connectRoutes } from 'redux-first-router'; import { createBrowserHistory } from 'history'; import * as queryString from 'query-string'; import isSet from '@snipsonian/core/es/is/isSet'; import { REDUCER_STORAGE_TYPE } from '@snipsonian/redux/es/config/storageType'; import registerProvidedReducer from '@snipsonian/redux/es/reducer/registerProvidedReducer'; import { DEFAULT_REDUCER_KEY } from '../reducer'; import { setReducerKey } from '../selectors'; import { getRegisteredRoutes } from '../route/routeManager'; import toRoutesMap from './toRoutesMap'; export default function configureRouter({ reducerKey = DEFAULT_REDUCER_KEY, routes = getRegisteredRoutes(), initialDispatch, reducerStorageType = REDUCER_STORAGE_TYPE.NO_STORAGE, transformReducerStateForStorage, otherRouterOptions = {}, }) { setReducerKey(reducerKey); const routerOptions = Object.assign({ location: reducerKey, initialDispatch: isSet(initialDispatch) ? initialDispatch : true, querySerializer: queryString, createHistory: createBrowserHistory }, otherRouterOptions); const { reducer, middleware, enhancer, } = connectRoutes(toRoutesMap(routes), routerOptions); registerProvidedReducer(reducer, { key: reducerKey, reducerStorageType, transformReducerStateForStorage, }); return { middleware, enhancer, }; }