46 lines
947 B
JavaScript
46 lines
947 B
JavaScript
import { actionToPath, getOptions } from 'redux-first-router';
|
|
|
|
import { addLang } from '../utils/lang.js';
|
|
|
|
|
|
export default (to, routesMap, lang = 'en') => {
|
|
if (to && typeof to === 'string') {
|
|
return addLang(to, lang);
|
|
}
|
|
|
|
if (typeof to === 'object') {
|
|
const { payload = {}, ...action } = to;
|
|
|
|
try {
|
|
const { querySerializer } = getOptions();
|
|
return actionToPath(
|
|
{
|
|
...action,
|
|
payload: {
|
|
...payload,
|
|
lang: payload.lang || lang
|
|
}
|
|
},
|
|
routesMap,
|
|
querySerializer
|
|
);
|
|
} catch (e) {
|
|
console.error(e);
|
|
console.warn(
|
|
'[Link] could not create path from action:',
|
|
action,
|
|
'For reference, here are your current routes:',
|
|
routesMap
|
|
);
|
|
|
|
return '#';
|
|
}
|
|
}
|
|
|
|
console.warn(
|
|
'[Link] `to` prop must be a string or action object. You provided: ',
|
|
to
|
|
);
|
|
return '#';
|
|
};
|