2018-11-23 10:41:50 -08:00
|
|
|
// @flow
|
|
|
|
|
|
|
|
import { createStore, applyMiddleware, compose } from 'redux';
|
2018-11-23 15:23:41 -08:00
|
|
|
import { routerMiddleware } from 'connected-react-router';
|
2019-01-03 09:19:54 -08:00
|
|
|
import { createHashHistory } from 'history';
|
2018-11-23 10:41:50 -08:00
|
|
|
import thunk from 'redux-thunk';
|
2019-01-29 07:36:13 -08:00
|
|
|
import type { RouterHistory } from 'react-router-dom';
|
2018-11-28 20:14:44 -08:00
|
|
|
|
2018-11-28 06:06:11 -08:00
|
|
|
import { createRootReducer } from './modules/reducer';
|
2019-01-30 16:22:24 -08:00
|
|
|
import { errorHandler } from './errorHandler';
|
2018-11-23 10:41:50 -08:00
|
|
|
|
2019-01-29 07:36:13 -08:00
|
|
|
export const history: RouterHistory = createHashHistory();
|
2018-11-23 15:23:41 -08:00
|
|
|
|
2019-01-29 07:36:13 -08:00
|
|
|
const shouldEnableDevTools = (process.env.NODE_ENV !== 'production' || process.env.NODE_ENV !== 'staging')
|
2018-12-15 07:10:39 -08:00
|
|
|
&& window.devToolsExtension;
|
2018-11-28 11:33:19 -08:00
|
|
|
|
2018-11-23 15:23:41 -08:00
|
|
|
export const configureStore = (initialState: Object) => {
|
2019-01-30 16:22:24 -08:00
|
|
|
// $FlowFixMe
|
|
|
|
const middleware = applyMiddleware(thunk, routerMiddleware(history), errorHandler);
|
2018-11-23 10:41:50 -08:00
|
|
|
|
2018-11-28 11:33:19 -08:00
|
|
|
const enhancer = compose(
|
|
|
|
middleware,
|
|
|
|
shouldEnableDevTools ? window.devToolsExtension() : f => f,
|
|
|
|
);
|
2018-11-23 10:41:50 -08:00
|
|
|
|
2019-01-21 16:08:35 -08:00
|
|
|
// $FlowFixMe
|
2018-12-03 11:27:56 -08:00
|
|
|
return createStore(createRootReducer(history), initialState, enhancer);
|
2018-11-23 15:23:41 -08:00
|
|
|
};
|