diff --git a/src/components/Task/Task.jsx b/src/components/Task/Task.jsx index 1be1990..d14cabf 100644 --- a/src/components/Task/Task.jsx +++ b/src/components/Task/Task.jsx @@ -9,7 +9,7 @@ const Task = ({ task }) => { useEffect(() => { (async () => { const e = await getEventById(task.id); - setEvent(e); + setEvent(e.data); }) () }, []) diff --git a/src/contexts/auth/authProvider.jsx b/src/contexts/auth/authProvider.jsx index 666338f..e1d7ae3 100644 --- a/src/contexts/auth/authProvider.jsx +++ b/src/contexts/auth/authProvider.jsx @@ -12,7 +12,7 @@ export function AuthProvider({ children }) { useEffect(() => { (async () => { const u = await getUser(); - setUser(u); + setUser(u.data); setLoading(false); })(); }, []); @@ -20,7 +20,7 @@ export function AuthProvider({ children }) { const login = async (email, password) => { const res = await loginFunction(email, password); const u = res.status === 200 ? await getUser() : null; - if (u) setUser(u); + if (u) setUser(u.data); return res; }; @@ -32,7 +32,7 @@ export function AuthProvider({ children }) { const update = async () => { const u = await getUser(); - setUser(u); + setUser(u.data); } return ( diff --git a/src/contexts/eventDetail/eventDetailProvider.jsx b/src/contexts/eventDetail/eventDetailProvider.jsx index 65f1b96..c562eeb 100644 --- a/src/contexts/eventDetail/eventDetailProvider.jsx +++ b/src/contexts/eventDetail/eventDetailProvider.jsx @@ -11,8 +11,8 @@ export function EventDetailProvider({ children }) { const updateEventInfo = async (id) => { const e = await getEventById(id); - setEventInfo(e); - setTasks(e.tasks) + setEventInfo(e.data); + setTasks(e.data.tasks) } const deleteTask = async (id, eventId) => { diff --git a/src/contexts/events/EventProvider.jsx b/src/contexts/events/EventProvider.jsx index bfcbcba..378c64e 100644 --- a/src/contexts/events/EventProvider.jsx +++ b/src/contexts/events/EventProvider.jsx @@ -10,8 +10,8 @@ export function EventProvider({ children }) { const [events, setEvents] = useState([]); const updateEvent = async () => { - const data = await getAllEvents(); - setEvents(data.data); + const result = await getAllEvents(); + setEvents(result.data.data); } const addEvent = async (name, description, start, end) => { diff --git a/src/pages/Admin/components/pendingMembers/PendingMembers.jsx b/src/pages/Admin/components/pendingMembers/PendingMembers.jsx index 4d1d68f..bb1e1ac 100644 --- a/src/pages/Admin/components/pendingMembers/PendingMembers.jsx +++ b/src/pages/Admin/components/pendingMembers/PendingMembers.jsx @@ -16,7 +16,8 @@ function PendingMembers() { useEffect(() => { const fetchPendingMembers = async () => { setLoading(true); - const userIds = await getUserToValidate(); + const result = await getUserToValidate(); + const userIds = result.data if (userIds && userIds.length > 0) { const users = await Promise.all(userIds.map((id) => getUserById(id))); setPendingMembers(users.filter(Boolean)); diff --git a/src/pages/VolunteerProfile/VolunteerProfilePage.jsx b/src/pages/VolunteerProfile/VolunteerProfilePage.jsx index 62d467a..763b7f7 100644 --- a/src/pages/VolunteerProfile/VolunteerProfilePage.jsx +++ b/src/pages/VolunteerProfile/VolunteerProfilePage.jsx @@ -1,74 +1,84 @@ -import styles from "./VolunteerProfilePage.module.css" -import { useParams } from "react-router"; +import styles from "./VolunteerProfilePage.module.css"; +import { useParams, useNavigate } from "react-router"; import { useEffect, useState, useContext } from "react"; import getUserById from "../../utils/users/getUserById.js"; import formatDate from "../../utils/date/formatDate.js"; import Task from "../../components/Task/Task.jsx"; -import { useNavigate } from "react-router"; import ManageMember from "./components/manageMember/ManageMember.jsx"; import { AuthContext } from "../../contexts/auth/AuthContext.js"; export default function VolunteerProfilePage() { - - const params = useParams(); - const id = params.id; - + const { id } = useParams(); const navigate = useNavigate(); - const { user: currentUser } = useContext(AuthContext); - const [user, setUser] = useState({}); + const [user, setUser] = useState(null); useEffect(() => { (async () => { - const result = await getUserById(id); - if (result?.error === 'not_found') { + const res = await getUserById(id); + + if (res.status === 404) { navigate("/404"); - } else { - setUser(result); + return; } + + if (res.status !== 200) { + console.error("Erreur lors du chargement du profil", res); + return; + } + + setUser(res.data); })(); - }, [id]); + }, [id, navigate]); + if (!user) return null; - - return
-
-
-
- Photo de profil -
-
-
-

{user.name} {user.lastname}

- {currentUser?.isAdmin && } -
-
-
-

Role : {user.role}

-

Membre depuis : {formatDate(user.created_at)}

-
-
-

Mail : {user.email}

-

Téléphone : {user.phone === null ? "Pas de numéro enregistré" : user.phone}

-
+ return ( +
+
+
+
+ Photo de profil
-

Tâches :

- {user.tasks && user.tasks.length > 0 ? ( - user.tasks.map((task, index) => ( - - )) - ) : ( -

Aucune tâche pour le moment.

- )} +
+
+

{user.name} {user.lastname}

+ {currentUser?.isAdmin && ( + + )} +
+
+
+

Role : {user.role}

+

Membre depuis : {formatDate(user.created_at)}

+
+
+

Mail : {user.email}

+

+ Téléphone :{" "} + {user.phone ?? "Pas de numéro enregistré"} +

+
+
+ +

Tâches :

+ {user.tasks?.length > 0 ? ( + user.tasks.map((task, index) => ( + + )) + ) : ( +

Aucune tâche pour le moment.

+ )} +
-
-} \ No newline at end of file + ); +} diff --git a/src/pages/VolunteerProfile/components/manageMember/modifyrole/ModifyRole.jsx b/src/pages/VolunteerProfile/components/manageMember/modifyrole/ModifyRole.jsx index 8dc7f73..bc4d495 100644 --- a/src/pages/VolunteerProfile/components/manageMember/modifyrole/ModifyRole.jsx +++ b/src/pages/VolunteerProfile/components/manageMember/modifyrole/ModifyRole.jsx @@ -15,7 +15,8 @@ export default function ModifyRole({ user }) { useEffect(() => { getRoles().then(data => { - if (data) setRoles(data); + if (data) setRoles(data.data); + //TODO: Fermer les modal + actualiser les infos lors du changement de role }); }, []) @@ -23,7 +24,7 @@ export default function ModifyRole({ user }) { const handleRoleUpdate = async () => { const res = await modifyRole(selectedRole, user.id); - if (res.success) { + if (res.status === 200) { setDescription("Rôle modifié avec succès"); setTitle("Modification") setOpen(true); diff --git a/src/pages/Volunteers/VolunteersPage.jsx b/src/pages/Volunteers/VolunteersPage.jsx index 366dda7..169275a 100644 --- a/src/pages/Volunteers/VolunteersPage.jsx +++ b/src/pages/Volunteers/VolunteersPage.jsx @@ -6,7 +6,6 @@ import ToolBar from "../../components/ToolBar/ToolBar.jsx"; import filter from "../../utils/filter.js"; import getUserById from "../../utils/users/getUserById.js"; - function VolunteerPage() { const [filters, setFilters] = useState({ alphabetical: "asc", @@ -16,22 +15,39 @@ function VolunteerPage() { useEffect(() => { (async () => { - const ids = await getAllUser(); - const usersData = await Promise.all(ids.map(id => getUserById(id))); - setUsers(usersData); - })() - }, []) + const result = await getAllUser(); - return ( -
- -
- {filter(users, filters, "user").map((user, index) => ( - - ))} + if (result.status !== 200 || !Array.isArray(result.data)) { + console.error("Erreur lors du chargement des utilisateurs", result); + return; + } + + const usersData = await Promise.all( + result.data.map(async (id) => { + const res = await getUserById(id); + + if (res.status === 200) { + return res.data; + } + console.warn(`Utilisateur ${id} non récupéré`, res.status); + return null; + }) + ); + + setUsers(usersData.filter(Boolean)); + })(); + }, []); + + return ( +
+ +
+ {filter(users, filters, "user").map((user, index) => ( + + ))} +
-
- ); + ); } export default VolunteerPage; diff --git a/src/pages/eventDetail/components/EventTask/EventTask.jsx b/src/pages/eventDetail/components/EventTask/EventTask.jsx index 09e9af9..bbde7b6 100644 --- a/src/pages/eventDetail/components/EventTask/EventTask.jsx +++ b/src/pages/eventDetail/components/EventTask/EventTask.jsx @@ -20,7 +20,7 @@ export default function EventTask({ task, index, eventId }) { async function checkAssign() { const data = await isAssigned(task.id); - setAssigned(data?.assigned); + setAssigned(data?.data.assigned); } useEffect(() => { diff --git a/src/pages/eventDetail/components/createTaskBtn/createTaskBtn.jsx b/src/pages/eventDetail/components/createTaskBtn/createTaskBtn.jsx index fb6fac5..8862ada 100644 --- a/src/pages/eventDetail/components/createTaskBtn/createTaskBtn.jsx +++ b/src/pages/eventDetail/components/createTaskBtn/createTaskBtn.jsx @@ -20,7 +20,7 @@ export default function CreateTaskBtn({ id }) { const { updateEventInfo } = useContext(EventDetailContext) const createTask = async () => { - const success = await createTaskApi({ + const data = await createTaskApi({ eventId: id, name: taskName, description: taskDescription, @@ -30,7 +30,7 @@ export default function CreateTaskBtn({ id }) { maxParticipants, }); - if (success) { + if (data?.status === 200) { setOpenTaskModal(false); setTaskName(""); setTaskDescription(""); diff --git a/src/pages/eventDetail/components/deleteTaskBtn/deleteTaskBtn.jsx b/src/pages/eventDetail/components/deleteTaskBtn/deleteTaskBtn.jsx index 52cb3d8..fdad16f 100644 --- a/src/pages/eventDetail/components/deleteTaskBtn/deleteTaskBtn.jsx +++ b/src/pages/eventDetail/components/deleteTaskBtn/deleteTaskBtn.jsx @@ -21,7 +21,7 @@ export default function DeleteTaskBtn({ taskId, eventId, taskName }) {

Etes-vous sur de vouloir supprimer la tâche {taskName} ?

- +
diff --git a/src/utils/auth/login.js b/src/utils/auth/login.js index 96dc5ce..1d99d02 100644 --- a/src/utils/auth/login.js +++ b/src/utils/auth/login.js @@ -1,32 +1,13 @@ +import fetchWrapper from "../fetchWrapper.js"; import getXSRFToken from "../getXSRF.js"; export default async function login(email, password) { const csrfToken = await getXSRFToken(); - try { - const response = await fetch(`${import.meta.env.VITE_API_URL}/api/users/login`, { - method: 'POST', - credentials: 'include', - headers: { - 'Content-Type': 'application/json', - 'X-XSRF-TOKEN': csrfToken, - 'Accept': 'application/json' - }, - body: JSON.stringify({ email, password }) - }); - - const data = await response.json(); - - if (!response.ok) { - return { - status: response.status, - errors: data.errors || data.message - }; - } - - return { status: response.status, data }; - - } catch (error) { - return { status: 500, error }; - } + return fetchWrapper( + "/api/users/login", + { email, password }, + "POST", + { "X-XSRF-TOKEN": csrfToken } + ); } diff --git a/src/utils/auth/logout.js b/src/utils/auth/logout.js index f45db75..5ea8a91 100644 --- a/src/utils/auth/logout.js +++ b/src/utils/auth/logout.js @@ -1,28 +1,13 @@ +import fetchWrapper from "../fetchWrapper.js"; import getXSRFToken from "../getXSRF.js"; export default async function logout() { - const csrfToken = await getXSRFToken(); - try { - const response = await fetch(`${import.meta.env.VITE_API_URL}/api/users/logout`, { - method: 'POST', - credentials: 'include', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'X-XSRF-TOKEN': csrfToken - }, - }); - - console.log('Code HTTP :', response.status); - - if (!response.ok) { - throw new Error(`Erreur HTTP ${response.status}`); - } - - return { status: response.status }; - } catch (error) { - return error; - } + return fetchWrapper( + "/api/users/logout", + null, + "POST", + { "X-XSRF-TOKEN": csrfToken } + ); } diff --git a/src/utils/events/createEvent.js b/src/utils/events/createEvent.js index 66ece42..ba073fe 100644 --- a/src/utils/events/createEvent.js +++ b/src/utils/events/createEvent.js @@ -1,36 +1,13 @@ +import fetchWrapper from "../fetchWrapper.js"; import getXSRFToken from "../getXSRF.js"; export default async function createEvent(name, description, start, end) { const csrfToken = await getXSRFToken(); - try { - const response = await fetch(`${import.meta.env.VITE_API_URL}/api/events/create`, { - method: 'POST', - credentials: 'include', - headers: { - 'Content-Type': 'application/json', - 'X-XSRF-TOKEN': csrfToken, - 'Accept': 'application/json' - }, - body: JSON.stringify({ name, description, start, end }), - }); - - const data = await response.json(); - - if (!response.ok) { - if (response.status === 422) { - return { - status: 422, - errors: data.errors - }; - } - - throw new Error(`Erreur HTTP ${response.status}`); - } - - return { status: response.status, data }; - - } catch (error) { - return { status: "error", error }; - } + return fetchWrapper( + "/api/events/create", + {name, description, start, end}, + "POST", + {"X-XSRF-TOKEN": csrfToken} + ); } diff --git a/src/utils/events/deleteEvent.js b/src/utils/events/deleteEvent.js index 54a36c5..10c8a49 100644 --- a/src/utils/events/deleteEvent.js +++ b/src/utils/events/deleteEvent.js @@ -1,38 +1,13 @@ +import fetchWrapper from "../fetchWrapper.js"; import getXSRFToken from "../getXSRF.js"; export default async function deleteEvent(eventId) { const csrfToken = await getXSRFToken(); - try { - const response = await fetch(`${import.meta.env.VITE_API_URL}/api/events/${eventId}`, { - method: 'DELETE', - credentials: 'include', - headers: { - 'Content-Type': 'application/json', - 'X-XSRF-TOKEN': csrfToken, - 'Accept': 'application/json' - }, - body: JSON.stringify({ - id: eventId, - }), - }); - - const data = await response.json(); - - if (!response.ok) { - if (response.status === 422) { - return { - status: 422, - errors: data.errors - }; - } - - throw new Error(`Erreur HTTP ${response.status}`); - } - - return { status: response.status, data }; - - } catch (error) { - return { status: "error", error }; - } + return fetchWrapper( + `/api/events/${eventId}`, + {id: eventId}, + "DELETE", + {"X-XSRF-TOKEN": csrfToken} + ); } diff --git a/src/utils/events/getAllEvents.js b/src/utils/events/getAllEvents.js index 7529282..b35f979 100644 --- a/src/utils/events/getAllEvents.js +++ b/src/utils/events/getAllEvents.js @@ -1,23 +1,5 @@ +import fetchWrapper from "../fetchWrapper.js"; + export default async function getAllEvents() { - - try { - const res = await fetch(`${import.meta.env.VITE_API_URL}/api/events/`, { - method: 'GET', - credentials: 'include', - headers: { - 'Accept': 'application/json' - } - }); - - if (!res.ok) { - throw new Error(`Erreur serveur : ${res.status}`); - } - - const data = await res.json(); - return data; - } catch (err) { - console.error('Erreur :', err); - return null; - } - -} \ No newline at end of file + return fetchWrapper("/api/events/", null, "GET"); +} diff --git a/src/utils/events/getEventById.js b/src/utils/events/getEventById.js index 4205125..97d6272 100644 --- a/src/utils/events/getEventById.js +++ b/src/utils/events/getEventById.js @@ -1,23 +1,5 @@ +import fetchWrapper from "../fetchWrapper.js"; + export default async function GetEventById(id) { - - try { - const res = await fetch(`${import.meta.env.VITE_API_URL}/api/events/${id}`, { - method: 'GET', - credentials: 'include', - headers: { - 'Accept': 'application/json' - } - }); - - if (!res.ok) { - throw new Error(`Erreur serveur : ${res.status}`); - } - - const data = await res.json(); - return data; - } catch (err) { - console.error('Erreur :', err); - return null; - } - -} \ No newline at end of file + return fetchWrapper(`/api/events/${id}`, null, "GET"); +} diff --git a/src/utils/fetchWrapper.js b/src/utils/fetchWrapper.js new file mode 100644 index 0000000..aa9f0a0 --- /dev/null +++ b/src/utils/fetchWrapper.js @@ -0,0 +1,45 @@ +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", + }, + }; + } +} diff --git a/src/utils/getRoles.js b/src/utils/getRoles.js index 5d6d3d6..99cadb6 100644 --- a/src/utils/getRoles.js +++ b/src/utils/getRoles.js @@ -1,21 +1,5 @@ +import fetchWrapper from "./fetchWrapper.js"; + export default async function getRoles() { - try { - const res = await fetch(`${import.meta.env.VITE_API_URL}/api/roles`, { - method: 'GET', - credentials: 'include', - headers: { - 'Accept': 'application/json' - } - }); - - if (!res.ok) { - throw new Error(`Erreur serveur : ${res.status}`); - } - - const data = await res.json(); - return data; - } catch (err) { - console.error('Erreur :', err); - return null; - } + return fetchWrapper("/api/roles", null, "GET"); } diff --git a/src/utils/getUser.js b/src/utils/getUser.js index 824f1d2..6d71295 100644 --- a/src/utils/getUser.js +++ b/src/utils/getUser.js @@ -1,21 +1,5 @@ +import fetchWrapper from "./fetchWrapper.js"; + export default async function getUser() { - try { - const res = await fetch(`${import.meta.env.VITE_API_URL}/api/users/me`, { - method: 'GET', - credentials: 'include', - headers: { - 'Accept': 'application/json' - } - }); - - if (!res.ok) { - throw new Error(`Erreur serveur : ${res.status}`); - } - - const data = await res.json(); - return data; - } catch (err) { - console.error('Erreur :', err); - return null; - } + return fetchWrapper("/api/users/me", null, "GET"); } diff --git a/src/utils/register.js b/src/utils/register.js index b1c5682..489f07c 100644 --- a/src/utils/register.js +++ b/src/utils/register.js @@ -1,36 +1,13 @@ +import fetchWrapper from "./fetchWrapper.js"; import getXSRFToken from "./getXSRF.js"; export default async function register(email, password, name, lastname, phone) { const csrfToken = await getXSRFToken(); - try { - const response = await fetch(`${import.meta.env.VITE_API_URL}/api/users/register`, { - method: 'POST', - credentials: 'include', - headers: { - 'Content-Type': 'application/json', - 'X-XSRF-TOKEN': csrfToken, - 'Accept': 'application/json' - }, - body: JSON.stringify({ email, password, name, lastname, phone }), - }); - - const data = await response.json(); - - if (!response.ok) { - if (response.status === 422) { - return { - status: 422, - errors: data.errors - }; - } - - throw new Error(`Erreur HTTP ${response.status}`); - } - - return { status: response.status, data }; - - } catch (error) { - return { status: "error", error }; - } + return fetchWrapper( + "/api/users/register", + { email, password, name, lastname, phone }, + "POST", + { "X-XSRF-TOKEN": csrfToken } + ); } diff --git a/src/utils/tasks/assign.js b/src/utils/tasks/assign.js index 1616e6c..cb85dd3 100644 --- a/src/utils/tasks/assign.js +++ b/src/utils/tasks/assign.js @@ -1,37 +1,13 @@ +import fetchWrapper from "../fetchWrapper.js"; import getXSRFToken from "../getXSRF.js"; export default async function assign(taskId) { const csrfToken = await getXSRFToken(); - try { - const res = await fetch( - `${import.meta.env.VITE_API_URL}/api/events/task/assign`, - { - method: 'POST', - credentials: 'include', - headers: { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'X-XSRF-TOKEN': csrfToken, - }, - body: JSON.stringify({ - task_id: taskId - }), - } - ); - - const data = await res.json(); - - return { - status: res.status, - message: data?.message ?? null, - }; - - } catch (err) { - console.error("❌ Erreur réseau :", err); - return { - status: 0, - message: "Network error", - }; - } -} \ No newline at end of file + return fetchWrapper( + "/api/events/task/assign", + {task_id: taskId}, + "POST", + {"X-XSRF-TOKEN": csrfToken} + ); +} diff --git a/src/utils/tasks/createTask.js b/src/utils/tasks/createTask.js index 25da52a..a023d70 100644 --- a/src/utils/tasks/createTask.js +++ b/src/utils/tasks/createTask.js @@ -1,3 +1,4 @@ +import fetchWrapper from "../fetchWrapper.js"; import getXSRFToken from "../getXSRF.js"; export default async function createTask({ @@ -11,39 +12,18 @@ export default async function createTask({ }) { const csrfToken = await getXSRFToken(); - try { - const res = await fetch( - `${import.meta.env.VITE_API_URL}/api/events/task`, - { - method: "POST", - credentials: "include", - headers: { - Accept: "application/json", - "Content-Type": "application/json", - "X-XSRF-TOKEN": csrfToken, - }, - body: JSON.stringify({ - event_id: eventId, - name, - description, - start, - end, - location, - max_participants: maxParticipants, - }), - } - ); - - if (!res.ok) { - const errorData = await res.json(); - return false; - } - - const data = await res.json(); - return true; - - } catch (err) { - console.log("❌ Erreur réseau :", err); - return false; - } + return fetchWrapper( + "/api/events/task", + { + event_id: eventId, + name, + description, + start, + end, + location, + max_participants: maxParticipants, + }, + "POST", + {"X-XSRF-TOKEN": csrfToken} + ); } diff --git a/src/utils/tasks/deleteTask.js b/src/utils/tasks/deleteTask.js index e8385c6..2641307 100644 --- a/src/utils/tasks/deleteTask.js +++ b/src/utils/tasks/deleteTask.js @@ -1,37 +1,13 @@ +import fetchWrapper from "../fetchWrapper.js"; import getXSRFToken from "../getXSRF.js"; export default async function deleteTask(taskId) { const csrfToken = await getXSRFToken(); - try { - const res = await fetch( - `${import.meta.env.VITE_API_URL}/api/events/tasks/${taskId}`, - { - method: 'DELETE', - credentials: 'include', - headers: { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'X-XSRF-TOKEN': csrfToken, - }, - body: JSON.stringify({ - task_id: taskId - }), - } - ); - - const data = await res.json(); - - return { - status: res.status, - message: data?.message ?? null, - }; - - } catch (err) { - console.error("❌ Erreur réseau :", err); - return { - status: 0, - message: "Network error", - }; - } -} \ No newline at end of file + return fetchWrapper( + `/api/events/tasks/${taskId}`, + { task_id: taskId }, + "DELETE", + { "X-XSRF-TOKEN": csrfToken } + ); +} diff --git a/src/utils/tasks/isAssigned.js b/src/utils/tasks/isAssigned.js index a7f36a1..99ce6ff 100644 --- a/src/utils/tasks/isAssigned.js +++ b/src/utils/tasks/isAssigned.js @@ -1,24 +1,9 @@ +import fetchWrapper from "../fetchWrapper.js"; + export default async function isAssigned(taskId) { - try { - const res = await fetch( - `${import.meta.env.VITE_API_URL}/api/events/tasks/${taskId}/assigned`, - { - method: 'GET', - credentials: 'include', - headers: { - 'Accept': 'application/json', - }, - } - ); - - if (!res.ok) { - throw new Error(`Erreur serveur : ${res.status}`); - } - - return await res.json(); - - } catch (err) { - console.error('Erreur :', err); - return null; - } + return fetchWrapper( + `/api/events/tasks/${taskId}/assigned`, + null, + "GET" + ); } diff --git a/src/utils/tasks/unAssign.js b/src/utils/tasks/unAssign.js index 4e140c4..7110328 100644 --- a/src/utils/tasks/unAssign.js +++ b/src/utils/tasks/unAssign.js @@ -1,37 +1,13 @@ +import fetchWrapper from "../fetchWrapper.js"; import getXSRFToken from "../getXSRF.js"; export default async function unAssign(taskId) { const csrfToken = await getXSRFToken(); - try { - const res = await fetch( - `${import.meta.env.VITE_API_URL}/api/events/task/unassign`, - { - method: 'POST', - credentials: 'include', - headers: { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'X-XSRF-TOKEN': csrfToken, - }, - body: JSON.stringify({ - task_id: taskId - }), - } - ); - - const data = await res.json(); - - return { - status: res.status, - message: data?.message ?? null, - }; - - } catch (err) { - console.error("❌ Erreur réseau :", err); - return { - status: 0, - message: "Network error", - }; - } + return fetchWrapper( + "/api/events/task/unassign", + {task_id: taskId}, + "POST", + {"X-XSRF-TOKEN": csrfToken} + ); } diff --git a/src/utils/users/deactivateUser.js b/src/utils/users/deactivateUser.js index 61ac0c7..fdf4c44 100644 --- a/src/utils/users/deactivateUser.js +++ b/src/utils/users/deactivateUser.js @@ -1,34 +1,13 @@ +import fetchWrapper from "../fetchWrapper.js"; import getXSRFToken from "../getXSRF.js"; export default async function deactivateUser(userId) { const csrfToken = await getXSRFToken(); - try { - const response = await fetch(`${import.meta.env.VITE_API_URL}/api/users/${userId}/deactivate`, { - method: 'POST', - credentials: 'include', - headers: { - 'Content-Type': 'application/json', - 'X-XSRF-TOKEN': csrfToken, - 'Accept': 'application/json' - }, - body: JSON.stringify({ - id: userId - }) - }); - - const data = await response.json(); - - if (!response.ok) { - return { - status: response.status, - errors: data.errors || data.message - }; - } - - return { status: response.status, data }; - - } catch (error) { - return { status: 500, error }; - } + return fetchWrapper( + `/api/users/${userId}/deactivate`, + { id: userId }, + "POST", + { "X-XSRF-TOKEN": csrfToken } + ); } diff --git a/src/utils/users/deleteOtherUser.js b/src/utils/users/deleteOtherUser.js index 101cf94..ece6425 100644 --- a/src/utils/users/deleteOtherUser.js +++ b/src/utils/users/deleteOtherUser.js @@ -1,34 +1,13 @@ +import fetchWrapper from "../fetchWrapper.js"; import getXSRFToken from "../getXSRF.js"; export default async function deleteOtherUser(userId) { const csrfToken = await getXSRFToken(); - try { - const response = await fetch(`${import.meta.env.VITE_API_URL}/api/users/${userId}`, { - method: 'DELETE', - credentials: 'include', - headers: { - 'Content-Type': 'application/json', - 'X-XSRF-TOKEN': csrfToken, - 'Accept': 'application/json' - }, - body: JSON.stringify({ - id: userId - }) - }); - - const data = await response.json(); - - if (!response.ok) { - return { - status: response.status, - errors: data.errors || data.message - }; - } - - return { status: response.status, data }; - - } catch (error) { - return { status: 500, error }; - } + return fetchWrapper( + `/api/users/${userId}`, + { id: userId }, + "DELETE", + { "X-XSRF-TOKEN": csrfToken } + ); } diff --git a/src/utils/users/deleteUser.js b/src/utils/users/deleteUser.js index 932167d..4cb9dcf 100644 --- a/src/utils/users/deleteUser.js +++ b/src/utils/users/deleteUser.js @@ -1,31 +1,13 @@ +import fetchWrapper from "../fetchWrapper.js"; import getXSRFToken from "../getXSRF.js"; export default async function deleteUser() { const csrfToken = await getXSRFToken(); - try { - const response = await fetch(`${import.meta.env.VITE_API_URL}/api/users`, { - method: 'DELETE', - credentials: 'include', - headers: { - 'Content-Type': 'application/json', - 'X-XSRF-TOKEN': csrfToken, - 'Accept': 'application/json' - } - }); - - const data = await response.json(); - - if (!response.ok) { - return { - status: response.status, - errors: data.errors || data.message - }; - } - - return { status: response.status, data }; - - } catch (error) { - return { status: 500, error }; - } + return fetchWrapper( + "/api/users", + null, + "DELETE", + { "X-XSRF-TOKEN": csrfToken } + ); } diff --git a/src/utils/users/getAllUsers.js b/src/utils/users/getAllUsers.js index b31ff18..584c39f 100644 --- a/src/utils/users/getAllUsers.js +++ b/src/utils/users/getAllUsers.js @@ -1,21 +1,5 @@ +import fetchWrapper from "../fetchWrapper.js"; + export default async function getAllUser() { - try { - const res = await fetch(`${import.meta.env.VITE_API_URL}/api/users`, { - method: 'GET', - credentials: 'include', - headers: { - 'Accept': 'application/json' - } - }); - - if (!res.ok) { - throw new Error(`Erreur serveur : ${res.status}`); - } - - const data = await res.json(); - return data; - } catch (err) { - console.error('Erreur :', err); - return null; - } + return fetchWrapper("/api/users"); } diff --git a/src/utils/users/getUserById.js b/src/utils/users/getUserById.js index 5abbbc3..e9a2c75 100644 --- a/src/utils/users/getUserById.js +++ b/src/utils/users/getUserById.js @@ -1,23 +1,5 @@ +import fetchWrapper from "../fetchWrapper.js"; + export default async function getUserById(id) { - try { - const res = await fetch(`${import.meta.env.VITE_API_URL}/api/users/${id}`, { - method: 'GET', - credentials: 'include', - headers: { - 'Accept': 'application/json' - } - }); - - if (!res.ok) { - if (res.status === 404) { - return { error: 'not_found' }; - } - throw new Error(`Erreur serveur : ${res.status}`); - } - - return await res.json(); - } catch (err) { - console.error('Erreur :', err); - return { error: 'server_error' }; - } + return fetchWrapper(`/api/users/${id}`); } diff --git a/src/utils/users/getUserToValidate.js b/src/utils/users/getUserToValidate.js index b134ec9..5176f1f 100644 --- a/src/utils/users/getUserToValidate.js +++ b/src/utils/users/getUserToValidate.js @@ -1,21 +1,5 @@ +import fetchWrapper from "../fetchWrapper.js"; + export default async function getUserToValidate() { - try { - const res = await fetch(`${import.meta.env.VITE_API_URL}/api/users/invalid`, { - method: 'GET', - credentials: 'include', - headers: { - 'Accept': 'application/json' - } - }); - - if (!res.ok) { - throw new Error(`Erreur serveur : ${res.status}`); - } - - const data = await res.json(); - return data; - } catch (err) { - console.error('Erreur :', err); - return null; - } -} \ No newline at end of file + return fetchWrapper("/api/users/invalid"); +} diff --git a/src/utils/users/modifyRole.js b/src/utils/users/modifyRole.js index e0c9ae8..6526cea 100644 --- a/src/utils/users/modifyRole.js +++ b/src/utils/users/modifyRole.js @@ -1,33 +1,13 @@ +import fetchWrapper from "../fetchWrapper.js"; import getXSRFToken from "../getXSRF.js"; - export default async function modifyRole(role, userId) { - try { - const csrfToken = await getXSRFToken(); + const csrfToken = await getXSRFToken(); - const res = await fetch( - `${import.meta.env.VITE_API_URL}/api/users/${userId}/role`, - { - method: 'POST', - credentials: 'include', - headers: { - 'Accept': 'application/json', - 'X-XSRF-TOKEN': csrfToken, - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ role }), - } - ); - - const data = await res.json(); - - if (!res.ok) { - return { success: false, error: data.message ?? "Erreur serveur" }; - } - - return { success: true, data }; - } catch (err) { - console.error(err); - return { success: false, error: "Erreur réseau" }; - } + return fetchWrapper( + `/api/users/${userId}/role`, + { role }, + "POST", + { "X-XSRF-TOKEN": csrfToken } + ); } diff --git a/src/utils/users/updateUser.js b/src/utils/users/updateUser.js index 05fe5d8..af18273 100644 --- a/src/utils/users/updateUser.js +++ b/src/utils/users/updateUser.js @@ -1,32 +1,13 @@ +import fetchWrapper from "../fetchWrapper.js"; import getXSRFToken from "../getXSRF.js"; export default async function updateUser(name, lastname, phone) { - const csrfToken = await getXSRFToken(); - try { - const res = await fetch(`${import.meta.env.VITE_API_URL}/api/users/update`, { - method: 'POST', - credentials: 'include', - headers: { - 'Accept': 'application/json', - 'X-XSRF-TOKEN': csrfToken, - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - name: name, - phone: phone, - lastname: lastname, - }) - }); - - if (!res.ok) { - throw new Error(`Erreur serveur : ${res.status}`); - } - - return await res.json(); - } catch (err) { - console.error('Erreur :', err); - return null; - } -} \ No newline at end of file + return fetchWrapper( + "/api/users/update", + { name, lastname, phone }, + "POST", + { "X-XSRF-TOKEN": csrfToken } + ); +} diff --git a/src/utils/users/validateUser.js b/src/utils/users/validateUser.js index 16f2bde..f73b3ef 100644 --- a/src/utils/users/validateUser.js +++ b/src/utils/users/validateUser.js @@ -1,27 +1,13 @@ +import fetchWrapper from "../fetchWrapper.js"; import getXSRFToken from "../getXSRF.js"; export default async function validateUser(userId) { - const csrfToken = await getXSRFToken(); - try { - const res = await fetch( - `${import.meta.env.VITE_API_URL}/api/users/${userId}/validate`, - { - method: "POST", - credentials: "include", - headers: { - Accept: "application/json", - 'X-XSRF-TOKEN': csrfToken, - }, - } + const csrfToken = await getXSRFToken(); + + return fetchWrapper( + `/api/users/${userId}/validate`, + null, + "POST", + { "X-XSRF-TOKEN": csrfToken } ); - if (!res.ok) { - const errorData = await res.json(); - console.error("Erreur backend:", errorData); - return false; - } - return true; - } catch (err) { - console.error("Erreur réseau:", err); - return false; - } }