import { combineReducers, configureStore } from '@reduxjs/toolkit'; import { useDispatch } from 'react-redux'; import configsSliceReducer from './configs.slice'; import { FLUSH, PAUSE, PERSIST, persistReducer, persistStore, PURGE, REGISTER, REHYDRATE, } from 'redux-persist'; import reduxStorage from '@/utils/storage/mmkv-redux-config'; const persistConfig = { key: 'root', version: 1, storage: reduxStorage, timeout: 0, }; const reducers = combineReducers({ configs: configsSliceReducer, }); const persistedReducer = persistReducer(persistConfig, reducers); export const store = configureStore({ reducer: persistedReducer, middleware: getDefaultMiddleware => getDefaultMiddleware({ serializableCheck: { ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER], }, }), }); export const persistor = persistStore(store); type RootState = ReturnType; declare global { export type StoreProps = RootState; } export type AppDispatch = typeof store.dispatch; export const useAppDispatch = () => useDispatch(); export default store;