"use client"; import { useEffect, useState } from "react"; import { useQuery } from "@tanstack/react-query"; import { api } from "@/lib/api"; import type { ActivityEvent, LogLine } from "@/lib/types"; const API_BASE = process.env.NEXT_PUBLIC_API_URL ?? "http://localhost:4000/api/v1"; export function useActivityLog(token: string | null) { return useQuery({ queryKey: ["activity-log"], queryFn: () => api.admin.activity(token!), enabled: !!token, refetchInterval: 10_000, }); } export function useServerLogs(token: string | null) { const [lines, setLines] = useState([]); const [connected, setConnected] = useState(false); useEffect(() => { if (!token) return; const url = `${API_BASE}/admin/logs?token=${encodeURIComponent(token)}`; const es = new EventSource(url); es.onopen = () => setConnected(true); es.onmessage = (e) => { try { const line = JSON.parse(e.data) as LogLine; setLines((prev) => [...prev.slice(-999), line]); } catch { // ignore malformed lines } }; es.onerror = () => { setConnected(false); }; return () => { es.close(); setConnected(false); }; }, [token]); return { lines, connected }; }