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:
Berkeley Martinez
2018-01-09 17:12:58 -08:00
parent 0af881a177
commit 387eafbf33
6 changed files with 27 additions and 27 deletions

View File

@ -8,7 +8,6 @@ import sendPageAnalytics from './utils/send-page-analytics';
import { App, createApp, provideStore } from '../common/app'; import { App, createApp, provideStore } from '../common/app';
import { getLangFromPath } from '../common/app/utils/lang'; import { getLangFromPath } from '../common/app/utils/lang';
import flashReducer, { messagesFoundOnBoot } from '../common/app/Flash/redux';
// client specific epics // client specific epics
import epics from './epics'; import epics from './epics';
@ -29,7 +28,6 @@ const {
document, document,
ga, ga,
__fcc__: { __fcc__: {
flash = {},
data: ssrState = {}, data: ssrState = {},
csrf: { csrf: {
token: csrfToken token: csrfToken
@ -51,10 +49,6 @@ const defaultState = isColdStored() ?
const primaryLang = getLangFromPath(location.pathname); const primaryLang = getLangFromPath(location.pathname);
defaultState.app.csrfToken = csrfToken; defaultState.app.csrfToken = csrfToken;
defaultState.flash = flashReducer(
defaultState.flash,
messagesFoundOnBoot(flash)
);
const serviceOptions = { xhrPath: '/services', context: { _csrf: csrfToken } }; const serviceOptions = { xhrPath: '/services', context: { _csrf: csrfToken } };

View File

@ -9,14 +9,15 @@ module.exports = function(app) {
var router = app.loopback.Router(); var router = app.loopback.Router();
router.get('/', addDefaultImage, index); router.get('/', addDefaultImage, index);
app.use( app.use(
'/:lang', '/:lang',
(req, res, next) => { (req, res, next) => {
// add url language to request for all routers // add url language to request for all routers
req._urlLang = req.params.lang; req._urlLang = req.params.lang;
next(); next();
}, },
router router
); );
app.use(router); app.use(router);
function addDefaultImage(req, res, next) { function addDefaultImage(req, res, next) {

View File

@ -95,8 +95,9 @@ export default function reactSubRouter(app) {
const title = titleSelector(state); const title = titleSelector(state);
epic.dispose(); epic.dispose();
res.expose(state, 'data', { isJSON: true }); res.expose(state, 'data', { isJSON: true });
res.expose(req.flash(), 'flash', { isJSON: true }); // note(berks): we render without express-flash dumping our messages
res.render('layout-react', { markup, title }); // the app will query for these on load
res.renderWithoutFlash('layout-react', { markup, title });
}) })
.subscribe(() => log('html rendered and sent'), next); .subscribe(() => log('html rendered and sent'), next);
} }

View File

@ -45,6 +45,7 @@
"./middlewares/validator": {} "./middlewares/validator": {}
}, },
"routes:before": { "routes:before": {
"./middlewares/express-extensions": {},
"express-flash": {}, "express-flash": {},
"helmet#xssFilter": {}, "helmet#xssFilter": {},
"helmet#noSniff": {}, "helmet#noSniff": {},
@ -52,7 +53,6 @@
"./middlewares/csurf": {}, "./middlewares/csurf": {},
"./middlewares/constant-headers": {}, "./middlewares/constant-headers": {},
"./middlewares/csp": {}, "./middlewares/csp": {},
"./middlewares/express-rx": {},
"./middlewares/jade-helpers": {}, "./middlewares/jade-helpers": {},
"./middlewares/migrate-completed-challenges": {}, "./middlewares/migrate-completed-challenges": {},
"./middlewares/add-lang": {}, "./middlewares/add-lang": {},

View 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();
};
}

View File

@ -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();
};
}