27 lines
770 B
JavaScript
27 lines
770 B
JavaScript
import invariant from 'invariant';
|
|
import { redirect as createRedirect } from 'redux-first-router';
|
|
|
|
import routesMap from '../routes-map.js';
|
|
import { langSelector } from '../Router/redux';
|
|
|
|
export function onBeforeChange(dispatch, getState, action) {
|
|
const route = routesMap[action.type];
|
|
const lang = langSelector(getState());
|
|
if (route && route.redirect) {
|
|
invariant(
|
|
typeof route.redirect === 'function',
|
|
`
|
|
route redirect should be a function but got %s
|
|
check the redirect method of route %s
|
|
`,
|
|
route.redirect,
|
|
route
|
|
);
|
|
return dispatch(createRedirect(route.redirect({ lang })));
|
|
}
|
|
return action;
|
|
}
|
|
|
|
// prevent function from serializing during SSR
|
|
onBeforeChange.toString = () => 'onBeforeChange';
|