Skip to content

Commit 738ab34

Browse files
committed
fix: composeWithDevTools should not be used in production
1 parent 862c7c1 commit 738ab34

File tree

3 files changed

+34
-26
lines changed

3 files changed

+34
-26
lines changed

App.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { configureStore, persistor } from './root.store';
1818

1919
const Container = styled.View`
2020
align-items: center;
21-
background-color: ${colors.white}
21+
background-color: ${colors.white};
2222
flex: 1;
2323
justify-content: center;
2424
`;

root.reducer.js

+18-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
import { combineReducers } from 'redux';
2+
import { persistReducer } 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 AsyncStorage from '@react-native-community/async-storage';
27
import { authReducer } from 'auth';
38
import { userReducer } from 'user';
49
import { repositoryReducer } from 'repository';
@@ -7,7 +12,17 @@ import { issueReducer } from 'issue';
712
import { notificationsReducer } from 'notifications';
813
import { entities, pagination } from 'api/reducers';
914

10-
export const rootReducer = combineReducers({
15+
const encryptor = createEncryptor({
16+
secretKey: md5(DeviceInfo.getUniqueID()),
17+
});
18+
const rootPersistConfig = {
19+
key: 'root',
20+
storage: AsyncStorage,
21+
transforms: [encryptor],
22+
whitelist: ['auth'],
23+
};
24+
25+
const rootReducer = combineReducers({
1126
auth: authReducer,
1227
user: userReducer,
1328
repository: repositoryReducer,
@@ -17,3 +32,5 @@ export const rootReducer = combineReducers({
1732
entities,
1833
pagination,
1934
});
35+
36+
export default persistReducer(rootPersistConfig, rootReducer);

root.store.js

+15-24
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,12 @@
11
import { compose, createStore, applyMiddleware } from 'redux';
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 AsyncStorage from '@react-native-community/async-storage';
2+
import { persistStore } from 'redux-persist';
73
import Reactotron from 'reactotron-react-native'; // eslint-disable-line import/no-extraneous-dependencies
84
import createLogger from 'redux-logger';
95
import reduxThunk from 'redux-thunk';
106
import { composeWithDevTools } from 'redux-devtools-extension';
117
import 'config/reactotron';
12-
import { rootReducer } from './root.reducer';
8+
import rootReducer from './root.reducer';
139

14-
const encryptor = createEncryptor({
15-
secretKey: md5(DeviceInfo.getUniqueID()),
16-
});
17-
const persistConfig = {
18-
key: 'root',
19-
storage: AsyncStorage,
20-
transforms: [encryptor],
21-
whitelist: ['auth'],
22-
};
2310
const getMiddleware = () => {
2411
const middlewares = [reduxThunk];
2512

@@ -34,16 +21,20 @@ const getMiddleware = () => {
3421

3522
let store;
3623

37-
if (__DEV__ && process.env.TRON_ENABLED) {
38-
store = Reactotron.createStore(
39-
persistReducer(persistConfig, rootReducer),
40-
compose(getMiddleware())
41-
);
24+
if (__DEV__) {
25+
if (process.env.TRON_ENABLED) {
26+
store = Reactotron.createStore(
27+
rootReducer,
28+
compose(getMiddleware())
29+
);
30+
} else {
31+
store = createStore(
32+
rootReducer,
33+
composeWithDevTools(getMiddleware())
34+
);
35+
}
4236
} else {
43-
store = createStore(
44-
persistReducer(persistConfig, rootReducer),
45-
composeWithDevTools(getMiddleware())
46-
);
37+
store = createStore(rootReducer, compose(getMiddleware()));
4738
}
4839

4940
export const configureStore = store;

0 commit comments

Comments
 (0)