aboutsummaryrefslogtreecommitdiff
path: root/src/lib/List/Anime
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/List/Anime')
-rw-r--r--src/lib/List/Anime/CleanAnimeList.svelte56
-rw-r--r--src/lib/List/Anime/DueAnimeList.svelte14
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,
);