From 2c78e5013fe2c9e1faff79e6067a18c0d82c14ea Mon Sep 17 00:00:00 2001 From: Fuwn Date: Fri, 22 Dec 2023 08:12:07 -0800 Subject: feat(manga): manual refresh --- src/lib/List/Manga/CleanMangaList.svelte | 8 +-- src/lib/List/Manga/MangaListTemplate.svelte | 84 +++++++++++++++++++++-------- 2 files changed, 64 insertions(+), 28 deletions(-) (limited to 'src') diff --git a/src/lib/List/Manga/CleanMangaList.svelte b/src/lib/List/Manga/CleanMangaList.svelte index 0100db72..03bde311 100644 --- a/src/lib/List/Manga/CleanMangaList.svelte +++ b/src/lib/List/Manga/CleanMangaList.svelte @@ -4,12 +4,12 @@ import { volumeCount } from '$lib/Media/Manga/volumes'; import { outboundLink } from '$lib/Media/links'; import settings from '../../../stores/settings'; - import ListTitle from '../ListTitle.svelte'; + // import ListTitle from '../ListTitle.svelte'; import MediaTitle from '../MediaTitleDisplay.svelte'; export let media: Media[]; export let cleanCache: () => void; - export let endTime: number; + // export let endTime: number; export let lastUpdatedMedia: number; export let updateMedia: ( id: number, @@ -21,10 +21,6 @@ export let rateLimited: boolean; - - Refresh - - {#if rateLimited} {/if} diff --git a/src/lib/List/Manga/MangaListTemplate.svelte b/src/lib/List/Manga/MangaListTemplate.svelte index f30cb520..2f05647d 100644 --- a/src/lib/List/Manga/MangaListTemplate.svelte +++ b/src/lib/List/Manga/MangaListTemplate.svelte @@ -25,6 +25,7 @@ let pendingUpdate: number | null = null; let progress = 0; let rateLimited = false; + let forceFlag = false; const keyCacher = setInterval(() => { startTime = performance.now(); @@ -39,25 +40,27 @@ onDestroy(() => clearInterval(keyCacher)); - const cleanMedia = async (manga: Media[], displayUnresolved: boolean) => { + const cleanMedia = async (manga: Media[], displayUnresolved: boolean, force: boolean) => { progress = 0; if (manga === undefined) return []; - if ($lastPruneTimes.chapters === 1) lastPruneTimes.setKey('chapters', new Date().getTime()); - else { - const currentDate = new Date(); - - if ( - (currentDate.getTime() - $lastPruneTimes.chapters) / 1000 / 60 > - Math.max($settings.cacheMangaMinutes, 5) - ) { - lastPruneTimes.setKey('chapters', currentDate.getTime()); - (async () => { - await database.chapters.bulkDelete((await database.chapters.toArray()).map((m) => m.id)); - })(); - } - } + if ((await database.chapters.toArray()).length <= 0 && !force) return []; + + // if ($lastPruneTimes.chapters === 1) lastPruneTimes.setKey('chapters', new Date().getTime()); + // else { + // const currentDate = new Date(); + + // if ( + // (currentDate.getTime() - $lastPruneTimes.chapters) / 1000 / 60 > + // Math.max($settings.cacheMangaMinutes, 5) + // ) { + // lastPruneTimes.setKey('chapters', currentDate.getTime()); + // (async () => { + // await database.chapters.bulkDelete((await database.chapters.toArray()).map((m) => m.id)); + // })(); + // } + // } const releasingMedia = manga.filter( (media: Media) => @@ -169,12 +172,27 @@ }; + + {#await mangaLists} + + { + cleanCache(); + + forceFlag = true; + }}>Refresh + + {#if previousMangaList} {:else} - +
  • Loading {progress.toFixed(0)}% ...
{/if} {:then media} - {#await cleanMedia(media, displayUnresolved)} + {#await cleanMedia(media, displayUnresolved, forceFlag)} + + { + cleanCache(); + + forceFlag = true; + }}>Refresh + + {#if previousMangaList} {:else} - +
  • Loading {progress.toFixed(0)}% ...
{/if} {:then cleanedMedia} + + { + cleanCache(); + + forceFlag = true; + }}>Refresh + + {:catch} - + {/await} -- cgit v1.2.3