feat: confirm access page and persist redux store

This commit is contained in:
2025-07-24 10:23:53 +04:00
parent d844e82785
commit 27bb7c3ebc
19 changed files with 491 additions and 91 deletions

View File

@ -0,0 +1,8 @@
import { combineReducers } from "@reduxjs/toolkit";
import targetServiceReducer from "@/lib/features/targetService/targetServiceSlice";
const rootReducer = combineReducers({
targetService: targetServiceReducer,
});
export default rootReducer;

View File

@ -0,0 +1,24 @@
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { ServiceCode } from "@/enums/ServiceCode";
interface TargetServiceState {
serviceCode: ServiceCode;
}
const initialState: TargetServiceState = {
serviceCode: ServiceCode.UNDEFINED,
};
export const targetServiceSlice = createSlice({
name: "targetService",
initialState,
reducers: {
setTargetService: (state, action: PayloadAction<ServiceCode>) => {
state.serviceCode = action.payload;
},
},
});
export const { setTargetService } = targetServiceSlice.actions;
export default targetServiceSlice.reducer;

28
lib/store.ts Normal file
View File

@ -0,0 +1,28 @@
import { configureStore } from "@reduxjs/toolkit";
import { useDispatch } from "react-redux";
import { persistReducer, persistStore } from "redux-persist";
import storage from "redux-persist/lib/storage";
import rootReducer from "@/lib/features/rootReducer";
const persistConfig = {
key: "root",
storage,
whitelist: ["targetService"],
};
const persistedReducer = persistReducer(persistConfig, rootReducer);
export const store = configureStore({
reducer: persistedReducer,
middleware: getDefaultMiddleware =>
getDefaultMiddleware({
serializableCheck: false,
}),
});
export const persistor = persistStore(store);
export type RootState = ReturnType<typeof store.getState>;
export type AppDispatch = typeof store.dispatch;
export const useAppDispatch = () => useDispatch<AppDispatch>();