From dc779da68138593ffd73856b72ea708aa450f479 Mon Sep 17 00:00:00 2001 From: p2405951 Date: Fri, 13 Mar 2026 14:15:51 +0100 Subject: [PATCH 1/9] remove irrelevant comment + disturbing variables --- src/pages/Profile/ProfilePage.tsx | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/pages/Profile/ProfilePage.tsx b/src/pages/Profile/ProfilePage.tsx index 4035569..9e2b576 100644 --- a/src/pages/Profile/ProfilePage.tsx +++ b/src/pages/Profile/ProfilePage.tsx @@ -1,5 +1,4 @@ import getXSRFToken from "../../utils/getXSRF.js"; -// import fetchWrapper from "../../utils/fetchWrapper"; import {useContext, useEffect, useState} from "react"; import styles from "./ProfilePage.module.css"; import {AuthContext} from "../../contexts/auth/AuthContext"; @@ -11,11 +10,9 @@ import {useNavigate} from "react-router"; import {useRef} from "react"; import getUserById from "../../utils/users/getUserById.js"; import ManageMember from "./components/manageMember/ManageMember.jsx"; - import uploadProfilePhoto from "../../utils/users/uploadProfilePhoto"; import deleteProfilePhoto from "../../utils/users/deleteProfilePhoto.js"; - interface TaskType { id: number; name: string; @@ -58,8 +55,6 @@ function ProfilePage() { const { user, update } = useContext(AuthContext) as AuthContextType; const [profileUser, setProfileUser] = useState(null); const [profilePicture, setProfilePicture] = useState(null); - const [error, setError] = useState(null); - const [success, setSuccess] = useState(null); const fileInputRef = useRef(null); const isOwnProfile = !id || user?.id.toString() === id; @@ -74,16 +69,14 @@ function ProfilePage() { return; } if (res.status !== 200) { - console.error("Erreur lors du chargement du profil", res); + console.log("Erreur lors du chargement du profil", res); return; } setProfileUser(res.data); } else { - //update(); setProfileUser(user); if (user?.profile_photo_path) { setProfilePicture(`${import.meta.env.VITE_API_URL}/storage/${user.profile_photo_path}`); - //setProfilePicture(`${import.meta.env.VITE_API_URL}/${user.profile_photo_path}`); } } })(); @@ -103,17 +96,13 @@ function ProfilePage() { const res = await uploadProfilePhoto(file); if (res.ok) { setProfilePicture(`${import.meta.env.VITE_API_URL}/storage/${res.data.profile_photo_path}`); - //setProfilePicture(`${import.meta.env.VITE_API_URL}/${res.data.profile_photo_path}`); - setSuccess("Photo mise à jour !"); - setError(null); + console.log("Photo mise à jour") await update(); } else { - setError(res.data?.message || res.error || "Erreur lors de l'upload."); - setSuccess(null); + console.log(res.data?.message || res.error || "Erreur lors de l'upload."); } } catch (err) { - setError("Erreur réseau."); - setSuccess(null); + console.log("Erreur réseau."); } }; const handleDeletePicture = async () => { @@ -154,8 +143,6 @@ function ProfilePage() { accept="image/*" style={{ display: "none" }} /> - {error &&

