From 23dbbf0d09719bae851b025fc0822cb698eee4d2 Mon Sep 17 00:00:00 2001 From: T'JAMPENS QUENTIN p2406187 Date: Mon, 12 Jan 2026 22:19:23 +0100 Subject: [PATCH] Add delete event method --- src/pages/eventDetail/eventDetail.jsx | 14 +++++++++- src/utils/events/deleteEvent.js | 38 +++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 src/utils/events/deleteEvent.js diff --git a/src/pages/eventDetail/eventDetail.jsx b/src/pages/eventDetail/eventDetail.jsx index cdfc6be..7965020 100644 --- a/src/pages/eventDetail/eventDetail.jsx +++ b/src/pages/eventDetail/eventDetail.jsx @@ -7,6 +7,8 @@ import EventTask from "../../components/eventTask/EventTask.jsx"; import Button from "../../components/ui/button/button.jsx"; import Modal from "../../components/ui/modal/modal.jsx"; import { AuthContext } from "../../contexts/auth/AuthContext.js"; +import deleteEvent from "../../utils/events/deleteEvent.js"; +import { useNavigate } from "react-router"; function EventDetail() { @@ -14,6 +16,7 @@ function EventDetail() { const params = useParams(); const id = params.id; const { user } = useContext(AuthContext) + const navigate = useNavigate(); const [open, setOpen] = useState(false); const [event, setEvent] = useState(null); @@ -30,6 +33,15 @@ function EventDetail() { setOpen(true); } + const delEvent = async () => { + const result = await deleteEvent(id); + + if (result.status === 200 || result.status === 204) { + setOpen(false); + navigate("/events"); + } + } + return (
@@ -59,7 +71,7 @@ function EventDetail() {

Etes-vous sur de vouloir supprimer l'événement {event?.name} ?

- +
diff --git a/src/utils/events/deleteEvent.js b/src/utils/events/deleteEvent.js new file mode 100644 index 0000000..54a36c5 --- /dev/null +++ b/src/utils/events/deleteEvent.js @@ -0,0 +1,38 @@ +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 }; + } +}