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'; |