import { useEffect, useState } from 'react' import type { ServerStatusData } from '../types' function useClock(): string { const [time, setTime] = useState(() => new Date().toLocaleTimeString('es-ES')) useEffect(() => { const id = setInterval(() => setTime(new Date().toLocaleTimeString('es-ES')), 1000) return () => clearInterval(id) }, []) return time } export function ServerStatus() { const [data, setData] = useState(null) const clock = useClock() useEffect(() => { let cancelled = false fetch('/api/home/status/', { headers: { Accept: 'application/json' } }) .then((r) => { if (!r.ok) throw new Error(`HTTP ${r.status}`) return r.json() }) .then((d: ServerStatusData) => { if (!cancelled) setData(d) }) .catch(() => { if (!cancelled) setData(null) }) return () => { cancelled = true } }, []) const online = data ? data.online_characters : 0 const status = data ? data.status : 'Offline' const loginClass = status === 'Online' ? 'green-info' : 'red-info' return (
{data?.server_name ?? '—'}{' '} {data?.expansion ?? ''} {online}
Login {status}
Hora {clock}

{data?.address ?? ''}

) }