2024-08-07 17:47:30 +05:30

58 lines
1.3 KiB
TypeScript

// store/slices/authSlice.ts
import { createSlice, PayloadAction } from '@reduxjs/toolkit';
import { LoginResponse } from '../api/loginApi';
interface AuthState {
token: string | null;
refreshToken: string | null;
id: number;
username: string;
email: string;
firstName: string;
lastName: string;
gender: string;
image: string;
}
const initialState: AuthState = {
token: null,
refreshToken: null,
id: 0,
username: '',
email: '',
firstName: '',
lastName: '',
gender: '',
image: '',
};
const authSlice = createSlice({
name: 'auth',
initialState,
reducers: {
setAuthTokens: (
state,
action: PayloadAction<{ token: string; refreshToken: string }>
) => {
state.token = action.payload.token;
state.refreshToken = action.payload.refreshToken;
localStorage.setItem('token', action.payload.token);
localStorage.setItem('refreshToken', action.payload.refreshToken);
},
clearAuthTokens: (state) => {
state.token = null;
state.refreshToken = null;
localStorage.removeItem('token');
localStorage.removeItem('refreshToken');
},
setUserDetails: (state, action: PayloadAction<LoginResponse>) => {
state = action.payload;
},
},
});
export const { setAuthTokens, clearAuthTokens, setUserDetails } =
authSlice.actions;
export default authSlice.reducer;