import { useState, useEffect } from 'react' import { fetchServers, type Server } from '../api' function Servers() { const [servers, setServers] = useState([]) const [error, setError] = useState('') const [loading, setLoading] = useState(true) useEffect(() => { let cancelled = false async function load() { try { const data = await fetchServers() if (!cancelled) { setServers(data) setError('') } } catch (err: unknown) { if (!cancelled) { setError(err instanceof Error ? err.message : 'Failed to load servers') } } finally { if (!cancelled) setLoading(false) } } load() const interval = setInterval(load, 10000) return () => { cancelled = true clearInterval(interval) } }, []) if (loading) return
return ( <>

Servers

{error &&
{error}
}
{servers.length === 0 && ( )} {servers.map((s) => ( ))}
Name Type IP:Port Status Online/Max TPS Last Heartbeat
No servers found
{s.name} {s.server_type} {s.ip}:{s.port} {s.status} {s.online_players}/{s.max_players} {s.tps.toFixed(1)} {new Date(s.last_heartbeat).toLocaleString()}
) } export default Servers