NeoScan_Radiologist/app/modules/Auth/redux/authActions.ts
2025-08-05 18:01:36 +05:30

74 lines
2.1 KiB
TypeScript

/*
* File: authActions.ts
* Description: Async actions (thunks) for Auth state
* Design & Developed by Tech4Biz Solutions
* Copyright (c) Spurrin Innovations. All rights reserved.
*/
import { createAsyncThunk } from '@reduxjs/toolkit';
import { logout } from './authSlice';
import { authAPI } from '../services/authAPI';
import { showError, showSuccess } from '../../../shared/utils/toast';
/**
* Thunk to login user
*/
export const login = createAsyncThunk(
'auth/login',
async (credentials: { email: string; password: string }, { rejectWithValue }) => {
try {
const response:any = await authAPI.login(credentials.email, credentials.password,'web');
console.log('user response',response)
if(response.data.message && !response.data.success){
showError(response.data.message)
return rejectWithValue(response.data.message);
}
if(response.data.message && response.data.success){
showSuccess(response.data.message)
}
if (response.ok && response.data && response.data.data) {
// Return the user data for the fulfilled case
return {...response.data.data.user,access_token:response.data.data.access_token};
} else {
const errorMessage = response.data?.message || response.problem || 'Unknown error';
return rejectWithValue(errorMessage);
}
} catch (error: any) {
return rejectWithValue(error.message);
}
}
);
/**
* Thunk to logout user
*/
export const logoutUser = createAsyncThunk(
'auth/logout',
async (_, { dispatch, rejectWithValue }) => {
try {
// TODO: Add logout API call if needed
// const response = await authAPI.logout();
// For now, just dispatch the logout action
dispatch(logout());
// Show success message
showSuccess('Logged out successfully');
return true;
} catch (error: any) {
console.error('Logout error:', error);
return rejectWithValue(error.message);
}
}
);
/*
* End of File: authActions.ts
* Design & Developed by Tech4Biz Solutions
* Copyright (c) Spurrin Innovations. All rights reserved.
*/