-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstore.js
53 lines (46 loc) · 1.46 KB
/
store.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
import { compose, createStore, applyMiddleware } from 'redux';
import { persistReducer, persistStore } from 'redux-persist';
import createEncryptor from 'redux-persist-transform-encrypt';
import md5 from 'md5';
import DeviceInfo from 'react-native-device-info';
import storage from 'redux-persist/lib/storage';
import Reactotron from 'reactotron-react-native'; // eslint-disable-line import/no-extraneous-dependencies
import createLogger from 'redux-logger';
import reduxThunk from 'redux-thunk';
import { composeWithDevTools } from 'redux-devtools-extension';
import './src/config/reactotron';
import { rootReducer } from './reducer';
const encryptor = createEncryptor({
secretKey: md5(DeviceInfo.getUniqueID()),
});
const persistConfig = {
key: 'root',
storage,
transforms: [encryptor],
whitelist: ['auth'],
};
const getMiddleware = () => {
const middlewares = [reduxThunk];
console.log('__DEV__: ', __DEV__);
// if (__DEV__) {
// if (process.env.LOGGER_ENABLED) {
// middlewares.push(createLogger());
// }
// }
return applyMiddleware(...middlewares);
};
let store;
if (__DEV__ && process.env.TRON_ENABLED) {
store = Reactotron.createStore(
persistReducer(persistConfig, rootReducer),
compose(getMiddleware())
);
} else {
store = createStore(
rootReducer,
composeWithDevTools(getMiddleware())
);
console.log('store: ', store);
}
export const configureStore = store;
export const persistor = persistStore(configureStore);