"use client";

import { useState, useEffect, useCallback } from "react";

interface ConnectionStatus {
  llmProxyReachable: boolean;
  loading: boolean;
}

export function useConnectionStatus(): ConnectionStatus {
  const [status, setStatus] = useState<ConnectionStatus>({
    llmProxyReachable: false,
    loading: true,
  });

  const poll = useCallback(async () => {
    try {
      const res = await fetch("/api/health", { signal: AbortSignal.timeout(3000) });
      if (!res.ok) throw new Error("unhealthy");
      const data = await res.json();
      setStatus({
        llmProxyReachable: data.llm_proxy_reachable === true,
        loading: false,
      });
    } catch {
      setStatus({ llmProxyReachable: false, loading: false });
    }
  }, []);

  useEffect(() => {
    poll();
  }, [poll]);

  return status;
}
