import { createReducer } from '@reduxjs/toolkit'; import { login } from './thunk'; import { UserData } from '@interfaces'; export interface LoginState { loginSuccess: boolean; loginLoading: boolean; status: boolean; is_twofactor: boolean; user_data: UserData | null; token: string | null; loginError: string | null; loginMessage: string | null; } const initialState: LoginState = { loginSuccess: false, loginLoading: false, status: false, is_twofactor: false, user_data: null, token: null, loginError: null, loginMessage: null, }; export const reducers = createReducer(initialState, builder => { builder .addCase(login.pending, acc => { acc.loginLoading = true; acc.loginError = null; acc.loginMessage = null; }) .addCase(login.fulfilled, (acc, action) => { acc.loginLoading = false; acc.status = action.payload.status; acc.is_twofactor = action.payload.is_twofactor; acc.user_data = action.payload.user_data; acc.token = action.payload.token; acc.loginSuccess = true; acc.loginError = null; acc.loginMessage = null; }) .addCase(login.rejected, (acc, { error, payload }) => { acc.loginLoading = false; acc.loginError = (payload as string) ?? error.message ?? 'Login failed'; acc.loginMessage = (payload as string) ?? error.message ?? 'Login failed'; acc.loginSuccess = false; }); }); export default reducers;