{error}

} - {success &&

{success}

}
From 664ebf1e529178c3776df17092720ff40ad84a49 Mon Sep 17 00:00:00 2001 From: p2405951 Date: Fri, 13 Mar 2026 14:23:09 +0100 Subject: [PATCH 2/9] edit interface TS --- src/components/ui/input/input.tsx | 24 +++++++------ src/contexts/events/EventContext.ts | 5 --- .../pendingMembers/PendingMembers.jsx | 2 -- .../Home/components/EventList/eventList.tsx | 35 ------------------- src/pages/Profile/ProfilePage.module.css | 5 --- src/utils/date/formatDateLetter.ts | 32 ----------------- src/utils/getUser.js | 2 +- 7 files changed, 14 insertions(+), 91 deletions(-) diff --git a/src/components/ui/input/input.tsx b/src/components/ui/input/input.tsx index 0cc1e7f..07099cb 100644 --- a/src/components/ui/input/input.tsx +++ b/src/components/ui/input/input.tsx @@ -11,14 +11,14 @@ interface TextInputProps extends InputHTMLAttributes { } const TextInput = ({ - placeholder, - onChange, - value, - borderStyle = "square", - password, - className = "", - ...props - }: TextInputProps) => { + placeholder = "", + onChange, + value = "", + borderStyle = "square", + password = false, + className = "", + ...props +}: TextInputProps) => { const [showPassword, setShowPassword] = useState(false); let inputBorderStyle = styles.square; @@ -28,15 +28,16 @@ const TextInput = ({ setShowPassword((prev) => !prev); }; - if (password) + if (password) { return (
-
); + } return ( { - // Vérifie explicitement que `events` est un tableau avant de trier - if (!Array.isArray(events)) return []; - return [...events].sort( - (a, b) => new Date(a.start) - new Date(b.start) - ); - }, [events]); - - return ( -
-

Liste des événements à venir

- {sortedEvents.length > 0 ? ( -
- {sortedEvents.map((eventGroup, index) => ( - - ))} -
- ) : ( -

Aucun événement planifié pour l'instant.

- )} -
- ); -} - -export default EventList;*/ import { useMemo, useContext } from "react"; import styles from "./eventList.module.css"; import EventItem from "./eventItem"; diff --git a/src/pages/Profile/ProfilePage.module.css b/src/pages/Profile/ProfilePage.module.css index 2bcecee..a47a7a7 100644 --- a/src/pages/Profile/ProfilePage.module.css +++ b/src/pages/Profile/ProfilePage.module.css @@ -1,4 +1,3 @@ -/* Conteneur principal */ .container { width: 100%; padding: 12px; @@ -113,7 +112,6 @@ margin: 0; } -/* Conteneur des informations principales */ .topDescription { display: flex; flex-direction: column; @@ -122,14 +120,12 @@ margin-bottom: 20px; } -/* Bloc d'informations */ .infoBlock { width: 100%; padding: 12px; box-sizing: border-box; } -/* Conteneur pour les paramètres */ .settingImage { width: 100%; display: flex; @@ -137,7 +133,6 @@ margin-top: 16px; } -/* Adaptation pour tablette et PC */ @media (min-width: 768px) { .contentWrapper { flex-direction: row; diff --git a/src/utils/date/formatDateLetter.ts b/src/utils/date/formatDateLetter.ts index f4c3f91..1da9160 100644 --- a/src/utils/date/formatDateLetter.ts +++ b/src/utils/date/formatDateLetter.ts @@ -1,35 +1,3 @@ - - -/*export function formatDateLetter(d) { - if (!d) return "Date inconnue"; - - const dateObj = new Date(d); - if (isNaN(dateObj.getTime())) return "Date invalide"; - - const monthNames = [ - "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", - "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" - ]; - - const day = dateObj.getDate().toString().padStart(2, "0"); - const month = monthNames[dateObj.getMonth()]; - const year = dateObj.getFullYear(); - const hours = dateObj.getHours().toString().padStart(2, "0"); - const minutes = dateObj.getMinutes().toString().padStart(2, "0"); - - return `${day} ${month} ${year} à ${hours}:${minutes}`; -} - - -export function formatDateLetterJS(d) { - const monthNames = [ - "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", - "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" - ]; - const [year, month, day] = d.split('-'); - return `${day} ${monthNames[parseInt(month) - 1]} ${year}`; -}*/ - export function formatDateLetter(d: string | Date | null | undefined): string { if (!d) return "Date inconnue"; diff --git a/src/utils/getUser.js b/src/utils/getUser.js index 6d71295..7a485b8 100644 --- a/src/utils/getUser.js +++ b/src/utils/getUser.js @@ -2,4 +2,4 @@ import fetchWrapper from "./fetchWrapper.js"; export default async function getUser() { return fetchWrapper("/api/users/me", null, "GET"); -} +} \ No newline at end of file From 0f11ec641a26dcfb7138868602ec93c3ef3712e7 Mon Sep 17 00:00:00 2001 From: p2405951 Date: Fri, 13 Mar 2026 15:13:16 +0100 Subject: [PATCH 3/9] convert to TS --- src/contexts/Auth/AuthContext.ts | 1 + src/pages/Login/LoginPage.tsx | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 src/pages/Login/LoginPage.tsx diff --git a/src/contexts/Auth/AuthContext.ts b/src/contexts/Auth/AuthContext.ts index ed005d1..3e3142c 100644 --- a/src/contexts/Auth/AuthContext.ts +++ b/src/contexts/Auth/AuthContext.ts @@ -21,6 +21,7 @@ export interface User { export interface AuthContextType { user: User | null; + loading: boolean; update: () => void; login: (email: string, password: string) => Promise<{ status: number }>; } diff --git a/src/pages/Login/LoginPage.tsx b/src/pages/Login/LoginPage.tsx new file mode 100644 index 0000000..9868eaa --- /dev/null +++ b/src/pages/Login/LoginPage.tsx @@ -0,0 +1,28 @@ +import styles from "./LoginPage.module.css"; +import LoginForm from "./components/LoginForm/LoginForm"; +import Background from "../../components/Background/Background.jsx"; +import { useEffect, useContext } from "react"; +import { AuthContext, AuthContextType } from "../../../src/contexts/Auth/AuthContext"; +import { useNavigate } from "react-router"; + +function LoginPage() { + const { user, loading } = useContext(AuthContext) as AuthContextType; + const navigate = useNavigate(); + + useEffect(() => { + if (!loading && user) { + navigate("/"); + } + }, [loading, user, navigate]); + + return ( + +
+

Connexion

+ +
+
+ ); +} + +export default LoginPage; \ No newline at end of file From 8d21eb7a7797788b18030691116c4e7bb32ded45 Mon Sep 17 00:00:00 2001 From: p2405951 Date: Fri, 13 Mar 2026 15:16:50 +0100 Subject: [PATCH 4/9] convert login.js to TS --- src/utils/auth/login.js | 13 ------------- src/utils/auth/login.ts | 14 ++++++++++++++ src/utils/fetchWrapper.ts | 40 --------------------------------------- 3 files changed, 14 insertions(+), 53 deletions(-) delete mode 100644 src/utils/auth/login.js create mode 100644 src/utils/auth/login.ts diff --git a/src/utils/auth/login.js b/src/utils/auth/login.js deleted file mode 100644 index 1d99d02..0000000 --- a/src/utils/auth/login.js +++ /dev/null @@ -1,13 +0,0 @@ -import fetchWrapper from "../fetchWrapper.js"; -import getXSRFToken from "../getXSRF.js"; - -export default async function login(email, password) { - const csrfToken = await getXSRFToken(); - - return fetchWrapper( - "/api/users/login", - { email, password }, - "POST", - { "X-XSRF-TOKEN": csrfToken } - ); -} diff --git a/src/utils/auth/login.ts b/src/utils/auth/login.ts new file mode 100644 index 0000000..3c7c6e2 --- /dev/null +++ b/src/utils/auth/login.ts @@ -0,0 +1,14 @@ +import fetchWrapper from "../fetchWrapper"; +import getXSRFToken from "../getXSRF"; + + + +export default async function login(email: string, password: string) { + const csrfToken: string = await getXSRFToken(); + return fetchWrapper( + "/api/users/login", + { email, password }, + "POST", + { "X-XSRF-TOKEN": csrfToken } + ); +} \ No newline at end of file diff --git a/src/utils/fetchWrapper.ts b/src/utils/fetchWrapper.ts index a130373..287e683 100644 --- a/src/utils/fetchWrapper.ts +++ b/src/utils/fetchWrapper.ts @@ -1,43 +1,3 @@ -/*export default async function fetchWrapper(path,data = null,method = "GET",headers = {}) { - try { - const res = await fetch( - `${import.meta.env.VITE_API_URL}${path}`, - { - method, - credentials: "include", - headers: { - "Accept": "application/json", - "Content-Type": "application/json", - ...headers, - }, - body: data ? JSON.stringify(data) : null, - } - ); - - let responseData = null; - - try { - responseData = await res.json(); - } catch (_) { - responseData = null; - } - - return { - status: res.status, - data: responseData, - }; - - } catch (err) { - console.error("❌ Erreur réseau :", err); - - return { - status: 0, - data: { - message: "Network error", - }, - }; - } -}*/ interface FetchResponse { status: number; From 4bb0ed60ad96480bf9be822d5fd08c5b7189d09f Mon Sep 17 00:00:00 2001 From: p2405951 Date: Fri, 13 Mar 2026 15:27:42 +0100 Subject: [PATCH 5/9] refactor: remove .js extensions from imports --- src/pages/Admin/AdminPage.jsx | 6 +-- src/utils/auth/{logout.js => logout.ts} | 0 src/utils/fetchWrapper.ts | 43 +------------------- src/utils/{getRoles.js => getRoles.ts} | 0 src/utils/{getUser.js => getUser.ts} | 0 src/utils/{register.js => register.ts} | 6 +-- src/utils/{scrollToTop.js => scrollToTop.ts} | 0 src/utils/users/adminCreateUser.ts | 4 +- src/utils/users/deactivateUser.js | 4 +- src/utils/users/deleteOtherUser.js | 4 +- src/utils/users/deleteProfilePhoto.ts | 2 +- src/utils/users/getAllUsers.js | 2 +- src/utils/users/getUserById.js | 2 +- src/utils/users/getUserToValidate.js | 2 +- src/utils/users/modifyRole.js | 4 +- src/utils/users/uploadProfilePhoto.ts | 2 +- src/utils/users/validateUser.js | 4 +- 17 files changed, 22 insertions(+), 63 deletions(-) rename src/utils/auth/{logout.js => logout.ts} (100%) rename src/utils/{getRoles.js => getRoles.ts} (100%) rename src/utils/{getUser.js => getUser.ts} (100%) rename src/utils/{register.js => register.ts} (52%) rename src/utils/{scrollToTop.js => scrollToTop.ts} (100%) diff --git a/src/pages/Admin/AdminPage.jsx b/src/pages/Admin/AdminPage.jsx index 7d36503..5765849 100644 --- a/src/pages/Admin/AdminPage.jsx +++ b/src/pages/Admin/AdminPage.jsx @@ -1,8 +1,8 @@ import { useContext } from "react"; import styles from "./AdminPage.module.css"; -import IncompleteEvents from "./components/IncompleteEvent/IncompleteEvent.jsx"; -import PendingMembers from "./components/PendingMembers/PendingMembers.jsx"; -import { AuthContext } from "../../contexts/Auth/AuthContext.js"; +import IncompleteEvents from "./components/IncompleteEvent/IncompleteEvent"; +import PendingMembers from "./components/PendingMembers/PendingMembers"; +import { AuthContext } from "../../contexts/Auth/AuthContext"; import { useNavigate } from "react-router"; import RegisterMember from "./components/RegisterMember/RegisterMember"; diff --git a/src/utils/auth/logout.js b/src/utils/auth/logout.ts similarity index 100% rename from src/utils/auth/logout.js rename to src/utils/auth/logout.ts diff --git a/src/utils/fetchWrapper.ts b/src/utils/fetchWrapper.ts index a130373..4f04e5e 100644 --- a/src/utils/fetchWrapper.ts +++ b/src/utils/fetchWrapper.ts @@ -1,44 +1,3 @@ -/*export default async function fetchWrapper(path,data = null,method = "GET",headers = {}) { - try { - const res = await fetch( - `${import.meta.env.VITE_API_URL}${path}`, - { - method, - credentials: "include", - headers: { - "Accept": "application/json", - "Content-Type": "application/json", - ...headers, - }, - body: data ? JSON.stringify(data) : null, - } - ); - - let responseData = null; - - try { - responseData = await res.json(); - } catch (_) { - responseData = null; - } - - return { - status: res.status, - data: responseData, - }; - - } catch (err) { - console.error("❌ Erreur réseau :", err); - - return { - status: 0, - data: { - message: "Network error", - }, - }; - } -}*/ - interface FetchResponse { status: number; data: T | null; @@ -79,7 +38,7 @@ export default async function fetchWrapper( }; } catch (err) { - console.error("❌ Erreur réseau :", err); + console.error("Erreur réseau :", err); return { status: 0, diff --git a/src/utils/getRoles.js b/src/utils/getRoles.ts similarity index 100% rename from src/utils/getRoles.js rename to src/utils/getRoles.ts diff --git a/src/utils/getUser.js b/src/utils/getUser.ts similarity index 100% rename from src/utils/getUser.js rename to src/utils/getUser.ts diff --git a/src/utils/register.js b/src/utils/register.ts similarity index 52% rename from src/utils/register.js rename to src/utils/register.ts index 489f07c..69a983c 100644 --- a/src/utils/register.js +++ b/src/utils/register.ts @@ -1,7 +1,7 @@ -import fetchWrapper from "./fetchWrapper.js"; -import getXSRFToken from "./getXSRF.js"; +import fetchWrapper from "./fetchWrapper"; +import getXSRFToken from "./getXSRF"; -export default async function register(email, password, name, lastname, phone) { +export default async function register(email:string, password:string, name:string, lastname:string, phone:string) { const csrfToken = await getXSRFToken(); return fetchWrapper( diff --git a/src/utils/scrollToTop.js b/src/utils/scrollToTop.ts similarity index 100% rename from src/utils/scrollToTop.js rename to src/utils/scrollToTop.ts diff --git a/src/utils/users/adminCreateUser.ts b/src/utils/users/adminCreateUser.ts index 01860d3..5577840 100644 --- a/src/utils/users/adminCreateUser.ts +++ b/src/utils/users/adminCreateUser.ts @@ -1,5 +1,5 @@ -import fetchWrapper from "../fetchWrapper.js"; -import getXSRFToken from "../getXSRF.js"; +import fetchWrapper from "../fetchWrapper"; +import getXSRFToken from "../getXSRF"; import Response from "../../interfaces/response.interface"; export default async function adminCreateUser(email: string, name: string, lastname: string, phone: string): Promise { diff --git a/src/utils/users/deactivateUser.js b/src/utils/users/deactivateUser.js index fdf4c44..aa38680 100644 --- a/src/utils/users/deactivateUser.js +++ b/src/utils/users/deactivateUser.js @@ -1,5 +1,5 @@ -import fetchWrapper from "../fetchWrapper.js"; -import getXSRFToken from "../getXSRF.js"; +import fetchWrapper from "../fetchWrapper"; +import getXSRFToken from "../getXSRF"; export default async function deactivateUser(userId) { const csrfToken = await getXSRFToken(); diff --git a/src/utils/users/deleteOtherUser.js b/src/utils/users/deleteOtherUser.js index ece6425..649945f 100644 --- a/src/utils/users/deleteOtherUser.js +++ b/src/utils/users/deleteOtherUser.js @@ -1,5 +1,5 @@ -import fetchWrapper from "../fetchWrapper.js"; -import getXSRFToken from "../getXSRF.js"; +import fetchWrapper from "../fetchWrapper"; +import getXSRFToken from "../getXSRF"; export default async function deleteOtherUser(userId) { const csrfToken = await getXSRFToken(); diff --git a/src/utils/users/deleteProfilePhoto.ts b/src/utils/users/deleteProfilePhoto.ts index a5e830f..ca55ef4 100644 --- a/src/utils/users/deleteProfilePhoto.ts +++ b/src/utils/users/deleteProfilePhoto.ts @@ -1,4 +1,4 @@ -import getXSRFToken from "../getXSRF.js"; +import getXSRFToken from "../getXSRF"; export default async function deleteProfilePhoto(): Promise<{ status: number; ok: boolean; data?: any; error?: string }> { try { diff --git a/src/utils/users/getAllUsers.js b/src/utils/users/getAllUsers.js index 584c39f..1b75dc9 100644 --- a/src/utils/users/getAllUsers.js +++ b/src/utils/users/getAllUsers.js @@ -1,4 +1,4 @@ -import fetchWrapper from "../fetchWrapper.js"; +import fetchWrapper from "../fetchWrapper"; export default async function getAllUser() { return fetchWrapper("/api/users"); diff --git a/src/utils/users/getUserById.js b/src/utils/users/getUserById.js index e9a2c75..9acd7bd 100644 --- a/src/utils/users/getUserById.js +++ b/src/utils/users/getUserById.js @@ -1,4 +1,4 @@ -import fetchWrapper from "../fetchWrapper.js"; +import fetchWrapper from "../fetchWrapper"; export default async function getUserById(id) { return fetchWrapper(`/api/users/${id}`); diff --git a/src/utils/users/getUserToValidate.js b/src/utils/users/getUserToValidate.js index 5176f1f..b0fde0e 100644 --- a/src/utils/users/getUserToValidate.js +++ b/src/utils/users/getUserToValidate.js @@ -1,4 +1,4 @@ -import fetchWrapper from "../fetchWrapper.js"; +import fetchWrapper from "../fetchWrapper"; export default async function getUserToValidate() { return fetchWrapper("/api/users/invalid"); diff --git a/src/utils/users/modifyRole.js b/src/utils/users/modifyRole.js index 6526cea..aab4899 100644 --- a/src/utils/users/modifyRole.js +++ b/src/utils/users/modifyRole.js @@ -1,5 +1,5 @@ -import fetchWrapper from "../fetchWrapper.js"; -import getXSRFToken from "../getXSRF.js"; +import fetchWrapper from "../fetchWrapper"; +import getXSRFToken from "../getXSRF"; export default async function modifyRole(role, userId) { const csrfToken = await getXSRFToken(); diff --git a/src/utils/users/uploadProfilePhoto.ts b/src/utils/users/uploadProfilePhoto.ts index ca252a2..f3341ee 100644 --- a/src/utils/users/uploadProfilePhoto.ts +++ b/src/utils/users/uploadProfilePhoto.ts @@ -1,4 +1,4 @@ -import getXSRFToken from "../getXSRF.js"; +import getXSRFToken from "../getXSRF"; export default async function uploadProfilePhoto(file: File): Promise<{ status: number; ok: boolean; data?: any; error?: string }> { const formData = new FormData(); diff --git a/src/utils/users/validateUser.js b/src/utils/users/validateUser.js index f73b3ef..b8567bb 100644 --- a/src/utils/users/validateUser.js +++ b/src/utils/users/validateUser.js @@ -1,5 +1,5 @@ -import fetchWrapper from "../fetchWrapper.js"; -import getXSRFToken from "../getXSRF.js"; +import fetchWrapper from "../fetchWrapper"; +import getXSRFToken from "../getXSRF"; export default async function validateUser(userId) { const csrfToken = await getXSRFToken(); From e488d8c11e8175431e011caf5f436921d86b1b87 Mon Sep 17 00:00:00 2001 From: p2405951 Date: Fri, 13 Mar 2026 15:30:52 +0100 Subject: [PATCH 6/9] remove commented JS code --- src/utils/events/createEvent.js | 4 ++-- src/utils/events/deleteEvent.js | 4 ++-- src/utils/events/getAllEvents.js | 2 +- src/utils/events/getEventById.js | 2 +- src/utils/getRoles.ts | 2 +- src/utils/getUser.ts | 2 +- src/utils/getXSRF.ts | 20 ------------------- .../notifications/deleteNotificationUser.js | 2 +- src/utils/notifications/readNotifications.js | 2 +- 9 files changed, 10 insertions(+), 30 deletions(-) diff --git a/src/utils/events/createEvent.js b/src/utils/events/createEvent.js index 764d419..27da6b1 100644 --- a/src/utils/events/createEvent.js +++ b/src/utils/events/createEvent.js @@ -1,5 +1,5 @@ -import fetchWrapper from "../fetchWrapper.js"; -import getXSRFToken from "../getXSRF.js"; +import fetchWrapper from "../fetchWrapper"; +import getXSRFToken from "../getXSRF"; export default async function createEvent(name, description, start, end) { const csrfToken = await getXSRFToken(); diff --git a/src/utils/events/deleteEvent.js b/src/utils/events/deleteEvent.js index 10c8a49..2781e91 100644 --- a/src/utils/events/deleteEvent.js +++ b/src/utils/events/deleteEvent.js @@ -1,5 +1,5 @@ -import fetchWrapper from "../fetchWrapper.js"; -import getXSRFToken from "../getXSRF.js"; +import fetchWrapper from "../fetchWrapper"; +import getXSRFToken from "../getXSRF"; export default async function deleteEvent(eventId) { const csrfToken = await getXSRFToken(); diff --git a/src/utils/events/getAllEvents.js b/src/utils/events/getAllEvents.js index b35f979..79bfc67 100644 --- a/src/utils/events/getAllEvents.js +++ b/src/utils/events/getAllEvents.js @@ -1,4 +1,4 @@ -import fetchWrapper from "../fetchWrapper.js"; +import fetchWrapper from "../fetchWrapper"; export default async function getAllEvents() { return fetchWrapper("/api/events/", null, "GET"); diff --git a/src/utils/events/getEventById.js b/src/utils/events/getEventById.js index 97d6272..0b41625 100644 --- a/src/utils/events/getEventById.js +++ b/src/utils/events/getEventById.js @@ -1,4 +1,4 @@ -import fetchWrapper from "../fetchWrapper.js"; +import fetchWrapper from "../fetchWrapper"; export default async function GetEventById(id) { return fetchWrapper(`/api/events/${id}`, null, "GET"); diff --git a/src/utils/getRoles.ts b/src/utils/getRoles.ts index 99cadb6..fd8d0d4 100644 --- a/src/utils/getRoles.ts +++ b/src/utils/getRoles.ts @@ -1,4 +1,4 @@ -import fetchWrapper from "./fetchWrapper.js"; +import fetchWrapper from "./fetchWrapper"; export default async function getRoles() { return fetchWrapper("/api/roles", null, "GET"); diff --git a/src/utils/getUser.ts b/src/utils/getUser.ts index 7a485b8..811c2b5 100644 --- a/src/utils/getUser.ts +++ b/src/utils/getUser.ts @@ -1,4 +1,4 @@ -import fetchWrapper from "./fetchWrapper.js"; +import fetchWrapper from "./fetchWrapper"; export default async function getUser() { return fetchWrapper("/api/users/me", null, "GET"); diff --git a/src/utils/getXSRF.ts b/src/utils/getXSRF.ts index f96606d..c7b8048 100644 --- a/src/utils/getXSRF.ts +++ b/src/utils/getXSRF.ts @@ -1,23 +1,3 @@ -/*export default async function getXSRFToken() { - const response = await fetch(`${import.meta.env.VITE_API_URL}/sanctum/csrf-cookie`, { - method: 'GET', - credentials: 'include' - }); - - if (!response.ok && response.status !== 204) { - throw new Error(`Error : ${response.status}`); - } - - const name = 'XSRF-TOKEN'; - const value = `; ${document.cookie}`; - const parts = value.split(`; ${name}=`); - if (parts.length === 2) { - return decodeURIComponent(parts.pop().split(';').shift()); - } - - throw new Error('Error: Invalid XSRF-TOKEN'); -}*/ - export default async function getXSRFToken(): Promise { const response = await fetch(`${import.meta.env.VITE_API_URL}/sanctum/csrf-cookie`, { method: 'GET', diff --git a/src/utils/notifications/deleteNotificationUser.js b/src/utils/notifications/deleteNotificationUser.js index b7d7a93..d01c8a3 100644 --- a/src/utils/notifications/deleteNotificationUser.js +++ b/src/utils/notifications/deleteNotificationUser.js @@ -1,4 +1,4 @@ -import getXSRFToken from "../getXSRF.js"; +import getXSRFToken from "../getXSRF"; export default async function deleteNotificationUser(notificationId) { const csrfToken = await getXSRFToken(); diff --git a/src/utils/notifications/readNotifications.js b/src/utils/notifications/readNotifications.js index 0f406ce..5b7f998 100644 --- a/src/utils/notifications/readNotifications.js +++ b/src/utils/notifications/readNotifications.js @@ -1,4 +1,4 @@ -import getXSRFToken from "../getXSRF.js"; +import getXSRFToken from "../getXSRF"; export default async function readNotifications() { From e73d607ac3f1ba8f78f1dc3e04bc2d56791f40a7 Mon Sep 17 00:00:00 2001 From: p2405951 Date: Fri, 13 Mar 2026 16:42:25 +0100 Subject: [PATCH 7/9] fix adminCreateUser.ts --- src/utils/users/adminCreateUser.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/users/adminCreateUser.ts b/src/utils/users/adminCreateUser.ts index 01860d3..29b5786 100644 --- a/src/utils/users/adminCreateUser.ts +++ b/src/utils/users/adminCreateUser.ts @@ -2,7 +2,7 @@ import fetchWrapper from "../fetchWrapper.js"; import getXSRFToken from "../getXSRF.js"; import Response from "../../interfaces/response.interface"; -export default async function adminCreateUser(email: string, name: string, lastname: string, phone: string): Promise { +export default async function adminCreateUser(email: string, name: string, lastname: string, phone: string) { const csrfToken = await getXSRFToken(); return fetchWrapper( From 4325fe3dcb76e50b5f3f40fb323183db23108331 Mon Sep 17 00:00:00 2001 From: p2405951 Date: Fri, 13 Mar 2026 16:54:08 +0100 Subject: [PATCH 8/9] convert API call function to TS --- .../events/{createEvent.js => createEvent.ts} | 6 +-- .../events/{deleteEvent.js => deleteEvent.ts} | 6 +-- .../{getAllEvents.js => getAllEvents.ts} | 2 +- src/utils/events/getEventById.js | 5 --- src/utils/events/getEventById.ts | 5 +++ src/utils/{getRoles.js => getRoles.ts} | 0 src/utils/{getUser.js => getUser.ts} | 0 ...ationUser.js => deleteNotificationUser.ts} | 2 +- ...tifications.js => getUserNotifications.ts} | 0 ...dNotifications.js => readNotifications.ts} | 2 +- src/utils/{register.js => register.ts} | 2 +- src/utils/{scrollToTop.js => scrollToTop.ts} | 0 .../{deactivateUser.js => deactivateUser.ts} | 2 +- ...{deleteOtherUser.js => deleteOtherUser.ts} | 2 +- .../users/{getAllUsers.js => getAllUsers.ts} | 2 +- src/utils/users/getUserById.js | 5 --- src/utils/users/getUserById.ts | 5 +++ ...UserToValidate.js => getUserToValidate.ts} | 2 +- .../users/{modifyRole.js => modifyRole.ts} | 6 +-- src/utils/users/updateUser.ts | 37 ++++--------------- .../{validateUser.js => validateUser.ts} | 6 +-- 21 files changed, 38 insertions(+), 59 deletions(-) rename src/utils/events/{createEvent.js => createEvent.ts} (52%) rename src/utils/events/{deleteEvent.js => deleteEvent.ts} (57%) rename src/utils/events/{getAllEvents.js => getAllEvents.ts} (68%) delete mode 100644 src/utils/events/getEventById.js create mode 100644 src/utils/events/getEventById.ts rename src/utils/{getRoles.js => getRoles.ts} (100%) rename src/utils/{getUser.js => getUser.ts} (100%) rename src/utils/notifications/{deleteNotificationUser.js => deleteNotificationUser.ts} (98%) rename src/utils/notifications/{getUserNotifications.js => getUserNotifications.ts} (100%) rename src/utils/notifications/{readNotifications.js => readNotifications.ts} (94%) rename src/utils/{register.js => register.ts} (72%) rename src/utils/{scrollToTop.js => scrollToTop.ts} (100%) rename src/utils/users/{deactivateUser.js => deactivateUser.ts} (82%) rename src/utils/users/{deleteOtherUser.js => deleteOtherUser.ts} (81%) rename src/utils/users/{getAllUsers.js => getAllUsers.ts} (64%) delete mode 100644 src/utils/users/getUserById.js create mode 100644 src/utils/users/getUserById.ts rename src/utils/users/{getUserToValidate.js => getUserToValidate.ts} (68%) rename src/utils/users/{modifyRole.js => modifyRole.ts} (55%) rename src/utils/users/{validateUser.js => validateUser.ts} (56%) diff --git a/src/utils/events/createEvent.js b/src/utils/events/createEvent.ts similarity index 52% rename from src/utils/events/createEvent.js rename to src/utils/events/createEvent.ts index 764d419..eac4b13 100644 --- a/src/utils/events/createEvent.js +++ b/src/utils/events/createEvent.ts @@ -1,7 +1,7 @@ -import fetchWrapper from "../fetchWrapper.js"; -import getXSRFToken from "../getXSRF.js"; +import fetchWrapper from "../fetchWrapper"; +import getXSRFToken from "../getXSRF"; -export default async function createEvent(name, description, start, end) { +export default async function createEvent(name:string, description:string, start:string, end:string) { const csrfToken = await getXSRFToken(); return fetchWrapper( diff --git a/src/utils/events/deleteEvent.js b/src/utils/events/deleteEvent.ts similarity index 57% rename from src/utils/events/deleteEvent.js rename to src/utils/events/deleteEvent.ts index 10c8a49..7a748a1 100644 --- a/src/utils/events/deleteEvent.js +++ b/src/utils/events/deleteEvent.ts @@ -1,7 +1,7 @@ -import fetchWrapper from "../fetchWrapper.js"; -import getXSRFToken from "../getXSRF.js"; +import fetchWrapper from "../fetchWrapper"; +import getXSRFToken from "../getXSRF"; -export default async function deleteEvent(eventId) { +export default async function deleteEvent(eventId:number) { const csrfToken = await getXSRFToken(); return fetchWrapper( diff --git a/src/utils/events/getAllEvents.js b/src/utils/events/getAllEvents.ts similarity index 68% rename from src/utils/events/getAllEvents.js rename to src/utils/events/getAllEvents.ts index b35f979..79bfc67 100644 --- a/src/utils/events/getAllEvents.js +++ b/src/utils/events/getAllEvents.ts @@ -1,4 +1,4 @@ -import fetchWrapper from "../fetchWrapper.js"; +import fetchWrapper from "../fetchWrapper"; export default async function getAllEvents() { return fetchWrapper("/api/events/", null, "GET"); diff --git a/src/utils/events/getEventById.js b/src/utils/events/getEventById.js deleted file mode 100644 index 97d6272..0000000 --- a/src/utils/events/getEventById.js +++ /dev/null @@ -1,5 +0,0 @@ -import fetchWrapper from "../fetchWrapper.js"; - -export default async function GetEventById(id) { - return fetchWrapper(`/api/events/${id}`, null, "GET"); -} diff --git a/src/utils/events/getEventById.ts b/src/utils/events/getEventById.ts new file mode 100644 index 0000000..70cb6db --- /dev/null +++ b/src/utils/events/getEventById.ts @@ -0,0 +1,5 @@ +import fetchWrapper from "../fetchWrapper"; + +export default async function GetEventById(id:number) { + return fetchWrapper(`/api/events/${id}`, null, "GET"); +} diff --git a/src/utils/getRoles.js b/src/utils/getRoles.ts similarity index 100% rename from src/utils/getRoles.js rename to src/utils/getRoles.ts diff --git a/src/utils/getUser.js b/src/utils/getUser.ts similarity index 100% rename from src/utils/getUser.js rename to src/utils/getUser.ts diff --git a/src/utils/notifications/deleteNotificationUser.js b/src/utils/notifications/deleteNotificationUser.ts similarity index 98% rename from src/utils/notifications/deleteNotificationUser.js rename to src/utils/notifications/deleteNotificationUser.ts index b7d7a93..7f37034 100644 --- a/src/utils/notifications/deleteNotificationUser.js +++ b/src/utils/notifications/deleteNotificationUser.ts @@ -1,6 +1,6 @@ import getXSRFToken from "../getXSRF.js"; -export default async function deleteNotificationUser(notificationId) { +export default async function deleteNotificationUser(notificationId:number) { const csrfToken = await getXSRFToken(); try { diff --git a/src/utils/notifications/getUserNotifications.js b/src/utils/notifications/getUserNotifications.ts similarity index 100% rename from src/utils/notifications/getUserNotifications.js rename to src/utils/notifications/getUserNotifications.ts diff --git a/src/utils/notifications/readNotifications.js b/src/utils/notifications/readNotifications.ts similarity index 94% rename from src/utils/notifications/readNotifications.js rename to src/utils/notifications/readNotifications.ts index 0f406ce..5b7f998 100644 --- a/src/utils/notifications/readNotifications.js +++ b/src/utils/notifications/readNotifications.ts @@ -1,4 +1,4 @@ -import getXSRFToken from "../getXSRF.js"; +import getXSRFToken from "../getXSRF"; export default async function readNotifications() { diff --git a/src/utils/register.js b/src/utils/register.ts similarity index 72% rename from src/utils/register.js rename to src/utils/register.ts index 489f07c..e2b6599 100644 --- a/src/utils/register.js +++ b/src/utils/register.ts @@ -1,7 +1,7 @@ import fetchWrapper from "./fetchWrapper.js"; import getXSRFToken from "./getXSRF.js"; -export default async function register(email, password, name, lastname, phone) { +export default async function register(email:string, password:string, name:string, lastname:string, phone:string) { const csrfToken = await getXSRFToken(); return fetchWrapper( diff --git a/src/utils/scrollToTop.js b/src/utils/scrollToTop.ts similarity index 100% rename from src/utils/scrollToTop.js rename to src/utils/scrollToTop.ts diff --git a/src/utils/users/deactivateUser.js b/src/utils/users/deactivateUser.ts similarity index 82% rename from src/utils/users/deactivateUser.js rename to src/utils/users/deactivateUser.ts index fdf4c44..58a358c 100644 --- a/src/utils/users/deactivateUser.js +++ b/src/utils/users/deactivateUser.ts @@ -1,7 +1,7 @@ import fetchWrapper from "../fetchWrapper.js"; import getXSRFToken from "../getXSRF.js"; -export default async function deactivateUser(userId) { +export default async function deactivateUser(userId:number) { const csrfToken = await getXSRFToken(); return fetchWrapper( diff --git a/src/utils/users/deleteOtherUser.js b/src/utils/users/deleteOtherUser.ts similarity index 81% rename from src/utils/users/deleteOtherUser.js rename to src/utils/users/deleteOtherUser.ts index ece6425..9a32763 100644 --- a/src/utils/users/deleteOtherUser.js +++ b/src/utils/users/deleteOtherUser.ts @@ -1,7 +1,7 @@ import fetchWrapper from "../fetchWrapper.js"; import getXSRFToken from "../getXSRF.js"; -export default async function deleteOtherUser(userId) { +export default async function deleteOtherUser(userId:number) { const csrfToken = await getXSRFToken(); return fetchWrapper( diff --git a/src/utils/users/getAllUsers.js b/src/utils/users/getAllUsers.ts similarity index 64% rename from src/utils/users/getAllUsers.js rename to src/utils/users/getAllUsers.ts index 584c39f..1b75dc9 100644 --- a/src/utils/users/getAllUsers.js +++ b/src/utils/users/getAllUsers.ts @@ -1,4 +1,4 @@ -import fetchWrapper from "../fetchWrapper.js"; +import fetchWrapper from "../fetchWrapper"; export default async function getAllUser() { return fetchWrapper("/api/users"); diff --git a/src/utils/users/getUserById.js b/src/utils/users/getUserById.js deleted file mode 100644 index e9a2c75..0000000 --- a/src/utils/users/getUserById.js +++ /dev/null @@ -1,5 +0,0 @@ -import fetchWrapper from "../fetchWrapper.js"; - -export default async function getUserById(id) { - return fetchWrapper(`/api/users/${id}`); -} diff --git a/src/utils/users/getUserById.ts b/src/utils/users/getUserById.ts new file mode 100644 index 0000000..d08943a --- /dev/null +++ b/src/utils/users/getUserById.ts @@ -0,0 +1,5 @@ +import fetchWrapper from "../fetchWrapper"; + +export default async function getUserById(id:number) { + return fetchWrapper(`/api/users/${id}`); +} diff --git a/src/utils/users/getUserToValidate.js b/src/utils/users/getUserToValidate.ts similarity index 68% rename from src/utils/users/getUserToValidate.js rename to src/utils/users/getUserToValidate.ts index 5176f1f..b0fde0e 100644 --- a/src/utils/users/getUserToValidate.js +++ b/src/utils/users/getUserToValidate.ts @@ -1,4 +1,4 @@ -import fetchWrapper from "../fetchWrapper.js"; +import fetchWrapper from "../fetchWrapper"; export default async function getUserToValidate() { return fetchWrapper("/api/users/invalid"); diff --git a/src/utils/users/modifyRole.js b/src/utils/users/modifyRole.ts similarity index 55% rename from src/utils/users/modifyRole.js rename to src/utils/users/modifyRole.ts index 6526cea..592f739 100644 --- a/src/utils/users/modifyRole.js +++ b/src/utils/users/modifyRole.ts @@ -1,7 +1,7 @@ -import fetchWrapper from "../fetchWrapper.js"; -import getXSRFToken from "../getXSRF.js"; +import fetchWrapper from "../fetchWrapper"; +import getXSRFToken from "../getXSRF"; -export default async function modifyRole(role, userId) { +export default async function modifyRole(role:number, userId:number) { const csrfToken = await getXSRFToken(); return fetchWrapper( diff --git a/src/utils/users/updateUser.ts b/src/utils/users/updateUser.ts index 6714250..48f5b51 100644 --- a/src/utils/users/updateUser.ts +++ b/src/utils/users/updateUser.ts @@ -1,33 +1,12 @@ -/*import fetchWrapper from "../fetchWrapper.js"; -import getXSRFToken from "../getXSRF.js"; - -export default async function updateUser(name, lastname, phone) { - const csrfToken = await getXSRFToken(); - - return fetchWrapper( - "/api/users/update", - { name, lastname, phone }, - "POST", - { "X-XSRF-TOKEN": csrfToken } - ); -}*/ - import fetchWrapper from "../fetchWrapper"; import getXSRFToken from "../getXSRF"; -interface UserUpdateData { - name: string; - lastname: string; - phone: string | null; +export default async function updateUser(name: string, lastname: string, phone: string | null) { + const csrfToken = await getXSRFToken(); + return fetchWrapper( + "/api/users/update", + { name, lastname, phone }, + "POST", + { "X-XSRF-TOKEN": csrfToken } + ); } - -interface RequestHeaders { - "X-XSRF-TOKEN": string; -} -export default async function updateUser(name: string,lastname: string,phone: string | null): Promise { - const csrfToken: string = await getXSRFToken(); - const userData: UserUpdateData = {name,lastname,phone,}; - const headers: RequestHeaders = {"X-XSRF-TOKEN": csrfToken,}; - return fetchWrapper("/api/users/update",userData,"POST",headers); -} - diff --git a/src/utils/users/validateUser.js b/src/utils/users/validateUser.ts similarity index 56% rename from src/utils/users/validateUser.js rename to src/utils/users/validateUser.ts index f73b3ef..de10071 100644 --- a/src/utils/users/validateUser.js +++ b/src/utils/users/validateUser.ts @@ -1,7 +1,7 @@ -import fetchWrapper from "../fetchWrapper.js"; -import getXSRFToken from "../getXSRF.js"; +import fetchWrapper from "../fetchWrapper"; +import getXSRFToken from "../getXSRF"; -export default async function validateUser(userId) { +export default async function validateUser(userId:number) { const csrfToken = await getXSRFToken(); return fetchWrapper( From 79aeef6489d02450df17af727a1625bc80084042 Mon Sep 17 00:00:00 2001 From: T'JAMPENS QUENTIN p2406187 Date: Fri, 13 Mar 2026 17:20:03 +0100 Subject: [PATCH 9/9] Update loading on auth --- src/layout.jsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/layout.jsx b/src/layout.jsx index d4a492b..4f94287 100644 --- a/src/layout.jsx +++ b/src/layout.jsx @@ -5,13 +5,16 @@ import Background from "./components/Background/Background.jsx"; import { Navigate } from "react-router"; import { useContext} from "react"; import { AuthContext } from "./contexts/Auth/AuthContext.js"; +import Loading from "./components/ui/Loading/Loading.tsx"; function Layout(){ const { user, loading } = useContext(AuthContext); - if (loading) return

Loading

; + if (loading) return + + ; if (!user) return ; if(user && user.validate === 0) return ;