File size: 1,080 Bytes
041816c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import { useState } from "react";
import Uploader from "./Uploader";
import ResultsTable from "./ResultsTable";
import type { DiagnoseResult } from "../lib/radar";
import { diagnoseRemote } from "../lib/radar";
export default function AppShell() {
const [result, setResult] = useState<DiagnoseResult | null>(null);
const [busy, setBusy] = useState(false);
const [error, setError] = useState<string | null>(null);
const [lastFiles, setLastFiles] = useState<File[]>([]);
async function run(files: File[]) {
setBusy(true);
setError(null);
setLastFiles(files);
try {
setResult(await diagnoseRemote(files));
} catch (e) {
setError(e instanceof Error ? e.message : "GPU busy or unreachable — Retry");
} finally {
setBusy(false);
}
}
return (
<div className="space-y-6">
<Uploader busy={busy} onSubmit={run} />
<ResultsTable
result={result}
busy={busy}
error={error}
onRetry={() => {
if (lastFiles.length > 0) run(lastFiles);
}}
/>
</div>
);
}
|