feat(Flash): Add render methods that do not dump flash autom
query from the front end app for these messages
This commit is contained in:
@ -8,7 +8,6 @@ import sendPageAnalytics from './utils/send-page-analytics';
|
||||
|
||||
import { App, createApp, provideStore } from '../common/app';
|
||||
import { getLangFromPath } from '../common/app/utils/lang';
|
||||
import flashReducer, { messagesFoundOnBoot } from '../common/app/Flash/redux';
|
||||
|
||||
// client specific epics
|
||||
import epics from './epics';
|
||||
@ -29,7 +28,6 @@ const {
|
||||
document,
|
||||
ga,
|
||||
__fcc__: {
|
||||
flash = {},
|
||||
data: ssrState = {},
|
||||
csrf: {
|
||||
token: csrfToken
|
||||
@ -51,10 +49,6 @@ const defaultState = isColdStored() ?
|
||||
const primaryLang = getLangFromPath(location.pathname);
|
||||
|
||||
defaultState.app.csrfToken = csrfToken;
|
||||
defaultState.flash = flashReducer(
|
||||
defaultState.flash,
|
||||
messagesFoundOnBoot(flash)
|
||||
);
|
||||
|
||||
const serviceOptions = { xhrPath: '/services', context: { _csrf: csrfToken } };
|
||||
|
||||
|
@ -9,14 +9,15 @@ module.exports = function(app) {
|
||||
var router = app.loopback.Router();
|
||||
router.get('/', addDefaultImage, index);
|
||||
app.use(
|
||||
'/:lang',
|
||||
(req, res, next) => {
|
||||
// add url language to request for all routers
|
||||
req._urlLang = req.params.lang;
|
||||
next();
|
||||
},
|
||||
router
|
||||
);
|
||||
'/:lang',
|
||||
(req, res, next) => {
|
||||
// add url language to request for all routers
|
||||
req._urlLang = req.params.lang;
|
||||
next();
|
||||
},
|
||||
router
|
||||
);
|
||||
|
||||
app.use(router);
|
||||
|
||||
function addDefaultImage(req, res, next) {
|
||||
|
5
server/boot/react.js
vendored
5
server/boot/react.js
vendored
@ -95,8 +95,9 @@ export default function reactSubRouter(app) {
|
||||
const title = titleSelector(state);
|
||||
epic.dispose();
|
||||
res.expose(state, 'data', { isJSON: true });
|
||||
res.expose(req.flash(), 'flash', { isJSON: true });
|
||||
res.render('layout-react', { markup, title });
|
||||
// note(berks): we render without express-flash dumping our messages
|
||||
// the app will query for these on load
|
||||
res.renderWithoutFlash('layout-react', { markup, title });
|
||||
})
|
||||
.subscribe(() => log('html rendered and sent'), next);
|
||||
}
|
||||
|
@ -45,6 +45,7 @@
|
||||
"./middlewares/validator": {}
|
||||
},
|
||||
"routes:before": {
|
||||
"./middlewares/express-extensions": {},
|
||||
"express-flash": {},
|
||||
"helmet#xssFilter": {},
|
||||
"helmet#noSniff": {},
|
||||
@ -52,7 +53,6 @@
|
||||
"./middlewares/csurf": {},
|
||||
"./middlewares/constant-headers": {},
|
||||
"./middlewares/csp": {},
|
||||
"./middlewares/express-rx": {},
|
||||
"./middlewares/jade-helpers": {},
|
||||
"./middlewares/migrate-completed-challenges": {},
|
||||
"./middlewares/add-lang": {},
|
||||
|
14
server/middlewares/express-extensions.js
Normal file
14
server/middlewares/express-extensions.js
Normal file
@ -0,0 +1,14 @@
|
||||
import { Observable } from 'rx';
|
||||
|
||||
// add rx methods to express
|
||||
export default function() {
|
||||
return function expressExtensions(req, res, next) {
|
||||
// express flash will overwrite render with one that will
|
||||
// dump flash messages to locals on every call to render
|
||||
// Use this when that behavior is not wanted
|
||||
res.renderWithoutFlash = res.render;
|
||||
// render to observable stream using build in render
|
||||
res.render$ = Observable.fromNodeCallback(res.render, res);
|
||||
next();
|
||||
};
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
import { Observable } from 'rx';
|
||||
|
||||
// add rx methods to express
|
||||
export default function expressRx() {
|
||||
return function expressRx(req, res, next) {
|
||||
// render to observable stream
|
||||
res.render$ = Observable.fromNodeCallback(res.render, res);
|
||||
next();
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user