@snipsonian/redux-first-router
Version:
Redux-first-router snippets
25 lines (24 loc) • 1.36 kB
JavaScript
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,
};
}