import React from 'react'; import { api } from './api.js'; export default function Leaderboard({ username, lastResult, onPlayAgain, onChangeUser }) { const [data, setData] = React.useState(null); const [loading, setLoading] = React.useState(true); const [err, setErr] = React.useState(''); React.useEffect(() => { let alive = true; (async () => { try { const r = await fetch(api(`/api/leaderboard?limit=25&username=${encodeURIComponent(username)}`)) .then((r) => r.json()); if (!alive) return; if (!r.ok) throw new Error(r.error || 'failed'); setData(r); } catch (e) { if (alive) setErr(e.message || 'Could not load leaderboard.'); } finally { if (alive) setLoading(false); } })(); return () => { alive = false; }; }, [username, lastResult]); const myRow = data?.me; const inTop = !!myRow && data?.top?.some((t) => t.username.toLowerCase() === username.toLowerCase()); return (