import { createAction, createAsyncThunk } from '@reduxjs/toolkit'; import { LoginRequest, LoginResponse, LogoutRequest, LogoutResponse } from '@interfaces'; import { loginApi, logoutApi } from '@api'; export const login = createAsyncThunk( 'auth/login', async (payload, { rejectWithValue }) => { try { return await loginApi(payload); } catch (error: any) { const serverMessage = error?.response?.data?.message || error.message || 'Failed to login'; return rejectWithValue(serverMessage); } }, ); export const clearLocalAuth = createAction('USER_LOGOUT'); export const logout = createAsyncThunk( 'auth/logout', async (payload, { dispatch, rejectWithValue }) => { try { const response = await logoutApi(payload); dispatch(clearLocalAuth()); return response; } catch (error: any) { const serverMessage = error?.response?.data?.message || error.message || 'Failed to logout'; return rejectWithValue(serverMessage); } }, );