fix: refresh jobs list immediately after replay

Add /api/jobs/list endpoint and fetch the updated list right after
a successful replay so the new job appears instantly instead of
waiting for the next SSE poll (up to 15s when idle).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-24 21:19:47 +01:00
parent 6a838fb840
commit b2e59d8aa1
2 changed files with 24 additions and 1 deletions

View File

@@ -0,0 +1,11 @@
import { NextResponse } from "next/server";
import { listJobs } from "@/lib/api";
export async function GET() {
try {
const data = await listJobs();
return NextResponse.json(data);
} catch (error) {
return NextResponse.json({ error: "Failed to fetch jobs" }, { status: 500 });
}
}

View File

@@ -95,9 +95,21 @@ export function JobsList({ initialJobs, libraries, highlightJobId }: JobsListPro
} }
}; };
const refreshJobs = async () => {
try {
const res = await fetch("/api/jobs/list");
if (res.ok) {
const data = await res.json();
if (Array.isArray(data)) setJobs(data);
}
} catch { /* SSE will catch up */ }
};
const handleReplay = async (id: string) => { const handleReplay = async (id: string) => {
const response = await fetch(`/api/jobs/${id}/replay`, { method: "POST" }); const response = await fetch(`/api/jobs/${id}/replay`, { method: "POST" });
if (!response.ok) { if (response.ok) {
await refreshJobs();
} else {
const data = await response.json().catch(() => ({})); const data = await response.json().catch(() => ({}));
console.error("Failed to replay job:", data?.error ?? response.status); console.error("Failed to replay job:", data?.error ?? response.status);
} }