From 49bfe260e750d5b7aac97d6e5a592bda32e554c6 Mon Sep 17 00:00:00 2001 From: rodik Date: Tue, 16 Feb 2016 01:23:16 +0200 Subject: [PATCH] Revert deferred props, updating to redux-async-connect 1.x.x --- package.json | 2 +- src/client.js | 2 +- src/containers/App/App.js | 29 +++++++++++++++-------------- src/containers/Widgets/Widgets.js | 16 +++++++++------- src/server.js | 2 +- 5 files changed, 27 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index ce8f29661..7b125b207 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "react-router-bootstrap": "^0.20.1", "react-router-redux": "^3.0.0", "redux": "^3.0.4", - "redux-async-connect": "^0.1.13", + "redux-async-connect": "^1.0.0-rc2", "redux-form": "^3.0.12", "scroll-behavior": "^0.3.2", "serialize-javascript": "^1.1.2", diff --git a/src/client.js b/src/client.js index 73f621426..752b14c2f 100644 --- a/src/client.js +++ b/src/client.js @@ -36,7 +36,7 @@ global.socket = initSocket(); const component = ( - + !item.deferred} /> } history={history}> {getRoutes(store)} diff --git a/src/containers/App/App.js b/src/containers/App/App.js index ef117f62c..6119ae8ed 100644 --- a/src/containers/App/App.js +++ b/src/containers/App/App.js @@ -11,7 +11,22 @@ import { isLoaded as isAuthLoaded, load as loadAuth, logout } from 'redux/module import { InfoBar } from 'components'; import { routeActions } from 'react-router-redux'; import config from '../../config'; +import { asyncConnect } from 'redux-async-connect'; +@asyncConnect([{ + promise: ({store: {dispatch, getState}}) => { + const promises = []; + + if (!isInfoLoaded(getState())) { + promises.push(dispatch(loadInfo())); + } + if (!isAuthLoaded(getState())) { + promises.push(dispatch(loadAuth())); + } + + return Promise.all(promises); + } +}]) @connect( state => ({user: state.auth.user}), {logout, pushState: routeActions.push}) @@ -37,20 +52,6 @@ export default class App extends Component { } } - static reduxAsyncConnect(params, store) { - const {dispatch, getState} = store; - const promises = []; - - if (!isInfoLoaded(getState())) { - promises.push(dispatch(loadInfo())); - } - if (!isAuthLoaded(getState())) { - promises.push(dispatch(loadAuth())); - } - - return Promise.all(promises); - } - handleLogout = (event) => { event.preventDefault(); this.props.logout(); diff --git a/src/containers/Widgets/Widgets.js b/src/containers/Widgets/Widgets.js index e02c0e84c..a95eb3e78 100644 --- a/src/containers/Widgets/Widgets.js +++ b/src/containers/Widgets/Widgets.js @@ -5,7 +5,16 @@ import * as widgetActions from 'redux/modules/widgets'; import {isLoaded, load as loadWidgets} from 'redux/modules/widgets'; import {initializeWithKey} from 'redux-form'; import { WidgetForm } from 'components'; +import { asyncConnect } from 'redux-async-connect'; +@asyncConnect([{ + deferred: true, + promise: ({store: {dispatch, getState}}) => { + if (!isLoaded(getState())) { + return dispatch(loadWidgets()); + } + } +}]) @connect( state => ({ widgets: state.widgets.data, @@ -25,13 +34,6 @@ export default class Widgets extends Component { editStart: PropTypes.func.isRequired }; - static reduxAsyncConnect(params, store) { - const {dispatch, getState} = store; - if (!isLoaded(getState())) { - return dispatch(loadWidgets()); - } - } - render() { const handleEdit = (widget) => { const {editStart} = this.props; // eslint-disable-line no-shadow diff --git a/src/server.js b/src/server.js index a806783f7..b8b8617b8 100644 --- a/src/server.js +++ b/src/server.js @@ -88,7 +88,7 @@ app.use((req, res) => { res.status(500); hydrateOnClient(); } else if (renderProps) { - loadOnServer(renderProps, store, {client}).then(() => { + loadOnServer({...renderProps, store, helpers: {client}}).then(() => { const component = (