clientjs/packages/annotation-dashboard-nextleap/src/store.js
author ymh <ymh.work@gmail.com>
Mon, 04 Apr 2022 17:02:10 +0200
changeset 26 eb14941af2e7
parent 11 37ecf0b9c174
permissions -rw-r--r--
Added tag 0.2.2 for changeset 7f7cdcd01dea
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
import React, { Component } from 'react';
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
import thunkMiddleware from 'redux-thunk';
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
import { Provider } from 'react-redux';
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
import { createLogger } from 'redux-logger';
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
import { createStore, applyMiddleware, compose } from 'redux';
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
import { fetchAnnotations } from 'dashboard-components/lib/actions';
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
import rootReducer from 'dashboard-components/lib/reducers';
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
import { dashboardId } from './config.json';
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
let middlewares = [thunkMiddleware];
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
if (process.env.NODE_ENV !== 'production') {
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
  const loggerMiddleware = createLogger();
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
  middlewares = [...middlewares, loggerMiddleware];
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
}
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
/* eslint-disable no-underscore-dangle */
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
/* eslint-enable */
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
const store = createStore(
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
  rootReducer,
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
  composeEnhancers(applyMiddleware(...middlewares)),
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
);
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
export default WrappedComponent => class extends Component {
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
  componentWillMount() {
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
    const apiUrl = process.env.REACT_APP_API_URL;
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
    const discussionUrl = process.env.REACT_APP_DISCUSSION_URL;
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
    store.dispatch(fetchAnnotations(apiUrl, discussionUrl, dashboardId));
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
  }
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
  render() {
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
    return <Provider store={store}><WrappedComponent {...this.props} /></Provider>;
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
  }
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
};