Tesseract / utils /app_utils /frontend /src /components /ProcessingStatus.tsx
yansari's picture
Deploy: floorplan rendered as DOM element, edges always visible
1e3df84
Raw
History Blame Contribute Delete
964 Bytes
import { useState, useEffect } from 'react';
interface Props {
name: string;
}
export default function ProcessingStatus({ name }: Props) {
const [stage, setStage] = useState('');
useEffect(() => {
let active = true;
const poll = async () => {
try {
const res = await fetch(`/api/progress/${encodeURIComponent(name)}`);
if (res.ok && active) {
const data = await res.json();
if (data.stage) setStage(data.stage);
}
} catch { /* ignore */ }
};
const id = setInterval(poll, 800);
poll(); // immediate first check
return () => { active = false; clearInterval(id); };
}, [name]);
return (
<div className="processing-overlay">
<div className="spinner" />
<div className="processing-text">
Processing <strong>{name}</strong>
</div>
<div className="processing-stage">
{stage || 'Starting pipeline...'}
</div>
</div>
);
}