import axios from "axios"; import { Auth, setAuthToken } from "../api/agent"; import { authActions } from "./auth-slice"; export const userLogin = (username: string, password: string) => { return async (dispatch: any) => { try { const loggedInUser = await login(username, password); dispatch( authActions.login({ role: loggedInUser.role, token: loggedInUser.accessToken, user: loggedInUser.username, }) ); } catch (e) { console.log("Error in login action",e.message); dispatch(authActions.authError()); } }; }; //TODO: attach dispatch for register user ( no login need after register) export const registerOwner = ( email: string, username: string, password: string, mobileNumber: string, ownerName: string ) => { return async (dispatch: any) => { try { const registeredUser = await register( email, username, password, mobileNumber, ownerName ); console.log("action user register", registeredUser); } catch (e) { console.log("Error in owner register action ", e.message); // dispatch(authActions.authError()); } }; }; export const loadUser = () => async (dispatch: any) => { console.log("loading user ....."); try { const loggedUser = await loadUserByToken(); console.log('loaded user data : ',{ ...loggedUser }); dispatch( authActions.loadUser({ role: loggedUser.data.role, user: loggedUser.data.username, }) ); } catch (e) { console.log("error user loading : ", e); // dispatch(authActions.authError()); } }; const login = async (username: string, password: string) => { const response = await Auth.login({ username, password }); if (!response) { throw new Error("Could not login right now"); } return response; }; const register = async ( email: string, username: string, password: string, mobileNumber: string, ownerName: string ) => { const role = "OWNER"; const response = await Auth.register({ email, username, password, role, mobileNumber, ownerName, }); if (!response) { throw new Error("Could not login right now"); } return response; }; const loadUserByToken = async () => { const response = await Auth.loadUser(); if (!response) { throw new Error("Could not login right now"); } return response; };