From 6165978ef391ba9562cc5e1c405835c5e70a8b7e Mon Sep 17 00:00:00 2001 From: T'JAMPENS QUENTIN p2406187 Date: Mon, 12 Jan 2026 15:50:48 +0100 Subject: [PATCH] Add unassign btn --- src/components/eventTask/EventTask.jsx | 26 +++++++++++++++--- src/utils/tasks/unAssign.js | 37 ++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 src/utils/tasks/unAssign.js diff --git a/src/components/eventTask/EventTask.jsx b/src/components/eventTask/EventTask.jsx index a4b9eb6..fd75379 100644 --- a/src/components/eventTask/EventTask.jsx +++ b/src/components/eventTask/EventTask.jsx @@ -2,6 +2,7 @@ import styles from "./eventTask.module.css"; import { formatDateLetter } from "../../utils/date/formatDateLetter.js"; import Button from "../ui/button/button.jsx"; import assign from "../../utils/tasks/assign.js"; +import unAssign from "../../utils/tasks/unAssign.js"; import { useEffect, useState } from "react"; import isAssigned from "../../utils/tasks/isAssigned.js"; import Modal from "../ui/modal/modal.jsx"; @@ -24,13 +25,13 @@ export default function EventTask({ task, index }) { const handleRegisterBtn = async () => { const res = await assign(task.id); - checkAssign(); switch (res.status) { case 200: setTitle("Inscription réussie") setMessage(`Vous êtes maintenant inscrit à la tâche ${task.name}`); setOpen(true); + setAssigned(true); break; case 409: @@ -47,6 +48,25 @@ export default function EventTask({ task, index }) { } }; + const handleUnassign = async () => { + const res = await unAssign(task.id); + + switch (res.status) { + case 200: + setTitle("Désinscription réussie") + setMessage(`Vous n'êtes plus inscrit à la tâche ${task.name}`); + setOpen(true); + setAssigned(false); + break; + + case 409: + setTitle("Erreur lors de la désinscription") + setMessage(`Vous n'êtes pas inscrit à cette tâche`); + setOpen(true); + break; + } + }; + return
@@ -55,9 +75,9 @@ export default function EventTask({ task, index }) {

{task.description}

{assigned ? - + : - + }
diff --git a/src/utils/tasks/unAssign.js b/src/utils/tasks/unAssign.js new file mode 100644 index 0000000..509ec82 --- /dev/null +++ b/src/utils/tasks/unAssign.js @@ -0,0 +1,37 @@ +import getXSRFToken from "../getXSRF.js"; + +export default async function unAssign(taskId) { + const csrfToken = await getXSRFToken(); + + try { + const res = await fetch( + `http://${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", + }; + } +}