aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-11-18 23:49:16 -0800
committerFuwn <[email protected]>2023-11-18 23:49:16 -0800
commit93c025058033e45f82419f90d16289a6485e39fd (patch)
treed517576d0ee07cb4d89b02fe4e3a086151913c72
parentfeat(settings): default true planned (diff)
downloaddue.moe-93c025058033e45f82419f90d16289a6485e39fd.tar.xz
due.moe-93c025058033e45f82419f90d16289a6485e39fd.zip
refactor(upcoming): chain filters
-rw-r--r--src/lib/List/Anime/UpcomingAnimeList.svelte60
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>