diff options
| author | Fuwn <[email protected]> | 2026-03-01 16:20:51 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-03-01 16:21:02 -0800 |
| commit | eae5d24d9e79e59a19d4721caaeaa0ca650ecb33 (patch) | |
| tree | 1b685bb248e051dfa26d2bfdebe6689402dd93c5 /src/lib/Schedule/Days.svelte | |
| parent | chore(tooling): remove legacy eslint and prettier (diff) | |
| download | due.moe-eae5d24d9e79e59a19d4721caaeaa0ca650ecb33.tar.xz due.moe-eae5d24d9e79e59a19d4721caaeaa0ca650ecb33.zip | |
chore(biome): drop formatter style overrides
Diffstat (limited to 'src/lib/Schedule/Days.svelte')
| -rw-r--r-- | src/lib/Schedule/Days.svelte | 159 |
1 files changed, 87 insertions, 72 deletions
diff --git a/src/lib/Schedule/Days.svelte b/src/lib/Schedule/Days.svelte index ed0ee4d9..0eb30579 100644 --- a/src/lib/Schedule/Days.svelte +++ b/src/lib/Schedule/Days.svelte @@ -1,102 +1,117 @@ <script lang="ts"> -import { browser } from '$app/environment'; -import type { AniListAuthorisation } from '$lib/Data/AniList/identity'; -import { mediaListCollection, Type, type Media } from '$lib/Data/AniList/media'; -import { findClosestMedia } from '$lib/Media/Anime/Airing/Subtitled/match'; -import type { SubsPlease, SubsPleaseEpisode } from '$lib/Media/Anime/Airing/Subtitled/subsPlease'; -import { outboundLink } from '$lib/Media/links'; -import { parseOrDefault } from '$lib/Utility/parameters'; -import settings from '$stores/settings'; -import CoverBypass from './CoverBypass.svelte'; -import '$lib/List/covers.css'; -import ParallaxImage from '$lib/Image/ParallaxImage.svelte'; -import LinkedTooltip from '$lib/Tooltip/LinkedTooltip.svelte'; -import { onMount } from 'svelte'; -import identity from '$stores/identity'; -import anime from '$stores/anime'; -import lastPruneTimes from '$stores/lastPruneTimes'; -import Message from '$lib/Loading/Message.svelte'; -import Skeleton from '$lib/Loading/Skeleton.svelte'; -import RateLimitedError from '$lib/Error/RateLimited.svelte'; +import { browser } from "$app/environment"; +import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; +import { mediaListCollection, Type, type Media } from "$lib/Data/AniList/media"; +import { findClosestMedia } from "$lib/Media/Anime/Airing/Subtitled/match"; +import type { + SubsPlease, + SubsPleaseEpisode, +} from "$lib/Media/Anime/Airing/Subtitled/subsPlease"; +import { outboundLink } from "$lib/Media/links"; +import { parseOrDefault } from "$lib/Utility/parameters"; +import settings from "$stores/settings"; +import CoverBypass from "./CoverBypass.svelte"; +import "$lib/List/covers.css"; +import ParallaxImage from "$lib/Image/ParallaxImage.svelte"; +import LinkedTooltip from "$lib/Tooltip/LinkedTooltip.svelte"; +import { onMount } from "svelte"; +import identity from "$stores/identity"; +import anime from "$stores/anime"; +import lastPruneTimes from "$stores/lastPruneTimes"; +import Message from "$lib/Loading/Message.svelte"; +import Skeleton from "$lib/Loading/Skeleton.svelte"; +import RateLimitedError from "$lib/Error/RateLimited.svelte"; export let subsPlease: SubsPlease; export let scheduledMedia: Partial<Media[]>; export let forceListMode = false; export let user: AniListAuthorisation | undefined; -const urlParameters = browser ? new URLSearchParams(window.location.search) : null; -let day: string | null = parseOrDefault(urlParameters, 'day', null); +const urlParameters = browser + ? new URLSearchParams(window.location.search) + : null; +let day: string | null = parseOrDefault(urlParameters, "day", null); let mediaListPromise: Promise<Media[]>; onMount(async () => { - if (user === undefined || $identity.id === -2) mediaListPromise = Promise.resolve([]); - else - mediaListPromise = mediaListCollection( - user, - $identity, - Type.Anime, - $anime, - $lastPruneTimes.anime, - { - all: true - } - ); + if (user === undefined || $identity.id === -2) + mediaListPromise = Promise.resolve([]); + else + mediaListPromise = mediaListCollection( + user, + $identity, + Type.Anime, + $anime, + $lastPruneTimes.anime, + { + all: true, + }, + ); }); -const shiftSubsPleaseSchedule = (schedule: SubsPlease['schedule']) => { - const shiftedSchedule: { [key: string]: SubsPleaseEpisode[] } = {}; +const shiftSubsPleaseSchedule = (schedule: SubsPlease["schedule"]) => { + const shiftedSchedule: { [key: string]: SubsPleaseEpisode[] } = {}; - if (day && Object.keys(schedule).includes(day)) { - shiftedSchedule[day] = schedule[day as keyof typeof schedule] as unknown as SubsPleaseEpisode[]; + if (day && Object.keys(schedule).includes(day)) { + shiftedSchedule[day] = schedule[ + day as keyof typeof schedule + ] as unknown as SubsPleaseEpisode[]; - return shiftedSchedule; - } + return shiftedSchedule; + } - const days = Object.keys(schedule); - const currentDayIndex = days.indexOf(new Date().toLocaleString('en-us', { weekday: 'long' })); + const days = Object.keys(schedule); + const currentDayIndex = days.indexOf( + new Date().toLocaleString("en-us", { weekday: "long" }), + ); - days - .slice(currentDayIndex) - .concat(days.slice(0, currentDayIndex)) - .forEach((day) => { - const scheduleEntry = schedule[day as keyof typeof schedule]; + days + .slice(currentDayIndex) + .concat(days.slice(0, currentDayIndex)) + .forEach((day) => { + const scheduleEntry = schedule[day as keyof typeof schedule]; - shiftedSchedule[day] = Array.isArray(scheduleEntry) - ? scheduleEntry - : ([scheduleEntry] as unknown as SubsPleaseEpisode[]); - }); + shiftedSchedule[day] = Array.isArray(scheduleEntry) + ? scheduleEntry + : ([scheduleEntry] as unknown as SubsPleaseEpisode[]); + }); - Object.entries(shiftedSchedule).forEach(([day, scheduleEntry]) => { - if (scheduleEntry.length === 0) { - delete shiftedSchedule[day]; - } - }); + Object.entries(shiftedSchedule).forEach(([day, scheduleEntry]) => { + if (scheduleEntry.length === 0) { + delete shiftedSchedule[day]; + } + }); - return shiftedSchedule; + return shiftedSchedule; }; -const associateMedia = (media: (Media | undefined)[], title: string, mediaList: Media[]) => { - const closestMedia = findClosestMedia(media as Media[], title); +const associateMedia = ( + media: (Media | undefined)[], + title: string, + mediaList: Media[], +) => { + const closestMedia = findClosestMedia(media as Media[], title); - if ($settings.displayScheduleFilterList && closestMedia && mediaList) - return mediaList.find((m) => m.id === closestMedia?.id) || null; + if ($settings.displayScheduleFilterList && closestMedia && mediaList) + return mediaList.find((m) => m.id === closestMedia?.id) || null; - return closestMedia; + return closestMedia; }; const episode = (media: Media, weekday: string) => { - if (media.nextAiringEpisode?.episode === 1) return 1; - - if ( - media.nextAiringEpisode?.airingAt && - weekday === new Date().toLocaleString('en-us', { weekday: 'long' }) && - new Date(media.nextAiringEpisode.airingAt * 1000).getTime() - new Date().getTime() > - 24 * 60 * 60 * 1000 - ) - return media.nextAiringEpisode?.episode - 1; - - return media.nextAiringEpisode?.episode || 1; + if (media.nextAiringEpisode?.episode === 1) return 1; + + if ( + media.nextAiringEpisode?.airingAt && + weekday === new Date().toLocaleString("en-us", { weekday: "long" }) && + new Date(media.nextAiringEpisode.airingAt * 1000).getTime() - + new Date().getTime() > + 24 * 60 * 60 * 1000 + ) + return media.nextAiringEpisode?.episode - 1; + + return media.nextAiringEpisode?.episode || 1; }; </script> |