From 4d00d4b936551d87eb9f35e3673f9f51b5888db2 Mon Sep 17 00:00:00 2001 From: Mathis Date: Tue, 11 Jun 2024 16:59:02 +0200 Subject: [PATCH] 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. --- src/services/account.handler.ts | 43 ++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/src/services/account.handler.ts b/src/services/account.handler.ts index c43ff82..f8e12d3 100644 --- a/src/services/account.handler.ts +++ b/src/services/account.handler.ts @@ -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({name: "Avnyr"}) +const UserDataContext = createContext(null) +const [userData, setUserData] = useEncodedLocalStorage("user_data", null) //TODO Run register task +export async function doRegister(registerData: IApiRegisterReq): Promise { + console.trace(registerData) + try { + const ReqRes = await ApiRequest.standard.post.json("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("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 \ No newline at end of file