11import { compose , createStore , applyMiddleware } from 'redux' ;
2- import { autoRehydrate } from 'redux-persist' ;
2+ import { persistReducer , persistStore } from 'redux-persist' ;
3+ import createEncryptor from 'redux-persist-transform-encrypt' ;
4+ import md5 from 'md5' ;
5+ import DeviceInfo from 'react-native-device-info' ;
6+ import storage from 'redux-persist/lib/storage' ;
37import Reactotron from 'reactotron-react-native' ; // eslint-disable-line import/no-extraneous-dependencies
48import createLogger from 'redux-logger' ;
59import reduxThunk from 'redux-thunk' ;
610import { composeWithDevTools } from 'redux-devtools-extension' ;
711import 'config/reactotron' ;
812import { rootReducer } from './root.reducer' ;
913
14+ const encryptor = createEncryptor ( {
15+ secretKey : md5 ( DeviceInfo . getUniqueID ( ) ) ,
16+ } ) ;
17+ const persistConfig = {
18+ key : 'root' ,
19+ storage,
20+ transforms : [ encryptor ] ,
21+ whitelist : [ 'auth' ] ,
22+ } ;
1023const getMiddleware = ( ) => {
1124 const middlewares = [ reduxThunk ] ;
1225
@@ -19,26 +32,19 @@ const getMiddleware = () => {
1932 return applyMiddleware ( ...middlewares ) ;
2033} ;
2134
22- const getEnhancers = ( ) => {
23- const enhancers = [ ] ;
24-
25- enhancers . push ( autoRehydrate ( ) ) ;
26-
27- return enhancers ;
28- } ;
29-
3035let store ;
3136
3237if ( __DEV__ && process . env . TRON_ENABLED ) {
3338 store = Reactotron . createStore (
34- rootReducer ,
35- compose ( getMiddleware ( ) , ... getEnhancers ( ) )
39+ persistReducer ( persistConfig , rootReducer ) ,
40+ compose ( getMiddleware ( ) )
3641 ) ;
3742} else {
3843 store = createStore (
39- rootReducer ,
40- composeWithDevTools ( getMiddleware ( ) , ... getEnhancers ( ) )
44+ persistReducer ( persistConfig , rootReducer ) ,
45+ composeWithDevTools ( getMiddleware ( ) )
4146 ) ;
4247}
4348
4449export const configureStore = store ;
50+ export const persistor = persistStore ( configureStore ) ;
0 commit comments