import { useState, useEffect, useRef } from 'react'; export default function IngestBadge({ onScanComplete }) { const [status, setStatus] = useState(null); const wasActive = useRef(false); useEffect(() => { const es = new EventSource('/api/ingest/stream'); es.onmessage = (e) => { const data = JSON.parse(e.data); setStatus(data); if (wasActive.current && !data.active) { onScanComplete?.(); } wasActive.current = !!data.active; }; es.onerror = () => { // Reconnect is handled automatically by EventSource }; return () => es.close(); }, []); if (!status?.active) return null; return (
Scanning ยท {status.scanned.toLocaleString()} indexed {status.current && ( {status.current} )}
); }