diff --git a/front_end/src/components/object/detailSession.tsx b/front_end/src/components/object/detailSession.tsx index 7f04360..c9df293 100644 --- a/front_end/src/components/object/detailSession.tsx +++ b/front_end/src/components/object/detailSession.tsx @@ -1,5 +1,5 @@ import { useEffect, useState } from "react"; -import { Activite, Athlete, Session } from "../../classes"; +import { Activite, Admin, Athlete, Coach, Session } from "../../classes"; import { dateToString, hoursToString } from "../edt"; import { Modal } from "../Modal"; import CreateActivite from "../createActivite"; @@ -22,6 +22,8 @@ function DetailSession({session,open,setOpen}:Props){ const [loading,setLoading] = useState(false); const [join,setJoin] = useState(user instanceof Athlete && user.sessions.includes(session)); + //Vérification pour l'ajout et la suppression des activités + const canEdit = user instanceof Admin || user instanceof Coach; const sDate = session.creneau; function handleDeleteActivite(activite:Activite): void { @@ -108,11 +110,15 @@ function DetailSession({session,open,setOpen}:Props){ {activites.map((activite,index)=>(
{activite.nom} - -
+ {canEdit && ( + + )} + ))} - - {loading &&
} + {canEdit && ( + + )} + {loading &&
} diff --git a/front_end/src/components/object/user.tsx b/front_end/src/components/object/user.tsx index 38dbb0d..c8ade51 100644 --- a/front_end/src/components/object/user.tsx +++ b/front_end/src/components/object/user.tsx @@ -18,12 +18,22 @@ type Props = { function ObjectUser({admin=null,athlete=null,coach=null}:Props){ + const {user,setUser} = useLocalData() const[user2,setUser2]= useState(getUser()); const [open, setOpen] = useState(false); const [open2, setOpen2] = useState(false); const [loading,setLoading] = useState(false); - const [sessions,setSessions] = useState([]); + + // Initialisation sécurisée des sessions + function getInitialSessions(): Session[] { + if (athlete) return [...(athlete.sessions || [])]; + if (coach) return [...(coach.sessions || [])]; + return []; + } + + const [sessions, setSessions] = useState(getInitialSessions()); + function getUser(): User{ if(admin!=null) return admin; @@ -75,7 +85,7 @@ function ObjectUser({admin=null,athlete=null,coach=null}:Props){ useEffect(() => { if(!loading){ if(athlete!==null){ - setSessions([...athlete.sessions]) + setSessions([...(athlete.sessions || [])]); } if(coach!==null){ setSessions([...coach.sessions]) @@ -87,6 +97,7 @@ function ObjectUser({admin=null,athlete=null,coach=null}:Props){ function returnSession(session: Session|null){ if(session!==null){ if(athlete!==null){ + athlete.sessions = athlete.sessions || []; athlete.sessions.push(session); setSessions([...athlete.sessions]) } @@ -101,7 +112,7 @@ function ObjectUser({admin=null,athlete=null,coach=null}:Props){ return(
handleOpen()}> -
{user2.nom}
+
{user2.prenom} {user2.nom}
{/*
{user2.role}
*/}
@@ -117,7 +128,7 @@ function ObjectUser({admin=null,athlete=null,coach=null}:Props){
{athlete !== null && (
- +
)}