From 0479161db2e1dd8436d925479b57cbd28b3c53e6 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Mon, 20 Nov 2023 23:28:05 -0800 Subject: feat(upcoming): move to dedicated section --- src/lib/List/Anime/AnimeListTemplate.svelte | 11 ++++-- src/lib/List/Anime/UpcomingAnimeList.svelte | 60 +++++++++++++++++------------ 2 files changed, 42 insertions(+), 29 deletions(-) (limited to 'src/lib/List/Anime') diff --git a/src/lib/List/Anime/AnimeListTemplate.svelte b/src/lib/List/Anime/AnimeListTemplate.svelte index 2c806a2f..fba53429 100644 --- a/src/lib/List/Anime/AnimeListTemplate.svelte +++ b/src/lib/List/Anime/AnimeListTemplate.svelte @@ -9,12 +9,17 @@ import ListTitle from '../ListTitle.svelte'; export let endTime: number; - export let cleanMedia: (media: Media[], displayUnresolved: boolean) => Media[]; + export let cleanMedia: ( + media: Media[], + displayUnresolved: boolean, + plannedOnly?: boolean + ) => Media[]; export let animeLists: Promise; export let user: AniListAuthorisation; export let identity: UserIdentity; export let title: string; export let completed = false; + export let plannedOnly = false; let lastUpdatedMedia = -1; let previousAnimeList: Media[]; @@ -42,10 +47,8 @@ {/if} {:then media} - {@const cleanedMedia = cleanMedia(media, $settings.displayUnresolved)} - { + const cleanMedia = (anime: Media[], displayUnresolved: boolean, plannedOnly = true) => { if (anime === undefined) return []; - let upcomingAnime = anime - .filter( - // Releasing media - (media: Media) => - (media.status === 'RELEASING' || media.status === 'NOT_YET_RELEASED') && - media.nextAiringEpisode !== null - ) - .filter( - (media: Media) => - // Outdated media - ($settings.displayPlannedAnime ? media.mediaListEntry?.status === 'PLANNING' : false) || - (media.nextAiringEpisode || { episode: 0 }).episode - 1 <= - (media.mediaListEntry || { progress: 0 }).progress - ) - .map((media: Media) => { - // Adjust for planned anime - if ( - ($settings.displayPlannedAnime ? media.episodes !== 1 : true) && - (media.nextAiringEpisode || { episode: 0 }).episode - 1 <= 0 - ) { - media.nextAiringEpisode = { episode: -1 }; - } + const filterAnime = (status: 'RELEASING' | 'NOT_YET_RELEASED') => + anime + .filter((media: Media) => media.status === status && media.nextAiringEpisode !== null) + .filter( + (media: Media) => + // Outdated media + ($settings.displayPlannedAnime ? media.mediaListEntry?.status === 'PLANNING' : false) || + (media.nextAiringEpisode || { episode: 0 }).episode - 1 <= + (media.mediaListEntry || { progress: 0 }).progress + ) + .map((media: Media) => { + // Adjust for planned anime + if ( + ($settings.displayPlannedAnime ? media.episodes !== 1 : true) && + (media.nextAiringEpisode || { episode: 0 }).episode - 1 <= 0 + ) { + media.nextAiringEpisode = { episode: -1 }; + } - return media; - }); + return media; + }); + + let upcomingAnime = filterAnime(plannedOnly ? 'NOT_YET_RELEASED' : 'RELEASING'); if (!displayUnresolved) { upcomingAnime = upcomingAnime.filter( @@ -67,3 +65,15 @@ + +{#if $settings.displayPlannedAnime} + +{/if} -- cgit v1.2.3