sharyn
Version:
Combines all the other packages under one.
42 lines (36 loc) • 1.14 kB
Flow
// @flow
// flow-disable-next-line
import { applyMiddleware, combineReducers, compose, createStore } from 'redux'
// flow-disable-next-line
import thunk from 'redux-thunk'
// flow-disable-next-line
import persistState from 'redux-localstorage'
import asyncReducer from './async-reducer'
import envReducer from './env-reducer'
import dataReducer from './data-reducer'
import uiReducer from './ui-reducer'
import userReducer from './user-reducer'
const createSharynStore = (options?: {
preloadedState?: Object,
isDevEnv?: boolean,
persistUser?: boolean,
}) => {
const composeEnhancers =
(options?.isDevEnv && window?.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) || compose
const composedEnhancers = composeEnhancers(
applyMiddleware(thunk),
options?.persistUser ? persistState('user') : x => x,
)
return createStore(
combineReducers({
async: asyncReducer,
data: dataReducer,
env: envReducer,
ui: uiReducer,
user: userReducer,
}),
options?.preloadedState ?? composedEnhancers,
options?.preloadedState ? composedEnhancers : undefined,
)
}
export default createSharynStore