From 29d5bb764f579db7a5f9ab20a4c3754aa7e195a1 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Thu, 7 Dec 2023 04:10:05 -0800 Subject: feat(manga): progress indicator! --- src/lib/List/Manga/MangaListTemplate.svelte | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src/lib/List/Manga') diff --git a/src/lib/List/Manga/MangaListTemplate.svelte b/src/lib/List/Manga/MangaListTemplate.svelte index a184c6dc..d24713bc 100644 --- a/src/lib/List/Manga/MangaListTemplate.svelte +++ b/src/lib/List/Manga/MangaListTemplate.svelte @@ -22,6 +22,7 @@ let lastUpdatedMedia = -1; let previousMangaList: Media[]; let pendingUpdate: number | null = null; + let progress = 0; const keyCacher = setInterval(() => { startTime = performance.now(); @@ -37,6 +38,8 @@ onDestroy(() => clearInterval(keyCacher)); const cleanMedia = async (manga: Media[], displayUnresolved: boolean) => { + progress = 0; + if (manga === undefined) return []; if ($lastPruneTimes.chapters === 1) { @@ -68,6 +71,7 @@ ($settings.displayNotStarted === true ? 0 : 1) ); let finalMedia = releasingMedia; + const progressStep = 100 / finalMedia.length; const chapterPromises = finalMedia.map((m: Media) => // A = On 1 second interval, // B = a maximum of 5 requests per second are allowed. @@ -77,7 +81,13 @@ chapterCount(identity, m, $settings.disableGuessing) ) ); - const chapterCounts = await Promise.all(chapterPromises); + const chapterCounts: (number | null)[] = []; + + for (let i = 0; i < chapterPromises.length; i++) { + chapterCounts.push(await chapterPromises[i]); + + progress += progressStep; + } finalMedia.forEach((m: Media, i) => (m.episodes = chapterCounts[i] || -1337)); @@ -157,7 +167,7 @@ {:else} - + {/if} {:then media} {#await cleanMedia(media, displayUnresolved)} @@ -174,7 +184,7 @@ {:else} -
  • Loading ...
+
  • Loading {progress.toFixed(0)}% ...
{/if} {:then cleanedMedia}