flex-template-web/server/dataLoader.js
2017-03-22 15:02:29 +02:00

24 lines
664 B
JavaScript

const url = require('url');
const { matchPathname, configureStore } = require('./importer');
exports.loadData = function(requestUrl, sdk) {
const { pathname, query } = url.parse(requestUrl);
const matchedRoutes = matchPathname(pathname);
const store = configureStore(sdk);
const dataLoadingCalls = matchedRoutes.reduce(
(calls, match) => {
const { route, params } = match;
if (typeof route.loadData === 'function' && !route.auth) {
calls.push(store.dispatch(route.loadData(params, query)));
}
return calls;
},
[]
);
return Promise.all(dataLoadingCalls).then(() => {
return store.getState();
});
};