import { FormEvent, useEffect, useState } from "react"; import { apiAuth, loadPlayers, User } from "./api"; import { useSession } from "./Session"; import { ErrorState } from "./types"; import { useNavigate } from "react-router"; const TeamPanel = () => { const { user, teams } = useSession(); const navigate = useNavigate(); useEffect(() => { user?.scopes.includes(`team:${teams?.activeTeam}`) || navigate("/", { replace: true }); }, [user]); const newPlayerTemplate = { id: 0, username: "", display_name: "", number: "", email: "", } as User; const [error, setError] = useState(); const [players, setPlayers] = useState(null); const [player, setPlayer] = useState(newPlayerTemplate); useEffect(() => { if (teams) { setError({ ok: true, message: "" }); loadPlayers(teams.activeTeam).then((data) => setPlayers(data)); } }, [teams]); async function handleSubmit(e: FormEvent) { e.preventDefault(); if (teams) { if (player.id === 0) { const r = await apiAuth(`player/${teams?.activeTeam}`, player, "POST"); if (r.detail) setError({ ok: false, message: r.detail }); else { setError({ ok: true, message: r }); loadPlayers(teams.activeTeam).then((data) => setPlayers(data)); } } else { const r = await apiAuth(`player/${teams?.activeTeam}`, player, "PUT"); if (r.detail) setError({ ok: false, message: r.detail }); else { setError({ ok: true, message: r }); loadPlayers(teams.activeTeam).then((data) => setPlayers(data)); } } } } async function handleDisable(e: FormEvent) { e.preventDefault(); if (teams && player.id !== 0) { var confirmation = confirm("are you sure?"); if (confirmation) { const r = await apiAuth( `player/${teams?.activeTeam}`, { player_id: player.id }, "DELETE" ); if (r.detail) setError({ ok: false, message: r.detail }); else { setError({ ok: true, message: r }); setPlayer(newPlayerTemplate); loadPlayers(teams.activeTeam).then((data) => setPlayers(data)); } } } } if (teams && players) { const activeTeam = teams.teams.filter( (team) => team.id == teams?.activeTeam )[0]; return (

{activeTeam.name}



players

{players ? (
{players && players.map((p) => ( ))}
) : ( )}
{ setPlayer({ ...player, display_name: e.target.value, username: e.target.value.toLowerCase().replace(/\W/g, ""), }); setError({ ok: true, message: "" }); }} />
{ setPlayer({ ...player, username: e.target.value }); setError({ ok: true, message: "" }); }} />
{ setPlayer({ ...player, number: e.target.value }); setError({ ok: true, message: "" }); }} />
{ setPlayer({ ...player, email: e.target.value }); setError({ ok: true, message: "" }); }} />
{error?.message && ( {error.message} )}
{player.id !== 0 && (
)}
); } else ; }; export default TeamPanel;