|
|
@ -1,23 +1,40 @@
|
|
|
|
import "../style/team_panel.css"
|
|
|
|
import "../style/team_panel.css"
|
|
|
|
import { BASE } from "../Constants"
|
|
|
|
import {BASE} from "../Constants"
|
|
|
|
import { Member, Team, TeamInfo } from "../model/Team"
|
|
|
|
import {Member, MemberRole, Team, TeamInfo} from "../model/Team"
|
|
|
|
import { useParams } from "react-router-dom"
|
|
|
|
import {useNavigate, useParams} from "react-router-dom"
|
|
|
|
|
|
|
|
import {useAppFetcher, useUser} from "../App.tsx";
|
|
|
|
|
|
|
|
import {useEffect, useState} from "react";
|
|
|
|
|
|
|
|
|
|
|
|
export default function TeamPanelPage() {
|
|
|
|
export default function TeamPanelPage() {
|
|
|
|
|
|
|
|
const fetcher = useAppFetcher()
|
|
|
|
const { teamId } = useParams()
|
|
|
|
const { teamId } = useParams()
|
|
|
|
const teamInfo = {
|
|
|
|
const [team,setTeam ] = useState<Team>()
|
|
|
|
id: parseInt(teamId!),
|
|
|
|
const [user] = useUser()
|
|
|
|
name: teamId!,
|
|
|
|
useEffect(() => {
|
|
|
|
mainColor: "#FFFFFF",
|
|
|
|
async function init(){
|
|
|
|
secondColor: "#000000",
|
|
|
|
const infoResponse = await fetcher.fetchAPIGet("teams/"+teamId)
|
|
|
|
picture:
|
|
|
|
const teamInfo : TeamInfo = await infoResponse.json()
|
|
|
|
"https://a.espncdn.com/combiner/i?img=/i/teamlogos/nba/500/lal.png",
|
|
|
|
const membersResponse = await fetcher.fetchAPIGet("teams/"+teamId+"/members")
|
|
|
|
|
|
|
|
const members : Member[] = await membersResponse.json()
|
|
|
|
|
|
|
|
setTeam({info:teamInfo, members:members})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(team === undefined){
|
|
|
|
|
|
|
|
init()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}, [fetcher,team]);
|
|
|
|
|
|
|
|
if(team === undefined){
|
|
|
|
|
|
|
|
return <p>Chargement ...</p>
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const isCoach = team.members.some(m=>m.user.id === user!.id && m.role === MemberRole.COACH)
|
|
|
|
|
|
|
|
console.log(isCoach,team,user)
|
|
|
|
return (
|
|
|
|
return (
|
|
|
|
<TeamPanel
|
|
|
|
<TeamPanel
|
|
|
|
team={{ info: teamInfo, members: [] }}
|
|
|
|
team={{ info: team.info, members: team.members }}
|
|
|
|
currentUserId={0}
|
|
|
|
currentUserId={user!.id}
|
|
|
|
isCoach={false}
|
|
|
|
isCoach={isCoach}
|
|
|
|
/>
|
|
|
|
/>
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -119,6 +136,7 @@ function MembersDisplay({
|
|
|
|
currentUserId={currentUserId}
|
|
|
|
currentUserId={currentUserId}
|
|
|
|
/>
|
|
|
|
/>
|
|
|
|
))
|
|
|
|
))
|
|
|
|
|
|
|
|
const navigate = useNavigate()
|
|
|
|
return (
|
|
|
|
return (
|
|
|
|
<div id="members">
|
|
|
|
<div id="members">
|
|
|
|
<div id="head-members">
|
|
|
|
<div id="head-members">
|
|
|
@ -127,7 +145,7 @@ function MembersDisplay({
|
|
|
|
<button
|
|
|
|
<button
|
|
|
|
id="add-member"
|
|
|
|
id="add-member"
|
|
|
|
onClick={() =>
|
|
|
|
onClick={() =>
|
|
|
|
(window.location.href = `${BASE}/team/${idTeam}/addMember`)
|
|
|
|
navigate("team/"+idTeam+"addMember")
|
|
|
|
}>
|
|
|
|
}>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
</button>
|
|
|
|
</button>
|
|
|
@ -157,7 +175,7 @@ function MemberDisplay({
|
|
|
|
alt="Photo de profile"
|
|
|
|
alt="Photo de profile"
|
|
|
|
/>
|
|
|
|
/>
|
|
|
|
<p>{member.user.name}</p>
|
|
|
|
<p>{member.user.name}</p>
|
|
|
|
<p>{member.role}</p>
|
|
|
|
<p>{member.role === MemberRole.COACH ? "Coach" : "Joueur"}</p>
|
|
|
|
<p>{member.user.email}</p>
|
|
|
|
<p>{member.user.email}</p>
|
|
|
|
{isCoach && currentUserId !== member.user.id && (
|
|
|
|
{isCoach && currentUserId !== member.user.id && (
|
|
|
|
<button
|
|
|
|
<button
|
|
|
|