ignite-jhipster
Version:
A React Native boilerplate for JHipster apps.
45 lines (37 loc) • 1.58 kB
JavaScript
import { combineReducers } from 'redux'
import { persistReducer } from 'redux-persist'
import configureStore from './create-store'
import rootSaga from '../sagas'
import ReduxPersist from '../../config/redux-persist'
/* ------------- Assemble The Reducers ------------- */
export const reducers = combineReducers({
appState: require('./app-state.reducer').reducer,
users: require('./user.reducer').reducer,
// ignite-jhipster-redux-store-import-needle
account: require('./account.reducer').reducer,
login: require('../../modules/login/login.reducer').reducer,
register: require('../../modules/account/register/register.reducer').reducer,
changePassword: require('../../modules/account/password/change-password.reducer').reducer,
forgotPassword: require('../../modules/account/password-reset/forgot-password.reducer').reducer
})
export default () => {
let finalReducers = reducers
// If rehydration is on use persistReducer otherwise default combineReducers
if (ReduxPersist.active) {
const persistConfig = ReduxPersist.storeConfig
finalReducers = persistReducer(persistConfig, reducers)
}
let { store, sagasManager, sagaMiddleware } = configureStore(finalReducers, rootSaga)
if (module.hot) {
module.hot.accept(() => {
const nextRootReducer = require('./').reducers
store.replaceReducer(nextRootReducer)
const newYieldedSagas = require('../sagas').default
sagasManager.cancel()
sagasManager.done.then(() => {
sagasManager = sagaMiddleware.run(newYieldedSagas)
})
})
}
return store
}