From 39b21f8ff8ccda999c486d8c183875df01d520d8 Mon Sep 17 00:00:00 2001 From: T'JAMPENS QUENTIN p2406187 Date: Tue, 24 Feb 2026 17:41:15 +0100 Subject: [PATCH] Convert to TS --- src/components/Task/Task.jsx | 29 --------------- src/components/Task/Task.tsx | 71 ++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 29 deletions(-) delete mode 100644 src/components/Task/Task.jsx create mode 100644 src/components/Task/Task.tsx diff --git a/src/components/Task/Task.jsx b/src/components/Task/Task.jsx deleted file mode 100644 index d14cabf..0000000 --- a/src/components/Task/Task.jsx +++ /dev/null @@ -1,29 +0,0 @@ -import React, {useEffect, useState} from "react"; -import getEventById from "../../utils/events/getEventById.js"; -import styles from "./Task.module.css"; -import formatDate from "../../utils/date/formatDate.js"; - -const Task = ({ task }) => { - const [event, setEvent] = useState(null); - - useEffect(() => { - (async () => { - const e = await getEventById(task.id); - setEvent(e.data); - }) () - }, []) - - return ( -
-
-
-

{event && event.name} - {task.name}

-

{task.description}

-

{formatDate(task.start)}

-
-
-
- ); -} - -export default Task; \ No newline at end of file diff --git a/src/components/Task/Task.tsx b/src/components/Task/Task.tsx new file mode 100644 index 0000000..7c939b2 --- /dev/null +++ b/src/components/Task/Task.tsx @@ -0,0 +1,71 @@ +import { useEffect, useState } from "react"; +import getEventById from "../../utils/events/getEventById.js"; +import styles from "./Task.module.css"; +import formatDate from "../../utils/date/formatDate"; + +interface TaskType { + id: number; + name: string; + description: string; + location: string; + start: string; + end: string; + max_participants: number; + events_id: number; + created_at: string; + updated_at: string; + pivot: { + user_id: number; + task_id: number; + }; +} + +interface EventType { + id: number; + name: string; + description?: string; + location?: string; + start?: string; + end?: string; + created_at?: string; + updated_at?: string; +} + +interface TaskProps { + task: TaskType; +} + +const Task: React.FC = ({ task }) => { + const [event, setEvent] = useState(null); + + useEffect(() => { + const fetchEvent = async (): Promise => { + try { + const e = await getEventById(task.events_id); + setEvent(e.data as EventType); + } catch (error) { + console.error("Erreur lors du chargement de l'événement", error); + } + }; + + fetchEvent(); + }, [task.events_id]); + + return ( +
+
+
+

+ {event?.name} - {task.name} +

+

{task.description}

+

+ {formatDate(task.start)} +

+
+
+
+ ); +}; + +export default Task; \ No newline at end of file