diff options
| author | Fuwn <[email protected]> | 2023-09-06 00:30:46 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-09-06 00:30:46 -0700 |
| commit | 19b51ab69176eb4f834c2c497f4c93a13779d7c7 (patch) | |
| tree | 2d21abd4c678f34f677a7c8ca625188d490c07cc /src/lib/List/Due | |
| parent | feat(list): filter paused media (diff) | |
| download | due.moe-19b51ab69176eb4f834c2c497f4c93a13779d7c7.tar.xz due.moe-19b51ab69176eb4f834c2c497f4c93a13779d7c7.zip | |
feat(list): cache flattened
Diffstat (limited to 'src/lib/List/Due')
| -rw-r--r-- | src/lib/List/Due/AnimeList.svelte | 26 | ||||
| -rw-r--r-- | src/lib/List/Due/MangaList.svelte | 29 |
2 files changed, 42 insertions, 13 deletions
diff --git a/src/lib/List/Due/AnimeList.svelte b/src/lib/List/Due/AnimeList.svelte index 5024f8c2..83511ca0 100644 --- a/src/lib/List/Due/AnimeList.svelte +++ b/src/lib/List/Due/AnimeList.svelte @@ -1,7 +1,7 @@ <script lang="ts"> /* eslint svelte/no-at-html-tags: "off" */ - import { mediaListCollection, Type, flattenLists, type Media } from '$lib/AniList/media'; + import { mediaListCollection, Type, type Media } from '$lib/AniList/media'; import type { UserIdentity, AniListAuthorisation } from '$lib/AniList/identity'; import { onDestroy, onMount } from 'svelte'; import anime from '../../../stores/anime'; @@ -12,7 +12,7 @@ export let identity: UserIdentity; export let displayUnresolved: boolean; - let animeLists: Promise<{ entries: { media: Media }[] }[]>; + let animeLists: Promise<Media[]>; let startTime: number; let endTime: number; @@ -38,13 +38,12 @@ clearInterval(keyCacher); }); - const cleanMedia = (media: { entries: { media: Media }[] }[], displayUnresolved: boolean) => { + const cleanMedia = (media: Media[], displayUnresolved: boolean) => { if (media === undefined) { return []; } - const flattenedLists = flattenLists(media); - const releasingMedia = flattenedLists.filter( + const releasingMedia = media.filter( (media: Media) => media.status == 'RELEASING' && (media.mediaListEntry || { status: 'DROPPED' }).status != @@ -152,6 +151,17 @@ ); }); }; + + const cleanCache = () => { + animeLists = mediaListCollection( + user, + identity, + Type.Anime, + $anime, + $lastPruneTimes.anime, + true + ); + }; </script> {#await animeLists} @@ -166,6 +176,12 @@ <small style="opacity: 50%">{endTime / 1000}s</small></summary > + {#if cleanedMedia.length === 0} + <ul> + <li>No anime to display. <a href={'#'} on:click={cleanCache}>Force refresh</a></li> + </ul> + {/if} + <ul> {#each cleanedMedia as anime} <li> diff --git a/src/lib/List/Due/MangaList.svelte b/src/lib/List/Due/MangaList.svelte index e7a1321f..379ec228 100644 --- a/src/lib/List/Due/MangaList.svelte +++ b/src/lib/List/Due/MangaList.svelte @@ -1,5 +1,5 @@ <script lang="ts"> - import { mediaListCollection, Type, flattenLists, type Media } from '$lib/AniList/media'; + import { mediaListCollection, Type, type Media } from '$lib/AniList/media'; import type { UserIdentity, AniListAuthorisation } from '$lib/AniList/identity'; import { onDestroy, onMount } from 'svelte'; import { chapterCount } from '$lib/mangadex'; @@ -12,7 +12,7 @@ export let identity: UserIdentity; export let displayUnresolved: boolean; - let mangaLists: Promise<{ entries: { media: Media }[] }[]>; + let mangaLists: Promise<Media[]>; let startTime: number; let endTime: number; @@ -31,10 +31,7 @@ clearInterval(keyCacher); }); - const cleanMedia = async ( - media: { entries: { media: Media }[] }[], - displayUnresolved: boolean - ) => { + const cleanMedia = async (media: Media[], displayUnresolved: boolean) => { if (media === undefined) { return []; } @@ -54,8 +51,7 @@ } } - const flattenedLists = flattenLists(media); - const releasingMedia = flattenedLists.filter( + const releasingMedia = media.filter( (media: Media) => media.status == 'RELEASING' && media.format != 'NOVEL' && @@ -117,6 +113,17 @@ ); }); }; + + const cleanCache = () => { + mangaLists = mediaListCollection( + user, + identity, + Type.Manga, + $manga, + $lastPruneTimes.manga, + true + ); + }; </script> {#await mangaLists} @@ -134,6 +141,12 @@ <small style="opacity: 50%">{endTime / 1000}s</small> </summary> + {#if cleanedMedia.length === 0} + <ul> + <li>No manga to display. <a href={'#'} on:click={cleanCache}>Force refresh</a></li> + </ul> + {/if} + <ul> {#each cleanedMedia as manga} <li> |