diff --git a/web/src/lib/components/PendingState.svelte b/web/src/lib/components/PendingState.svelte index ebe1f1d..d749280 100644 --- a/web/src/lib/components/PendingState.svelte +++ b/web/src/lib/components/PendingState.svelte @@ -1,12 +1,22 @@
@@ -32,7 +42,16 @@
- Checking for email every 3 seconds... + {#if nextfetch} + Next inbox check in {nextfetch} second{#if nextfetch > 1}s{/if}... + {#if nbfetch > 0} + + {/if} + {:else} + Checking for email every 3 seconds... + {/if}
diff --git a/web/src/routes/test/[test]/+page.svelte b/web/src/routes/test/[test]/+page.svelte index f70bc53..f516bb6 100644 --- a/web/src/routes/test/[test]/+page.svelte +++ b/web/src/routes/test/[test]/+page.svelte @@ -11,8 +11,15 @@ let loading = $state(true); let error = $state(null); let pollInterval: ReturnType | null = null; + let nextfetch = $state(23); + let nbfetch = $state(0); async function fetchTest() { + if (nbfetch > 0) { + nextfetch = Math.max(nextfetch, Math.floor(3 + nbfetch * 0.5)); + } + nbfetch += 1; + try { const testResponse = await getTest({ path: { id: testId } }); if (testResponse.data) { @@ -35,7 +42,13 @@ } function startPolling() { - pollInterval = setInterval(fetchTest, 3000); + pollInterval = setInterval(() => { + nextfetch -= 1; + + if (nextfetch <= 0) { + fetchTest(); + } + }, 1000); } function stopPolling() { @@ -82,7 +95,12 @@ {:else if test && test.status !== "analyzed"} - + fetchTest()} + /> {:else if report}