From 2eecf17d42ab962d7c0f01cf49e4ee4fe2153e27 Mon Sep 17 00:00:00 2001 From: al8763be Date: Sun, 17 Mar 2024 14:43:09 +0100 Subject: [PATCH] Login feature API --- frontend/src/API/API.ts | 72 +++++++++++++++++++++++++++++++++-------- 1 file changed, 59 insertions(+), 13 deletions(-) diff --git a/frontend/src/API/API.ts b/frontend/src/API/API.ts index ed64f71..be041f1 100644 --- a/frontend/src/API/API.ts +++ b/frontend/src/API/API.ts @@ -22,12 +22,19 @@ interface API { token: string, ): Promise>; /** Submit a weekly report */ - submitWeeklyReport(project: NewWeeklyReport, token: string): Promise>; + submitWeeklyReport( + project: NewWeeklyReport, + token: string, + ): Promise>; /** Renew the token */ renewToken(token: string): Promise>; /** Gets all the projects of a user*/ - getUserProjects(username: string, token: string): Promise>; - + getUserProjects( + username: string, + token: string, + ): Promise>; + /** Login */ + login(NewUser: NewUser): Promise>; } // Export an instance of the API @@ -55,7 +62,7 @@ export const api: API = { async removeUser( username: string, - token: string + token: string, ): Promise> { try { const response = await fetch("/api/userdelete", { @@ -80,7 +87,7 @@ export const api: API = { async createProject( project: NewProject, - token: string + token: string, ): Promise> { try { const response = await fetch("/api/project", { @@ -135,18 +142,26 @@ export const api: API = { }); if (!response.ok) { - return Promise.resolve({ success: false, message: "Failed to get user projects" }); + return Promise.resolve({ + success: false, + message: "Failed to get user projects", + }); } else { const data = (await response.json()) as Project[]; return Promise.resolve({ success: true, data }); } - } - catch (e) { - return Promise.resolve({ success: false, message: "Failed to get user projects" }); + } catch (e) { + return Promise.resolve({ + success: false, + message: "Failed to get user projects", + }); } }, - - submitWeeklyReport: function (project: NewWeeklyReport, token: string): Promise> { + + async submitWeeklyReport( + project: NewWeeklyReport, + token: string, + ): Promise> { try { return fetch("/api/submitWeeklyReport", { method: "POST", @@ -158,7 +173,10 @@ export const api: API = { }) .then((response) => { if (!response.ok) { - return { success: false, message: "Failed to submit weekly report" }; + return { + success: false, + message: "Failed to submit weekly report", + }; } else { return response.json(); } @@ -167,7 +185,35 @@ export const api: API = { return { success: true, data }; }); } catch (e) { - return Promise.resolve({ success: false, message: "Failed to submit weekly report" }); + return Promise.resolve({ + success: false, + message: "Failed to submit weekly report", + }); + } + }, + + async login(NewUser: NewUser): Promise> { + try { + const response = await fetch("/api/login", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(NewUser), + }); + + if (response) { + if (!response.ok) { + return { success: false, message: "Failed to login" }; + } else { + const data = await response.json(); + return { success: true, data }; + } + } + + return { success: false, message: "Failed to login" }; // Add return statement + } catch (e) { + return Promise.resolve({ success: false, message: "Failed to login" }); } } };