69 lines
2.2 KiB
JavaScript
Raw Normal View History

2017-01-17 13:40:59 +01:00
// These are the pages you can go to.
// They are all wrapped in the App component, which should contain the navbar etc
// See http://blog.mxstbr.com/2016/01/react-apps-with-pages for more information
// about the code splitting business
import { getAsyncInjectors } from './utils/asyncInjectors';
import appSagas from './containers/App/sagas';
2017-01-17 13:40:59 +01:00
2017-05-11 10:54:44 +02:00
const loadModule = cb => componentModule => {
2017-01-17 13:40:59 +01:00
cb(null, componentModule.default);
};
export default function createRoutes(store) {
// Create reusable async injectors using getAsyncInjectors factory
const { injectReducer, injectSagas } = getAsyncInjectors(store); // eslint-disable-line no-unused-vars
2017-03-18 17:34:00 +01:00
// Inject app sagas
injectSagas(appSagas);
2017-01-17 13:40:59 +01:00
return [
{
path: '',
name: 'home',
getComponent(nextState, cb) {
2017-05-11 15:52:22 +02:00
const component = require('./containers/Home'); // eslint-disable-line global-require
2017-01-17 13:40:59 +01:00
const renderRoute = loadModule(cb);
2017-05-10 11:41:53 +02:00
process.nextTick(() => {
renderRoute(component);
});
2017-01-17 13:40:59 +01:00
},
2017-05-11 10:54:44 +02:00
},
{
path: '/:slug',
name: 'list',
getComponent(nextState, cb) {
const reducer = require('./containers/List/reducer'); // eslint-disable-line global-require
const sagas = require('./containers/List/sagas'); // eslint-disable-line global-require
const component = require('./containers/List'); // eslint-disable-line global-require
const renderRoute = loadModule(cb);
2017-05-10 11:41:53 +02:00
process.nextTick(() => {
injectReducer('list', reducer.default);
injectSagas(sagas.default);
renderRoute(component);
});
},
2017-05-11 10:54:44 +02:00
},
{
path: '/:slug/:id',
name: 'list',
getComponent(nextState, cb) {
const reducer = require('./containers/Edit/reducer'); // eslint-disable-line global-require
const sagas = require('./containers/Edit/sagas'); // eslint-disable-line global-require
const component = require('./containers/Edit'); // eslint-disable-line global-require
const renderRoute = loadModule(cb);
2017-05-10 11:41:53 +02:00
process.nextTick(() => {
injectReducer('edit', reducer.default);
injectSagas(sagas.default);
renderRoute(component);
});
},
2017-01-17 13:40:59 +01:00
},
];
}