clientjs/packages/annotation-dashboard-explorunivers/src/store.js
changeset 0 5f4fcbc80b37
child 4 df751568fda6
equal deleted inserted replaced
-1:000000000000 0:5f4fcbc80b37
       
     1 import React, { Component } from 'react';
       
     2 
       
     3 import thunkMiddleware from 'redux-thunk';
       
     4 import { Provider } from 'react-redux';
       
     5 import { createLogger } from 'redux-logger';
       
     6 import { createStore, applyMiddleware, compose } from 'redux';
       
     7 
       
     8 import { rootReducer, actions } from 'dashboard-components';
       
     9 
       
    10 const { fetchAnnotations } = actions;
       
    11 
       
    12 let middlewares = [thunkMiddleware];
       
    13 
       
    14 if (process.env.NODE_ENV !== 'production') {
       
    15   const loggerMiddleware = createLogger();
       
    16   middlewares = [...middlewares, loggerMiddleware];
       
    17 }
       
    18 
       
    19 /* eslint-disable no-underscore-dangle */
       
    20 const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
       
    21 /* eslint-enable */
       
    22 
       
    23 const store = createStore(
       
    24   rootReducer,
       
    25   composeEnhancers(applyMiddleware(...middlewares)),
       
    26 );
       
    27 
       
    28 export default WrappedComponent => class extends Component {
       
    29   componentWillMount() {
       
    30     const apiUrl = process.env.REACT_APP_API_URL;
       
    31     const discussionUrl = process.env.REACT_APP_DISCUSSION_URL;
       
    32     store.dispatch(fetchAnnotations(apiUrl, discussionUrl));
       
    33   }
       
    34 
       
    35   render() {
       
    36     return <Provider store={store}><WrappedComponent {...this.props} /></Provider>;
       
    37   }
       
    38 };