import userReducer from '../state/UserSlice'; import settingsReduder from './SettingsSlice'; import { configureStore } from '@reduxjs/toolkit'; import languageReducer from './LanguageSlice'; import { TypedUseSelectorHook, useDispatch as reduxDispatch, useSelector as reduxSelector } from 'react-redux' import { persistStore, persistCombineReducers, FLUSH, PAUSE, PERSIST, PURGE, REGISTER, REHYDRATE } from "redux-persist"; import AsyncStorage from '@react-native-async-storage/async-storage'; const persistConfig = { key: 'root', storage: AsyncStorage } let store = configureStore({ reducer: persistCombineReducers(persistConfig, { user: userReducer, language: languageReducer, settings: settingsReduder }), middleware: (getDefaultMiddleware) => getDefaultMiddleware({ serializableCheck: { ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER], }, }), }) let persistor = persistStore(store); // Infer the `RootState` and `AppDispatch` types from the store itself export type RootState = ReturnType // Inferred type: {posts: PostsState, comments: CommentsState, users: UsersState} export type AppDispatch = typeof store.dispatch; // Use throughout your app instead of plain `useDispatch` and `useSelector` export const useDispatch: () => AppDispatch = reduxDispatch export const useSelector: TypedUseSelectorHook = reduxSelector export default store export { persistor }