You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.7 KiB
60 lines
1.7 KiB
import { createStore, applyMiddleware, compose } from 'redux'
|
|
import thunk from 'redux-thunk'
|
|
import { createHashHistory } from 'history'
|
|
import { routerMiddleware, routerActions } from 'react-router-redux'
|
|
import { createLogger } from 'redux-logger'
|
|
import rootReducer from '../reducers'
|
|
import ipc from '../reducers/ipc'
|
|
|
|
const history = createHashHistory();
|
|
|
|
const configureStore = (initialState?: counterStateType) => {
|
|
// Redux Configuration
|
|
const middleware = [];
|
|
const enhancers = [];
|
|
|
|
// Thunk Middleware
|
|
middleware.push(thunk);
|
|
|
|
// Logging Middleware
|
|
const logger = createLogger({
|
|
level: 'info',
|
|
collapsed: true
|
|
});
|
|
middleware.push(logger);
|
|
|
|
// Router Middleware
|
|
const router = routerMiddleware(history);
|
|
middleware.push(router);
|
|
|
|
// Redux DevTools Configuration
|
|
const actionCreators = {
|
|
...routerActions
|
|
};
|
|
// If Redux DevTools Extension is installed use it, otherwise use Redux compose
|
|
/* eslint-disable no-underscore-dangle */
|
|
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
|
|
? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({
|
|
// Options: http://zalmoxisus.github.io/redux-devtools-extension/API/Arguments.html
|
|
actionCreators
|
|
})
|
|
: compose;
|
|
/* eslint-enable no-underscore-dangle */
|
|
|
|
// Apply Middleware & Compose Enhancers
|
|
enhancers.push(applyMiddleware(...middleware, ipc));
|
|
const enhancer = composeEnhancers(...enhancers);
|
|
|
|
// Create Store
|
|
const store = createStore(rootReducer, initialState, enhancer);
|
|
|
|
if (module.hot) {
|
|
module.hot.accept('../reducers', () =>
|
|
store.replaceReducer(require('../reducers')) // eslint-disable-line global-require
|
|
);
|
|
}
|
|
|
|
return store;
|
|
};
|
|
|
|
export default { configureStore, history };
|
|
|