-
Notifications
You must be signed in to change notification settings - Fork 26
/
configureStore.js
80 lines (70 loc) · 1.8 KB
/
configureStore.js
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import { compose, createStore, applyMiddleware } from 'redux'
import { createLogger } from 'redux-logger'
import thunkMiddleware from 'redux-thunk'
import { persistStore, persistReducer, createMigrate } from 'redux-persist'
import storage from 'redux-persist/lib/storage' // defaults to localStorage for web
// import { isFlagshipApp } from 'cozy-device-helper'
import flag from 'cozy-flags'
import getReducers from 'reducers'
const migrations = {
0: () => {
return {}
},
1: () => {
return {}
}
}
const persistConfig = {
key: 'root',
storage,
version: 2,
migrate: createMigrate(migrations, { debug: false })
}
const configureWithPersistor = cozyClient => {
const composeEnhancers =
window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose
const persistedReducer = persistReducer(
persistConfig,
getReducers(cozyClient)
)
const reduxStore = createStore(
persistedReducer,
composeEnhancers(
applyMiddleware.apply(
this,
[thunkMiddleware, flag('redux-logger') ? createLogger() : null].filter(
Boolean
)
)
)
)
let persistor = persistStore(reduxStore)
return {
store: reduxStore,
persistor
}
}
const configureDefault = cozyClient => {
const composeEnhancers =
window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose
const reduxStore = createStore(
getReducers(cozyClient),
composeEnhancers(
applyMiddleware.apply(
this,
[thunkMiddleware, flag('redux-logger') ? createLogger() : null].filter(
Boolean
)
)
)
)
return {
store: reduxStore
}
}
const configureStore = cozyClient => {
return /* isFlagshipApp() || */ flag('home.store.persist')
? configureWithPersistor(cozyClient)
: configureDefault(cozyClient)
}
export default configureStore