Decouple apollo store

This commit is contained in:
Chi Vinh Le
2017-11-30 20:26:08 +01:00
parent ab772839c5
commit 06ddb30d77
6 changed files with 18 additions and 13 deletions
@@ -1,7 +1,6 @@
import React from 'react';
import StreamTabPanel from '../components/StreamTabPanel';
import {connect} from 'react-redux';
import omit from 'lodash/omit';
import {Tab, TabPane} from 'coral-ui';
import {getShallowChanges} from 'coral-framework/utils';
import isEqual from 'lodash/isEqual';
@@ -106,7 +105,7 @@ StreamTabPanelContainer.propTypes = {
};
const mapStateToProps = (state) => ({
reduxState: omit(state, 'apollo'),
reduxState: state,
});
export default connect(mapStateToProps, null)(StreamTabPanelContainer);
@@ -1,7 +1,6 @@
import React, {Children} from 'react';
import {connect} from 'react-redux';
import PropTypes from 'prop-types';
import omit from 'lodash/omit';
import {getShallowChanges} from 'coral-framework/utils';
class IfSlotIsEmpty extends React.Component {
@@ -39,7 +38,7 @@ IfSlotIsEmpty.propTypes = {
};
const mapStateToProps = (state) => ({
reduxState: omit(state, 'apollo'),
reduxState: state,
});
export default connect(mapStateToProps, null)(IfSlotIsEmpty);
@@ -1,7 +1,6 @@
import React, {Children} from 'react';
import {connect} from 'react-redux';
import PropTypes from 'prop-types';
import omit from 'lodash/omit';
import {getShallowChanges} from 'coral-framework/utils';
class IfSlotIsNotEmpty extends React.Component {
@@ -39,7 +38,7 @@ IfSlotIsNotEmpty.propTypes = {
};
const mapStateToProps = (state) => ({
reduxState: omit(state, 'apollo'),
reduxState: state,
});
export default connect(mapStateToProps, null)(IfSlotIsNotEmpty);
+1 -2
View File
@@ -2,7 +2,6 @@ import React from 'react';
import cn from 'classnames';
import styles from './Slot.css';
import {connect} from 'react-redux';
import omit from 'lodash/omit';
import kebabCase from 'lodash/kebabCase';
import PropTypes from 'prop-types';
import isEqual from 'lodash/isEqual';
@@ -121,7 +120,7 @@ Slot.propTypes = {
};
const mapStateToProps = (state) => ({
reduxState: omit(state, 'apollo'),
reduxState: state,
});
export default connect(mapStateToProps, null)(Slot);
@@ -13,13 +13,14 @@ class TalkProvider extends React.Component {
notification: this.props.notification,
storage: this.props.storage,
history: this.props.history,
store: this.props.store,
};
}
render() {
const {children, client, store} = this.props;
const {children, client} = this.props;
return (
<ApolloProvider client={client} store={store}>
<ApolloProvider client={client}>
{children}
</ApolloProvider>
);
@@ -35,6 +36,7 @@ TalkProvider.childContextTypes = {
notification: PropTypes.object,
storage: PropTypes.object,
history: PropTypes.object,
store: PropTypes.object,
};
export default TalkProvider;
+10 -3
View File
@@ -159,21 +159,28 @@ export async function createContext({
pym.sendMessage('event', JSON.stringify({eventName, value}));
});
// Create our redux store.
const finalReducers = {
...reducers,
...plugins.getReducers(),
apollo: client.reducer(),
};
store = createStore(finalReducers, [
client.middleware(),
thunk.withExtraArgument(context),
apolloErrorReporter,
createReduxEmitter(eventEmitter),
]);
context.store = store;
// Create apollo redux store.
context.apolloStore = createStore({
apollo: client.reducer(),
}, [
client.middleware(),
apolloErrorReporter,
createReduxEmitter(eventEmitter),
]);
// Run pre initialization.
if (preInit) {
await preInit(context);