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.
 
 
 

59 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 => {
// 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) {
// eslint-disable-next-line global-require
module.hot.accept('../reducers', () => store.replaceReducer(require('../reducers')))
}
return store
}
export default { configureStore, history }