diff options
| author | Fuwn <[email protected]> | 2023-11-18 23:49:16 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-11-18 23:49:16 -0800 |
| commit | 93c025058033e45f82419f90d16289a6485e39fd (patch) | |
| tree | d517576d0ee07cb4d89b02fe4e3a086151913c72 | |
| parent | feat(settings): default true planned (diff) | |
| download | due.moe-93c025058033e45f82419f90d16289a6485e39fd.tar.xz due.moe-93c025058033e45f82419f90d16289a6485e39fd.zip | |
refactor(upcoming): chain filters
| -rw-r--r-- | src/lib/List/Anime/UpcomingAnimeList.svelte | 60 |
1 files changed, 32 insertions, 28 deletions
diff --git a/src/lib/List/Anime/UpcomingAnimeList.svelte b/src/lib/List/Anime/UpcomingAnimeList.svelte index 99c9b99e..de148c20 100644 --- a/src/lib/List/Anime/UpcomingAnimeList.svelte +++ b/src/lib/List/Anime/UpcomingAnimeList.svelte @@ -19,39 +19,43 @@ animeLists = mediaListCollection(user, identity, Type.Anime, $anime, $lastPruneTimes.anime); }); - const cleanMedia = (media: Media[], displayUnresolved: boolean) => { - if (media === undefined) { - return []; - } + const cleanMedia = (anime: Media[], displayUnresolved: boolean) => { + if (anime === undefined) return []; - const releasingMedia = media.filter( - (media: Media) => - (media.status === 'RELEASING' || media.status === 'NOT_YET_RELEASED') && - media.nextAiringEpisode !== null - ); - const outdatedMedia = releasingMedia.filter((media: Media) => { - return ( - ($settings.displayPlannedAnime ? media.mediaListEntry?.status === 'PLANNING' : false) || - (media.nextAiringEpisode || { episode: 0 }).episode - 1 <= - (media.mediaListEntry || { progress: 0 }).progress - ); - }); - let finalMedia = outdatedMedia.map((media: Media) => { - if ( - ($settings.displayPlannedAnime ? media.episodes !== 1 : true) && - (media.nextAiringEpisode || { episode: 0 }).episode - 1 <= 0 - ) { - media.nextAiringEpisode = { episode: -1 }; - } + let upcomingAnime = anime + .filter( + // Releasing media + (media: Media) => + (media.status === 'RELEASING' || media.status === 'NOT_YET_RELEASED') && + media.nextAiringEpisode !== null + ) + .filter((media: Media) => { + // Outdated media + return ( + ($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; + }); if (!displayUnresolved) { - finalMedia = finalMedia.filter((media: Media) => media.nextAiringEpisode?.episode !== -1); + upcomingAnime = upcomingAnime.filter( + (media: Media) => media.nextAiringEpisode?.episode !== -1 + ); } - finalMedia.sort((a: Media, b: Media) => { + upcomingAnime.sort((a: Media, b: Media) => { return ( (a.nextAiringEpisode?.timeUntilAiring || 9999) - (b.nextAiringEpisode?.timeUntilAiring || 9999) @@ -62,7 +66,7 @@ endTime = performance.now() - startTime; } - return finalMedia; + return upcomingAnime; }; </script> |