All files / src/reducers configureStore.js

0% Statements 0/10
0% Branches 0/5
0% Functions 0/1
0% Lines 0/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41                                                                                 
import { applyMiddleware, compose, createStore } from 'redux'
import thunkMiddleware from 'redux-thunk'
import { persistStore, persistReducer } from 'redux-persist'
import storage from 'redux-persist/lib/storage'
 
import monitorReducersEnhancer from 'enhancers/monitorReducer'
import loggerMiddleware from 'middleware/logger'
import rootReducer from '.'
 
const persistConfig = {
  key: 'settings',
  storage,
}
 
const persistedReducer = persistReducer(persistConfig, rootReducer)
 
export default function configureStore(preloadedState) {
  const middlewares = [
    process.env.NODE_ENV === 'development' && loggerMiddleware,
    thunkMiddleware,
  ].filter(Boolean)
 
  const middlewareEnhancer = applyMiddleware(...middlewares)
 
  const addReduxDevtoolsInDevMode =
    process.env.NODE_ENV === 'development' &&
    window.__REDUX_DEVTOOLS_EXTENSION__ &&
    window.__REDUX_DEVTOOLS_EXTENSION__()
 
  const enhancers = [middlewareEnhancer, monitorReducersEnhancer, addReduxDevtoolsInDevMode].filter(
    Boolean,
  )
  const composedEnhancers = compose(...enhancers)
 
  let store = createStore(persistedReducer, preloadedState, composedEnhancers)
 
  let persistor = persistStore(store)
 
  return { store, persistor }
}