import { applyMiddleware, createStore } from 'redux' import { createLogger } from 'redux-logger' import { composeWithDevTools } from 'redux-devtools-extension/developmentOnly' import { promiseMiddleware, localStorageMiddleware } from './middleware' import reducer from './reducer' import { routerMiddleware } from 'react-router-redux' import { createBrowserHistory } from 'history' export const history = createBrowserHistory() // Build the middleware for intercepting and dispatching navigation actions const myRouterMiddleware = routerMiddleware(history) const getMiddleware = () => { // we only collect code coverage in non-production environment // thus "IF" branch will never get hit /* istanbul ignore if */ if (process.env.NODE_ENV === 'production') { return applyMiddleware( myRouterMiddleware, promiseMiddleware, localStorageMiddleware ) } else { // Enable additional logging in non-production environments. return applyMiddleware( myRouterMiddleware, promiseMiddleware, localStorageMiddleware, createLogger() ) } } export const store = createStore(reducer, composeWithDevTools(getMiddleware()))