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}