add changes from v0.3
This commit is contained in:
51
src/client/store.js
Normal file
51
src/client/store.js
Normal file
@@ -0,0 +1,51 @@
|
||||
import { combineReducers, compose, createStore } from 'redux'
|
||||
import config from '../util/pubConfig'
|
||||
import actionTypes from './actionTypes'
|
||||
|
||||
// import stores
|
||||
import user from './stores/userStore'
|
||||
import docs from './stores/docsStore'
|
||||
import cache from './stores/cacheStore'
|
||||
|
||||
export function initializeStore(initialState) {
|
||||
let enhancer = undefined
|
||||
|
||||
if (!config.ssr) {
|
||||
const persistState = require('redux-localstorage')
|
||||
enhancer = compose(
|
||||
persistState(['cache', 'user'], {
|
||||
merge: (initial, persisted) => {
|
||||
return {
|
||||
...initial,
|
||||
cache: {
|
||||
...persisted.cache,
|
||||
...initial.cache,
|
||||
},
|
||||
user: {
|
||||
...initial.user,
|
||||
...persisted.user,
|
||||
},
|
||||
}
|
||||
},
|
||||
})
|
||||
)
|
||||
}
|
||||
const store = combineReducers({
|
||||
user,
|
||||
docs,
|
||||
cache,
|
||||
})
|
||||
const rootStore = (state, action) => {
|
||||
if (action.type === actionTypes.USER_LOGOUT) {
|
||||
state = undefined
|
||||
} else if (action.type === actionTypes.LOAD_CACHE) {
|
||||
state = action.state
|
||||
}
|
||||
return store(state, action)
|
||||
}
|
||||
return createStore(rootStore, initialState, enhancer)
|
||||
}
|
||||
|
||||
export function getStore() {
|
||||
return config.ssr ? global.reduxStore : window['__NEXT_REDUX_STORE__']
|
||||
}
|
||||
Reference in New Issue
Block a user