Fix(flash): Turn flash messages into toasts.
parent
5b2f34b78f
commit
1a7c289324
|
@ -15,6 +15,7 @@ import sendPageAnalytics from './utils/send-page-analytics.js';
|
||||||
|
|
||||||
import createApp from '../common/app';
|
import createApp from '../common/app';
|
||||||
import provideStore from '../common/app/provide-store';
|
import provideStore from '../common/app/provide-store';
|
||||||
|
import { makeToast } from '../common/app/toasts/redux/actions';
|
||||||
|
|
||||||
// client specific sagas
|
// client specific sagas
|
||||||
import sagas from './sagas';
|
import sagas from './sagas';
|
||||||
|
@ -35,6 +36,21 @@ const initialState = isColdStored() ?
|
||||||
window.__fcc__.data;
|
window.__fcc__.data;
|
||||||
initialState.app.csrfToken = csrfToken;
|
initialState.app.csrfToken = csrfToken;
|
||||||
|
|
||||||
|
const toasts = Object.keys(window.__fcc__.flash)
|
||||||
|
.map(key => {
|
||||||
|
const messages = window.__fcc__.flash[key];
|
||||||
|
return messages.map(message => ({
|
||||||
|
message: message.msg,
|
||||||
|
type: key,
|
||||||
|
timeout: 5000
|
||||||
|
}));
|
||||||
|
})
|
||||||
|
.reduce((toasts, messages) => toasts.concat(messages), [])
|
||||||
|
.map(makeToast)
|
||||||
|
.map(({ payload }) => payload);
|
||||||
|
|
||||||
|
delete window.__fcc__;
|
||||||
|
|
||||||
const serviceOptions = { xhrPath: '/services', context: { _csrf: csrfToken } };
|
const serviceOptions = { xhrPath: '/services', context: { _csrf: csrfToken } };
|
||||||
|
|
||||||
const history = useLangRoutes(createHistory)();
|
const history = useLangRoutes(createHistory)();
|
||||||
|
@ -56,7 +72,7 @@ createApp({
|
||||||
syncHistoryWithStore,
|
syncHistoryWithStore,
|
||||||
syncOptions: { adjustUrlOnReplay },
|
syncOptions: { adjustUrlOnReplay },
|
||||||
serviceOptions,
|
serviceOptions,
|
||||||
initialState,
|
initialState: { ...initialState, toasts },
|
||||||
middlewares: [ routerMiddleware(history) ],
|
middlewares: [ routerMiddleware(history) ],
|
||||||
sagas: [...sagas ],
|
sagas: [...sagas ],
|
||||||
sagaOptions,
|
sagaOptions,
|
||||||
|
@ -72,10 +88,13 @@ createApp({
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.doOnNext(() => log('rendering'))
|
.doOnNext(() => log('rendering'))
|
||||||
.flatMap(({ props, store }) => render(
|
.flatMap(
|
||||||
provideStore(React.createElement(Router, props), store),
|
({ props, store }) => render(
|
||||||
DOMContainer
|
provideStore(React.createElement(Router, props), store),
|
||||||
))
|
DOMContainer
|
||||||
|
),
|
||||||
|
({ store }) => store
|
||||||
|
)
|
||||||
.subscribe(
|
.subscribe(
|
||||||
() => debug('react rendered'),
|
() => debug('react rendered'),
|
||||||
err => { throw err; },
|
err => { throw err; },
|
||||||
|
|
|
@ -87,6 +87,7 @@ export default function reactSubRouter(app) {
|
||||||
const { title } = state.app;
|
const { title } = state.app;
|
||||||
epic.dispose();
|
epic.dispose();
|
||||||
res.expose(state, 'data');
|
res.expose(state, 'data');
|
||||||
|
res.expose(req.flash(), 'flash');
|
||||||
return res.render$(
|
return res.render$(
|
||||||
'layout-react',
|
'layout-react',
|
||||||
{ markup, title }
|
{ markup, title }
|
||||||
|
|
Loading…
Reference in New Issue