feat(confidence-engine): use server investigation persistence
This commit is contained in:
+28
-5
@@ -8,10 +8,23 @@ import { useRouter } from "next/navigation";
|
||||
function Portfolio() {
|
||||
const router = useRouter();
|
||||
const [summaries, setSummaries] = React.useState([]);
|
||||
const [hydrated, setHydrated] = React.useState(false);
|
||||
const [loadError, setLoadError] = React.useState(null);
|
||||
const [showRestartConfirm, setShowRestartConfirm] = React.useState(false);
|
||||
|
||||
React.useEffect(() => {
|
||||
setSummaries(listInvestigations());
|
||||
let active = true;
|
||||
(async () => {
|
||||
try {
|
||||
const investigations = await listInvestigations();
|
||||
if (active) setSummaries(investigations);
|
||||
} catch (error) {
|
||||
if (active) setLoadError(error);
|
||||
} finally {
|
||||
if (active) setHydrated(true);
|
||||
}
|
||||
})();
|
||||
return () => { active = false; };
|
||||
}, []);
|
||||
|
||||
return (
|
||||
@@ -96,10 +109,14 @@ function Portfolio() {
|
||||
Cancel
|
||||
</button>
|
||||
<button
|
||||
onClick={() => {
|
||||
onClick={async () => {
|
||||
setShowRestartConfirm(null);
|
||||
try { restartInvestigation(summary.id); } catch (_) { /* storage must not crash caller */ }
|
||||
setSummaries(listInvestigations());
|
||||
try {
|
||||
await restartInvestigation(summary.id);
|
||||
setSummaries(await listInvestigations());
|
||||
} catch (error) {
|
||||
setLoadError(error);
|
||||
}
|
||||
}}
|
||||
className="rounded-lg border border-red-400 bg-white px-4 py-2 text-sm font-medium text-red-700 hover:bg-red-50 transition"
|
||||
>
|
||||
@@ -116,7 +133,13 @@ function Portfolio() {
|
||||
)}
|
||||
|
||||
{/* No investigations */}
|
||||
{summaries.length === 0 && (
|
||||
{!hydrated && (
|
||||
<section className="mb-10"><h2 className="mb-4 text-[13px] font-bold tracking-[.18em] uppercase text-teal-700/80">Investigations</h2><p className="text-sm text-gray-500 italic">Loading investigations…</p></section>
|
||||
)}
|
||||
{hydrated && loadError && (
|
||||
<section className="mb-10"><h2 className="mb-4 text-[13px] font-bold tracking-[.18em] uppercase text-teal-700/80">Investigations</h2><p className="text-sm text-red-600">Unable to load investigations.</p></section>
|
||||
)}
|
||||
{hydrated && !loadError && summaries.length === 0 && (
|
||||
<section className="mb-10">
|
||||
<h2 className="mb-4 text-[13px] font-bold tracking-[.18em] uppercase text-teal-700/80">
|
||||
Investigations
|
||||
|
||||
Reference in New Issue
Block a user