import { configureStore, combineReducers } from "@reduxjs/toolkit" import { useDispatch, useSelector } from "react-redux" import { persistStore, persistReducer, FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER, } from "redux-persist" import createWebStorage from "redux-persist/es/storage/createWebStorage" import authReducer from "./auth-slice" const storage = createWebStorage(import.meta.env.VITE_REDUX_STORAGE ?? "local") const persistConfig = { key: "root", storage, whitelist: ["auth"], // blacklist: ['department'], } const rootReducer = combineReducers({ auth: authReducer, }) const persistedReducer = persistReducer(persistConfig, rootReducer) const store = configureStore({ reducer: persistedReducer, middleware: (getDefaultMiddleware) => getDefaultMiddleware({ serializableCheck: { ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER], }, }), }) export const persistor = persistStore(store) export default store export type RootState = ReturnType export type AppDispatch = typeof store.dispatch export type AppStore = typeof store export const useAppDispatch = useDispatch.withTypes() export const useAppSelector = useSelector.withTypes()