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
-
-
-
-

-
-
-
-
{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 (
+
+
+
+
+
-
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;
- }
}