feat: confirm access page and persist redux store
This commit is contained in:
8
lib/features/rootReducer.ts
Normal file
8
lib/features/rootReducer.ts
Normal 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;
|
||||
24
lib/features/targetService/targetServiceSlice.tsx
Normal file
24
lib/features/targetService/targetServiceSlice.tsx
Normal 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
28
lib/store.ts
Normal 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>();
|
||||
Reference in New Issue
Block a user