import { useEffect, useState, useCallback } from "react"; import { api, AppStatus, Host } from "../api"; export function useStatus(pollMs = 3000) { const [status, setStatus] = useState(null); const [hosts, setHosts] = useState([]); const [error, setError] = useState(null); const [loading, setLoading] = useState(true); const refresh = useCallback(async () => { try { const [s, h] = await Promise.all([api.getStatus(), api.getHosts()]); setStatus(s); setHosts(h); setError(null); } catch (e: unknown) { setError(e instanceof Error ? e.message : "Backend unreachable"); } finally { setLoading(false); } }, []); useEffect(() => { refresh(); const id = setInterval(refresh, pollMs); return () => clearInterval(id); }, [refresh, pollMs]); return { status, hosts, error, loading, refresh }; }