-
Notifications
You must be signed in to change notification settings - Fork 0
/
store.ts
66 lines (58 loc) · 1.47 KB
/
store.ts
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
import { createStore, applyMiddleware, compose, combineReducers } from 'redux';
import createSagaMiddleware from 'redux-saga';
import { batchedSubscribe, NotifyFunction } from 'redux-batched-subscribe';
import { persistStore, persistReducer } from 'redux-persist';
import isServer from './isServer'
import storage from 'redux-persist/lib/storage'; // defaults to localStorage for web and AsyncStorage for react-native
// AsyncNodeStorage is not included in browser.
// import { AsyncNodeStorage } from 'redux-persist-node-storage';
import topGeorgist from './reducers';
import rootSaga from './sagas/root';
const sagaMiddleware = createSagaMiddleware();
const middleWares = applyMiddleware(sagaMiddleware);
let enhancer;
let letStore;
let letPersistor;
if (isServer) {
// Server
enhancer = compose(middleWares);
const persistReducers = persistReducer(
{
key: 'root',
storage,
version: 1,
blacklist: ['clients'],
},
topGeorgist,
);
letStore = createStore(
persistReducers,
{},
enhancer,
);
letPersistor = persistStore(letStore);
} else {
// Client
const enhancer = compose(
middleWares,
// batchedSubscribe((notify: NotifyFunction) => {
// if (window.requestAnimationFrame) {
// window.requestAnimationFrame(notify);
// } else {
// notify();
// }
// }),
);
letStore = createStore(
topGeorgist,
{},
enhancer
);
}
sagaMiddleware.run(rootSaga);
const store = letStore;
const persistor = letPersistor;
export {
store,
persistor,
};