Untitled
unknown
plain_text
9 months ago
3.8 kB
5
Indexable
import { persistStore, persistReducer, createMigrate } from 'redux-persist';
import createSagaMiddleware from 'redux-saga';
import reducers from './reducers';
import rootSaga from './saga';
import { createTransform } from 'redux-persist';
import { TYPE_PRICE_PNL } from 'app/screens/futures_onus/constants/type';
import { TYPE_SORT_ASSETS } from 'app/screens/futures_onus_select_assets/utils';
import { mmkvStoragePersist } from 'app/store/local';
import { configureStore } from '@reduxjs/toolkit';
const sagaMiddleware = createSagaMiddleware();
let persistedReducer = null;
const versionMigrations = 44;
const migrations = {
0: state => {
// migration clear out device state
return {
...state,
};
},
[versionMigrations]: state => {
// migration to keep only device state
return {
...state,
setting_futures: {
...state.setting_futures,
type: 'pro',
typeChart: 'original',
confirmPosition: false, //xác nhận mở vị thế
confirmCloseAll: false, //xác nhận đóng tất cả
pushNotiLiquidation: true, //thông báo liquidation
isGuideLite: true,
typePricePnl: TYPE_PRICE_PNL.BEST_PRICE,
showPnlWithFee: false,
indexCategory: 0,
valueSort: TYPE_SORT_ASSETS.PAIR_VOLUME_UP,
showTooltipFutures: false,
},
};
},
};
const SetTransform = createTransform(
// transform state on its way to being serialized and persisted.
(inboundState, key) => {
if (key === 'invest') {
return {
keywordsRecent: inboundState.keywordsRecent,
setting: inboundState.setting,
watchlist: [],
staking: null,
creditLine: null,
};
}
return inboundState;
// convert mySet to an Array.
},
// transform state being rehydrated
(outboundState, key) => {
// convert mySet back to a Set.
return outboundState;
},
// define which reducers this transform gets called for.
{
whitelist: [
'auth',
'locale',
'localDevices',
'setting',
'secretKeyByUsers',
'usersRegister',
'config',
'invest',
'setting_chart',
'chart_futures',
'token_futures',
'usersPaymentMethod',
'setting_futures',
'exchange_info',
'symbol_focus',
'user_futures',
'userPaymentSelected',
'bankToBuyVndc',
'dataForVipLevel',
'exchange_info_spot',
'user_spot',
'chart_spot',
'setting_spot',
'showUpRate',
'listDevice',
'pairConfigExchangeAMM',
],
},
);
persistedReducer = persistReducer(
{
key: 'root',
storage: mmkvStoragePersist,
version: versionMigrations,
whitelist: [
'auth',
'locale',
'theme',
'localDevices',
'setting',
'secretKeyByUsers',
'usersRegister',
'config',
'invest',
'contactsRecent',
'setting_chart',
'chart_futures',
'token_futures',
'usersPaymentMethod',
'setting_futures',
'exchange_info',
'symbol_focus',
'user_futures',
'userPaymentSelected',
'bankToBuyVndc',
'dataForVipLevel',
'exchange_info_spot',
'user_spot',
'chart_spot',
'setting_spot',
'showUpRate',
'listDevice',
'pairConfigExchangeAMM',
],
transforms: [SetTransform],
blacklist: ['requests'],
migrate: createMigrate(migrations),
},
reducers,
);
export const store = configureStore({
reducer: persistedReducer,
middleware: getDefaultMiddleware =>
getDefaultMiddleware({
serializableCheck: false, // Tắt kiểm tra serializable nếu redux-persist gây lỗi
}).concat(sagaMiddleware),
});
sagaMiddleware.run(rootSaga);
export const persistor = persistStore(store);
Editor is loading...
Leave a Comment