diff options
Diffstat (limited to 'src/lib/List/Anime')
| -rw-r--r-- | src/lib/List/Anime/CleanAnimeList.svelte | 56 | ||||
| -rw-r--r-- | src/lib/List/Anime/DueAnimeList.svelte | 14 |
2 files changed, 32 insertions, 38 deletions
diff --git a/src/lib/List/Anime/CleanAnimeList.svelte b/src/lib/List/Anime/CleanAnimeList.svelte index 76701a93..42f4d933 100644 --- a/src/lib/List/Anime/CleanAnimeList.svelte +++ b/src/lib/List/Anime/CleanAnimeList.svelte @@ -9,6 +9,7 @@ import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; import ListTitle from "../ListTitle.svelte"; import { onDestroy, onMount } from "svelte"; import AiringTime from "$lib/Media/Anime/Airing/AiringTime.svelte"; +import { hasDueEpisodes } from "$lib/Media/Anime/Airing/classify"; import { browser } from "$app/environment"; import identity from "$stores/identity"; import "../covers.css"; @@ -109,6 +110,9 @@ $: filteredMedia = ? media : media.filter((m) => m.mediaListEntry?.customLists?.[selectedList]); +$: if (browser && !dummy && media && previousAnimeList !== media) + previousAnimeList = media; + const updateSelectedList = (event: Event) => { const nextSelectedList = (event.currentTarget as HTMLSelectElement).value; @@ -169,7 +173,7 @@ const scheduleAiringRefresh = () => { m.nextAiringEpisode?.airingAt && m.nextAiringEpisode.airingAt < now, ) ) - animeLists = cleanCache(user, $identity); + $revalidateAnime = $revalidateAnime + 1; scheduleAiringRefresh(); }, @@ -206,28 +210,30 @@ $: if (browser && !dummy) { onDestroy(() => clearAiringRefreshTimeout()); const increment = (anime: Media, progress: number) => { - if (!dummy && pendingUpdate !== anime.id) { - $revalidateAnime = $revalidateAnime + 1; - lastUpdatedMedia = anime.id; - pendingUpdate = anime.id; - - incrementMediaProgress( - anime.id, - anime.mediaListEntry?.progress, - user, - () => { - const mediaListEntry = media.find( - (m) => m.id === anime.id, - )?.mediaListEntry; - - if (mediaListEntry) mediaListEntry.progress = progress + 1; - - previousAnimeList = media; - animeLists = cleanCache(user, $identity); - pendingUpdate = null; - }, - ); - } + if (dummy || pendingUpdate === anime.id) return; + + pendingUpdate = anime.id; + lastUpdatedMedia = anime.id; + + const target = media.find((m) => m.id === anime.id); + + if (target?.mediaListEntry) target.mediaListEntry.progress = progress + 1; + + media = + !completed && target && !hasDueEpisodes(target) + ? media.filter((m) => m.id !== anime.id) + : media; + + incrementMediaProgress( + anime.id, + anime.mediaListEntry?.progress, + user, + (skipped) => { + pendingUpdate = null; + + if (!skipped) $revalidateAnime = $revalidateAnime + 1; + }, + ); }; </script> @@ -279,7 +285,7 @@ const increment = (anime: Media, progress: number) => { > <div slot="title" let:title={anime} let:progress> {#if !upcoming && !notYetReleased} - {pendingUpdate === anime.id ? progress + 1 : progress}{@html totalEpisodes(anime)} + {progress}{@html totalEpisodes(anime)} <button class={`button-square button-action ${pendingUpdate === anime.id ? 'opaque' : ''}`} style={pendingUpdate === anime.id ? 'pointer-events: none;' : ''} @@ -312,7 +318,7 @@ const increment = (anime: Media, progress: number) => { {/if} {#if !upcoming || notYetReleased} <!-- {anime.mediaListEntry?.progress || 0}{@html totalEpisodes(anime)} --> - {pendingUpdate === anime.id ? progress + 1 : progress}{@html totalEpisodes(anime)} + {progress}{@html totalEpisodes(anime)} <button class={`button-square button-action ${pendingUpdate === anime.id ? 'opaque' : ''}`} style={pendingUpdate === anime.id ? 'pointer-events: none;' : ''} diff --git a/src/lib/List/Anime/DueAnimeList.svelte b/src/lib/List/Anime/DueAnimeList.svelte index d2c47ebe..29af4a88 100644 --- a/src/lib/List/Anime/DueAnimeList.svelte +++ b/src/lib/List/Anime/DueAnimeList.svelte @@ -31,19 +31,7 @@ const restartKeyCacher = (cacheMinutes: number) => { keyCacheMinutes = cacheMinutes; keyCacher = setInterval( () => { - startTime = performance.now(); - endTime = -1; - animeLists = mediaListCollection( - user, - $identity, - Type.Anime, - $anime, - $lastPruneTimes.anime, - { - forcePrune: true, - addNotification, - }, - ); + $revalidateAnime = $revalidateAnime + 1; }, cacheMinutes * 1000 * 60, ); |