2018-04-18 21:01:26 +02:00
|
|
|
"use strict";
|
|
|
|
|
|
|
|
var _react = _interopRequireDefault(require("react"));
|
|
|
|
|
|
|
|
var _server = require("react-dom/server");
|
|
|
|
|
|
|
|
var _redux = require("redux");
|
|
|
|
|
|
|
|
var _reactRedux = require("react-redux");
|
|
|
|
|
|
|
|
var _reactRouterDom = require("react-router-dom");
|
|
|
|
|
2018-04-18 21:11:25 +02:00
|
|
|
var _renderFullPage = _interopRequireDefault(require("../renderFullPage"));
|
2018-04-18 21:01:26 +02:00
|
|
|
|
|
|
|
var _reduxSaga = _interopRequireDefault(require("redux-saga"));
|
|
|
|
|
|
|
|
var _effects = require("redux-saga/effects");
|
|
|
|
|
2018-05-23 20:16:47 +02:00
|
|
|
var _reducers = _interopRequireDefault(require("@reducers"));
|
2018-05-23 10:18:50 +02:00
|
|
|
|
2018-05-23 20:16:47 +02:00
|
|
|
var _GAListener = _interopRequireDefault(require("@components/GAListener"));
|
2018-05-23 10:18:50 +02:00
|
|
|
|
2018-05-23 20:16:47 +02:00
|
|
|
var _app = _interopRequireDefault(require("@app"));
|
2018-05-23 10:18:50 +02:00
|
|
|
|
2018-05-23 20:16:47 +02:00
|
|
|
var _sagas = _interopRequireDefault(require("@sagas"));
|
2018-05-23 10:18:50 +02:00
|
|
|
|
2018-05-23 20:16:47 +02:00
|
|
|
var _actions = _interopRequireDefault(require("@actions"));
|
2018-04-18 21:01:26 +02:00
|
|
|
|
|
|
|
var _reactHelmet = _interopRequireDefault(require("react-helmet"));
|
|
|
|
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
|
2018-06-06 04:34:24 +02:00
|
|
|
var siteConfig = require('@config/siteConfig');
|
2018-05-02 20:52:19 +02:00
|
|
|
|
2018-04-18 21:01:26 +02:00
|
|
|
var returnSagaWithParams = function returnSagaWithParams(saga, params) {
|
|
|
|
return (
|
|
|
|
/*#__PURE__*/
|
|
|
|
regeneratorRuntime.mark(function _callee() {
|
|
|
|
return regeneratorRuntime.wrap(function _callee$(_context) {
|
|
|
|
while (1) {
|
|
|
|
switch (_context.prev = _context.next) {
|
|
|
|
case 0:
|
|
|
|
_context.next = 2;
|
|
|
|
return (0, _effects.call)(saga, params);
|
|
|
|
|
|
|
|
case 2:
|
|
|
|
case "end":
|
|
|
|
return _context.stop();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}, _callee, this);
|
|
|
|
})
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = function (req, res) {
|
|
|
|
var context = {}; // configure the reducers by passing initial state configs
|
|
|
|
|
2018-05-23 10:18:50 +02:00
|
|
|
var MyReducers = (0, _reducers.default)(siteConfig);
|
|
|
|
var MyApp = _app.default;
|
|
|
|
var MyGAListener = (0, _GAListener.default)(siteConfig); // create and apply middleware
|
2018-04-18 21:01:26 +02:00
|
|
|
|
|
|
|
var sagaMiddleware = (0, _reduxSaga.default)();
|
|
|
|
var middleware = (0, _redux.applyMiddleware)(sagaMiddleware); // create a new Redux store instance
|
|
|
|
|
|
|
|
var store = (0, _redux.createStore)(MyReducers, middleware); // create saga
|
|
|
|
|
2018-05-23 10:18:50 +02:00
|
|
|
var action = _actions.default.onHandleShowPageUri(req.params);
|
2018-04-18 21:01:26 +02:00
|
|
|
|
2018-05-23 10:18:50 +02:00
|
|
|
var saga = returnSagaWithParams(_sagas.default.handleShowPageUri, action); // run the saga middleware
|
2018-04-18 21:01:26 +02:00
|
|
|
|
|
|
|
sagaMiddleware.run(saga).done.then(function () {
|
|
|
|
// render component to a string
|
|
|
|
var html = (0, _server.renderToString)(_react.default.createElement(_reactRedux.Provider, {
|
|
|
|
store: store
|
|
|
|
}, _react.default.createElement(_reactRouterDom.StaticRouter, {
|
|
|
|
location: req.url,
|
|
|
|
context: context
|
|
|
|
}, _react.default.createElement(MyGAListener, null, _react.default.createElement(MyApp, null))))); // get head tags from helmet
|
|
|
|
|
|
|
|
var helmet = _reactHelmet.default.renderStatic(); // check for a redirect
|
|
|
|
|
|
|
|
|
|
|
|
if (context.url) {
|
|
|
|
return res.redirect(301, context.url);
|
|
|
|
} // get the initial state from our Redux store
|
|
|
|
|
|
|
|
|
|
|
|
var preloadedState = store.getState(); // send the rendered page back to the client
|
|
|
|
|
|
|
|
res.send((0, _renderFullPage.default)(helmet, html, preloadedState));
|
|
|
|
});
|
|
|
|
};
|