import { useEffect, useRef, useState } from "preact/hooks"; import { StatusManager } from "./statusManager.tsx"; import { IS_BROWSER } from "$fresh/runtime.ts"; import { PlayerData } from "../util/players.ts"; import { Button } from "../components/Button.tsx"; export function ActivePlayerList() { const [players, setPlayers] = useState([]); useEffect(() => { if (!IS_BROWSER) return; configureEventSource(); }, []); const eventSource = useRef(); const configureEventSource = () => { if (eventSource.current?.OPEN) eventSource.current.close(); eventSource.current = new EventSource("/api/players"); eventSource.current.addEventListener("players", (e) => { setPlayers(JSON.parse(e.data)); }); }; const followStatusManager = (action: string) => { if (action === "started" || action === "restarted") { configureEventSource(); } }; return (

Active Players

{players.map((p) => )}
); } function PlayerCard({ player }: { player: PlayerData }) { return (
{`${player.username}'s

{player.username}

UUID: {player.id}
Did you know that bats are the only mammal that can fly?
); }