aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-09-02 10:08:34 -0700
committerFuwn <[email protected]>2023-09-02 10:08:34 -0700
commit9a72bbdb41a3ef663aeba563b5061fb5c48c4b65 (patch)
tree204b946ea2e619a75a9b87edd0a75257f613155f /src/lib
parentfeat(settings): nicer settings page (diff)
downloaddue.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.svelte15
-rw-r--r--src/lib/List/Due/MangaList.svelte15
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;
}