From 2e490441a3cecd3d32e57caf7ed00b6c20e816b1 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Mon, 21 Jul 2025 15:51:26 +0000 Subject: [PATCH] improve app loader behavior --- frontend/src/lib/components/JobLoader.svelte | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/frontend/src/lib/components/JobLoader.svelte b/frontend/src/lib/components/JobLoader.svelte index 37a472366b..0a63c171a8 100644 --- a/frontend/src/lib/components/JobLoader.svelte +++ b/frontend/src/lib/components/JobLoader.svelte @@ -256,7 +256,7 @@ } export async function clearCurrentJob() { - if (currentId && !allowConcurentRequests) { + if (currentId && !allowConcurentRequests && !finished.includes(currentId)) { job = undefined lastCallbacks?.cancel?.({ id: currentId }) lastCallbacks = undefined @@ -374,7 +374,7 @@ } async function loadTestJob(id: string, callbacks?: Callbacks): Promise { let isCompleted = false - if (currentId === id || allowConcurentRequests) { + if (currentId === id || (allowConcurentRequests && !finished.includes(id))) { try { if (job && `running` in job) { callbacks?.running?.({ id }) @@ -419,6 +419,7 @@ id, result: job?.result }) + currentId = undefined } else { onJobCompleted(id, job, callbacks) } @@ -447,7 +448,7 @@ job: Job & { result?: any; success?: boolean }, callbacks?: Callbacks ) { - if (currentId === id || allowConcurentRequests) { + if (currentId === id || (allowConcurentRequests && !finished.includes(id))) { await tick() if ( callbacks?.doneError && @@ -476,9 +477,9 @@ if (noPingTimeout) { clearTimeout(noPingTimeout) } - if (id === currentId || allowConcurentRequests) { + if (id === currentId || (allowConcurentRequests && !finished.includes(id))) { noPingTimeout = setTimeout(() => { - if (currentId === id || allowConcurentRequests) { + if (currentId === id || (allowConcurentRequests && !finished.includes(id))) { currentEventSource?.close() currentEventSource = undefined loadTestJobWithSSE(id, attempt + 1, callbacks) @@ -591,16 +592,17 @@ currentEventSource?.close() currentEventSource = undefined noPingTimeout = undefined + isCompleted = true if (onlyResult) { callbacks?.doneResult?.({ id, result: previewJobUpdates?.only_result }) + currentId = undefined } else { const njob = previewJobUpdates.job as Job njob.logs = job?.logs ?? '' job = njob - isCompleted = true onJobCompleted(id, job, callbacks) } }