clientjs/packages/annotation-dashboard-explorunivers/src/store.js
changeset 0 5f4fcbc80b37
child 4 df751568fda6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/clientjs/packages/annotation-dashboard-explorunivers/src/store.js	Fri Sep 14 17:57:34 2018 +0200
@@ -0,0 +1,38 @@
+import React, { Component } from 'react';
+
+import thunkMiddleware from 'redux-thunk';
+import { Provider } from 'react-redux';
+import { createLogger } from 'redux-logger';
+import { createStore, applyMiddleware, compose } from 'redux';
+
+import { rootReducer, actions } from 'dashboard-components';
+
+const { fetchAnnotations } = actions;
+
+let middlewares = [thunkMiddleware];
+
+if (process.env.NODE_ENV !== 'production') {
+  const loggerMiddleware = createLogger();
+  middlewares = [...middlewares, loggerMiddleware];
+}
+
+/* eslint-disable no-underscore-dangle */
+const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
+/* eslint-enable */
+
+const store = createStore(
+  rootReducer,
+  composeEnhancers(applyMiddleware(...middlewares)),
+);
+
+export default WrappedComponent => class extends Component {
+  componentWillMount() {
+    const apiUrl = process.env.REACT_APP_API_URL;
+    const discussionUrl = process.env.REACT_APP_DISCUSSION_URL;
+    store.dispatch(fetchAnnotations(apiUrl, discussionUrl));
+  }
+
+  render() {
+    return <Provider store={store}><WrappedComponent {...this.props} /></Provider>;
+  }
+};