feat(handler): add login, registration functionality

The login and registration functionality have been implemented using the new `IApiLoginReq`, `IApiLoginRes`, `IApiRegisterReq`, `IApiRegisterRes` interfaces. These include error handling and data storing in local storage.
This commit is contained in:
Mathis H (Avnyr) 2024-06-11 16:59:02 +02:00
parent 2c333d9c00
commit 4d00d4b936
Signed by: Mathis
GPG Key ID: DD9E0666A747D126

View File

@ -2,13 +2,54 @@
import { createContext, useContext, useState } from 'react';
import {IUserData} from "@/interfaces/userdata.interface";
import {IApiLoginReq, IApiLoginRes, IApiRegisterReq, IApiRegisterRes} from "@/interfaces/api.interface";
import ApiRequest from "@/services/apiRequest";
import {useEncodedLocalStorage} from "@/services/localStorage";
const UserDataContext = createContext<IUserData>({name: "Avnyr"})
const UserDataContext = createContext<IUserData | null>(null)
const [userData, setUserData] = useEncodedLocalStorage<IUserData | null>("user_data", null)
//TODO Run register task
export async function doRegister(registerData: IApiRegisterReq): Promise<IApiRegisterRes | null> {
console.trace(registerData)
try {
const ReqRes = await ApiRequest.standard.post.json<IApiRegisterReq, IApiRegisterRes>("auth/signup", registerData)
console.trace(ReqRes.data)
if (ReqRes.data.user) {
setUserData(ReqRes.data.user)
}
ReqRes.data.message?.forEach((err)=> console.warn(err))
return ReqRes.data
} catch (error) {
console.error('Error during registration:', error);
return null
}
}
//TODO Run login task
export async function doLogin(loginData: IApiLoginReq) {
try {
const ReqRes = await ApiRequest.standard.post.json<IApiLoginReq, IApiLoginRes>("auth/login", loginData)
console.trace(ReqRes.data)
//if (ReqRes.data.user) {
// setUserData(ReqRes.data.user)
//}
ReqRes.data.message?.forEach((err)=> console.warn(err))
return ReqRes.data
} catch (err) {
console.error('Error during login:', err);
return null
}
}
//TODO Run disconnect task
export function doDisconnect() {
if (typeof window !== 'undefined') {
window.localStorage.removeItem('sub')
return true
}
console.log('Whut ? Why trying to remove an item from the localStorage when runner in SSR ?')
return false
}
//TODO Run update user data