diff --git a/frontend/admin-web/src/store/redux/slices/authSlice.ts b/frontend/admin-web/src/store/redux/slices/authSlice.ts index 8d4c615f..2467fb55 100644 --- a/frontend/admin-web/src/store/redux/slices/authSlice.ts +++ b/frontend/admin-web/src/store/redux/slices/authSlice.ts @@ -1,4 +1,4 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit'; +import { createSlice, PayloadAction, Action } from '@reduxjs/toolkit'; import { REHYDRATE } from 'redux-persist'; import type { User } from '@/types/user.types'; @@ -11,6 +11,12 @@ interface AuthState { loading: boolean; } +interface RehydrateAction extends Action { + payload?: { + auth?: AuthState; + }; +} + const initialState: AuthState = { user: null, token: null, @@ -53,17 +59,20 @@ const authSlice = createSlice({ }, }, extraReducers: (builder) => { - builder.addCase(REHYDRATE, (state, action: PayloadAction<{ auth?: AuthState } | undefined>) => { - if (action.payload?.auth) { - const rehydratedAuth = action.payload.auth; - state.user = rehydratedAuth.user; - state.token = rehydratedAuth.token; - state.refreshToken = rehydratedAuth.refreshToken; - state.permissions = rehydratedAuth.permissions; - state.isAuthenticated = rehydratedAuth.isAuthenticated; + builder.addMatcher( + (action): action is RehydrateAction => action.type === REHYDRATE, + (state, action) => { + if (action.payload?.auth) { + const rehydratedAuth = action.payload.auth; + state.user = rehydratedAuth.user; + state.token = rehydratedAuth.token; + state.refreshToken = rehydratedAuth.refreshToken; + state.permissions = rehydratedAuth.permissions; + state.isAuthenticated = rehydratedAuth.isAuthenticated; + } + state.loading = false; } - state.loading = false; - }); + ); }, });