diff options
| author | Fuwn <[email protected]> | 2026-03-01 16:04:11 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-03-01 16:04:11 -0800 |
| commit | 48f0c30d47d62e4f35706edb93a1bb2f97eba14c (patch) | |
| tree | 44866d7a61adfdf01a780e0108c370294d3db78b /src/lib/List/Anime/UpcomingAnimeList.svelte | |
| parent | chore(biome): re-enable useAltText rule (diff) | |
| download | due.moe-48f0c30d47d62e4f35706edb93a1bb2f97eba14c.tar.xz due.moe-48f0c30d47d62e4f35706edb93a1bb2f97eba14c.zip | |
chore(biome): enable svelte formatting
Diffstat (limited to 'src/lib/List/Anime/UpcomingAnimeList.svelte')
| -rw-r--r-- | src/lib/List/Anime/UpcomingAnimeList.svelte | 140 |
1 files changed, 69 insertions, 71 deletions
diff --git a/src/lib/List/Anime/UpcomingAnimeList.svelte b/src/lib/List/Anime/UpcomingAnimeList.svelte index a2cc963d..109584f0 100644 --- a/src/lib/List/Anime/UpcomingAnimeList.svelte +++ b/src/lib/List/Anime/UpcomingAnimeList.svelte @@ -1,88 +1,86 @@ <script lang="ts"> - import Spacer from '$lib/Layout/Spacer.svelte'; - import { mediaListCollection, Type, type Media } from '$lib/Data/AniList/media'; - import type { AniListAuthorisation } from '$lib/Data/AniList/identity'; - import { onMount } from 'svelte'; - import anime from '$stores/anime'; - import lastPruneTimes from '$stores/lastPruneTimes'; - import AnimeList from './AnimeListTemplate.svelte'; - import settings from '$stores/settings'; - import type { SubsPlease } from '$lib/Media/Anime/Airing/Subtitled/subsPlease'; - import { addNotification } from '$lib/Notification/store'; - import locale from '$stores/locale'; - import identity from '$stores/identity'; - import { injectAiringTime } from '$lib/Media/Anime/Airing/Subtitled/match'; - import { hasDueEpisodes, hasNoAiredEpisodes } from '$lib/Media/Anime/Airing/classify'; - import revalidateAnime from '$stores/revalidateAnime'; +import Spacer from '$lib/Layout/Spacer.svelte'; +import { mediaListCollection, Type, type Media } from '$lib/Data/AniList/media'; +import type { AniListAuthorisation } from '$lib/Data/AniList/identity'; +import { onMount } from 'svelte'; +import anime from '$stores/anime'; +import lastPruneTimes from '$stores/lastPruneTimes'; +import AnimeList from './AnimeListTemplate.svelte'; +import settings from '$stores/settings'; +import type { SubsPlease } from '$lib/Media/Anime/Airing/Subtitled/subsPlease'; +import { addNotification } from '$lib/Notification/store'; +import locale from '$stores/locale'; +import identity from '$stores/identity'; +import { injectAiringTime } from '$lib/Media/Anime/Airing/Subtitled/match'; +import { hasDueEpisodes, hasNoAiredEpisodes } from '$lib/Media/Anime/Airing/classify'; +import revalidateAnime from '$stores/revalidateAnime'; - export let user: AniListAuthorisation; - let animeLists: Promise<Media[]>; - let startTime: number; - let endTime: number; +export let user: AniListAuthorisation; +let animeLists: Promise<Media[]>; +let startTime: number; +let endTime: number; - onMount(async () => { - startTime = performance.now(); - animeLists = mediaListCollection(user, $identity, Type.Anime, $anime, $lastPruneTimes.anime, { - addNotification, - notificationType: 'Upcoming Episodes' - }); +onMount(async () => { + startTime = performance.now(); + animeLists = mediaListCollection(user, $identity, Type.Anime, $anime, $lastPruneTimes.anime, { + addNotification, + notificationType: 'Upcoming Episodes' }); +}); - const cleanMedia = ( - anime: Media[], - displayUnresolved: boolean, - subsPlease: SubsPlease | null, - plannedOnly = true - ) => { - if (anime === undefined) return []; +const cleanMedia = ( + anime: Media[], + displayUnresolved: boolean, + subsPlease: SubsPlease | null, + plannedOnly = true +) => { + if (anime === undefined) return []; - const filterAnime = (status: 'RELEASING' | 'NOT_YET_RELEASED') => - anime - .filter((media: Media) => media.status === status && media.nextAiringEpisode !== null) - .map((media) => injectAiringTime(media, subsPlease)) - .filter( - (media: Media) => - // Outdated media - ($settings.displayPlannedAnime ? media.mediaListEntry?.status === 'PLANNING' : false) || - !hasDueEpisodes(media) + const filterAnime = (status: 'RELEASING' | 'NOT_YET_RELEASED') => + anime + .filter((media: Media) => media.status === status && media.nextAiringEpisode !== null) + .map((media) => injectAiringTime(media, subsPlease)) + .filter( + (media: Media) => + // Outdated media + ($settings.displayPlannedAnime ? media.mediaListEntry?.status === 'PLANNING' : false) || + !hasDueEpisodes(media) + ) + .map((media: Media) => { + // Adjust for planned anime + if ( + ($settings.displayPlannedAnime ? media.episodes !== 1 : true) && + hasNoAiredEpisodes(media) ) - .map((media: Media) => { - // Adjust for planned anime - if ( - ($settings.displayPlannedAnime ? media.episodes !== 1 : true) && - hasNoAiredEpisodes(media) - ) - media.nextAiringEpisode = { episode: -1 }; + media.nextAiringEpisode = { episode: -1 }; - return media; - }); - let upcomingAnime = filterAnime(plannedOnly ? 'NOT_YET_RELEASED' : 'RELEASING'); + return media; + }); + let upcomingAnime = filterAnime(plannedOnly ? 'NOT_YET_RELEASED' : 'RELEASING'); - if (!displayUnresolved) - upcomingAnime = upcomingAnime.filter( - (media: Media) => media.nextAiringEpisode?.episode !== -1 - ); + if (!displayUnresolved) + upcomingAnime = upcomingAnime.filter((media: Media) => media.nextAiringEpisode?.episode !== -1); - upcomingAnime.sort( - (a: Media, b: Media) => - (a.nextAiringEpisode?.airingAt || 9999) - (b.nextAiringEpisode?.airingAt || 9999) - ); + upcomingAnime.sort( + (a: Media, b: Media) => + (a.nextAiringEpisode?.airingAt || 9999) - (b.nextAiringEpisode?.airingAt || 9999) + ); - if (!endTime) endTime = performance.now() - startTime; + if (!endTime) endTime = performance.now() - startTime; - return upcomingAnime; - }; + return upcomingAnime; +}; - $: { - if ($revalidateAnime) { - $revalidateAnime = false; - $lastPruneTimes.anime = -1; - animeLists = mediaListCollection(user, $identity, Type.Anime, $anime, $lastPruneTimes.anime, { - addNotification, - notificationType: 'Upcoming Episodes' - }); - } +$: { + if ($revalidateAnime) { + $revalidateAnime = false; + $lastPruneTimes.anime = -1; + animeLists = mediaListCollection(user, $identity, Type.Anime, $anime, $lastPruneTimes.anime, { + addNotification, + notificationType: 'Upcoming Episodes' + }); } +} </script> <AnimeList |