just-paja/radio-drama-queen

View on GitHub
src/store.js

Summary

Maintainability
A
0 mins
Test Coverage
import createSagaMiddleware from 'redux-saga'

// eslint-disable-next-line import/no-extraneous-dependencies
import { createLogger } from 'redux-logger'
import { createStore, applyMiddleware, compose } from 'redux'

import reducers from './reducers'
import ipcActionPipe from './ipcActionPipe'

export const sagaMiddleware = createSagaMiddleware()

const DEVELOPMENT = process.env.NODE_ENV === 'development'
let store

export default function configureStore (initialState = {}) {
  const middlewares = []

  middlewares.push(sagaMiddleware)

  if (DEVELOPMENT) {
    middlewares.push(createLogger({
      collapsed: true,
      diff: false
    }))
  }

  const enhancers = [
    applyMiddleware(...middlewares)
  ]

  store = createStore(
    reducers,
    initialState,
    compose(...enhancers)
  )

  ipcActionPipe(store)

  // Create hook for async sagas
  store.sagaMiddleware = sagaMiddleware
  store.runSaga = sagaMiddleware.run
  return store
}

if (module.hot) {
  module.hot.accept('./reducers', () => {
    if (store) {
      // eslint-disable-next-line global-require
      store.replaceReducer(require('./reducers').default)
      console.info(':: Hot reload reducers')
    }
  })
}