diff options
| author | Fuwn <[email protected]> | 2023-09-02 10:08:34 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-09-02 10:08:34 -0700 |
| commit | 9a72bbdb41a3ef663aeba563b5061fb5c48c4b65 (patch) | |
| tree | 204b946ea2e619a75a9b87edd0a75257f613155f /src/lib | |
| parent | feat(settings): nicer settings page (diff) | |
| download | due.moe-9a72bbdb41a3ef663aeba563b5061fb5c48c4b65.tar.xz due.moe-9a72bbdb41a3ef663aeba563b5061fb5c48c4b65.zip | |
feat(due): background cache
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/List/Due/AnimeList.svelte | 15 | ||||
| -rw-r--r-- | src/lib/List/Due/MangaList.svelte | 15 |
2 files changed, 26 insertions, 4 deletions
diff --git a/src/lib/List/Due/AnimeList.svelte b/src/lib/List/Due/AnimeList.svelte index 17897d8d..9f38090b 100644 --- a/src/lib/List/Due/AnimeList.svelte +++ b/src/lib/List/Due/AnimeList.svelte @@ -3,11 +3,12 @@ import { mediaListCollection, Type, flattenLists, type Media } from '$lib/AniList/media'; import type { UserIdentity, AniListAuthorisation } from '$lib/AniList/identity'; - import { onMount } from 'svelte'; + import { onDestroy, onMount } from 'svelte'; import anime from '../../../stores/anime'; import animeLastPrune from '../../../stores/mangaLastPrune'; import sortByDifference from '../../../stores/sortByDifference'; import displayNotStarted from '../../../stores/displayNotStarted'; + import cacheMinutes from '../../../stores/cacheMinutes'; export let user: AniListAuthorisation; export let identity: UserIdentity; @@ -17,11 +18,21 @@ let startTime: number; let endTime: number; + const keyCacher = setInterval(() => { + startTime = performance.now(); + endTime = -1; + animeLists = mediaListCollection(user, identity, Type.Anime, $anime, $animeLastPrune, true); + }, Number($cacheMinutes || 10) * 1000 * 60); + onMount(async () => { startTime = performance.now(); animeLists = mediaListCollection(user, identity, Type.Anime, $anime, $animeLastPrune); }); + onDestroy(() => { + clearInterval(keyCacher); + }); + const cleanMedia = (media: { entries: { media: Media }[] }[], displayUnresolved: boolean) => { if (media === undefined) { return []; @@ -80,7 +91,7 @@ ); }); - if (!endTime) { + if (!endTime || endTime === -1) { endTime = performance.now() - startTime; } diff --git a/src/lib/List/Due/MangaList.svelte b/src/lib/List/Due/MangaList.svelte index 6056b9eb..53ab5823 100644 --- a/src/lib/List/Due/MangaList.svelte +++ b/src/lib/List/Due/MangaList.svelte @@ -1,7 +1,7 @@ <script lang="ts"> import { mediaListCollection, Type, flattenLists, type Media } from '$lib/AniList/media'; import type { UserIdentity, AniListAuthorisation } from '$lib/AniList/identity'; - import { onMount } from 'svelte'; + import { onDestroy, onMount } from 'svelte'; import { chapterCount } from '$lib/mangadex'; import chaptersLastPrune from '../../../stores/chaptersLastPrune'; import manga from '../../../stores/manga'; @@ -10,6 +10,7 @@ import roundDownChapters from '../../../stores/roundDownChapters'; import mangaLastPrune from '../../../stores/mangaLastPrune'; import displayNotStarted from '../../../stores/displayNotStarted'; + import cacheMinutes from '../../../stores/cacheMinutes'; export let user: AniListAuthorisation; export let identity: UserIdentity; @@ -19,11 +20,21 @@ let startTime: number; let endTime: number; + const keyCacher = setInterval(() => { + startTime = performance.now(); + endTime = -1; + mangaLists = mediaListCollection(user, identity, Type.Anime, $manga, $mangaLastPrune, true); + }, Number($cacheMinutes || 30) * 1000 * 60); + onMount(async () => { startTime = performance.now(); mangaLists = mediaListCollection(user, identity, Type.Manga, $manga, $mangaLastPrune); }); + onDestroy(() => { + clearInterval(keyCacher); + }); + const cleanMedia = async ( media: { entries: { media: Media }[] }[], displayUnresolved: boolean @@ -88,7 +99,7 @@ ); }); - if (!endTime) { + if (!endTime || endTime === -1) { endTime = performance.now() - startTime; } |