Add unassign btn

This commit is contained in:
T'JAMPENS QUENTIN p2406187
2026-01-12 15:50:48 +01:00
parent 6d15582819
commit 6165978ef3
2 changed files with 60 additions and 3 deletions
+23 -3
View File
@@ -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 <div style={{"--i": index}} key={index} className={styles.content}>
<div className={styles.task}>
<div>
@@ -55,9 +75,9 @@ export default function EventTask({ task, index }) {
<p>{task.description}</p>
</div>
{assigned ?
<Button variant={"danger"} onClick={() => handleRegisterBtn(task.id)}> Se désinscrire </Button>
<Button variant={"danger"} onClick={() => handleUnassign()}> Se désinscrire </Button>
:
<Button onClick={() => handleRegisterBtn(task.id)}> Sinscrire </Button>
<Button onClick={() => handleRegisterBtn()}> Sinscrire </Button>
}
</div>
+37
View File
@@ -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",
};
}
}