From e4246eacbffa15242de69fe0331cac6f1869e410 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Sun, 7 Jul 2024 22:58:04 -0700 Subject: refactor(SequelCatcher): tidy --- src/lib/Data/AniList/media.ts | 32 ++++++++------------------------ src/lib/Data/AniList/prequels.ts | 36 ++++++++++++++++++++---------------- src/lib/Media/links.ts | 3 ++- src/lib/Tools/SequelCatcher.svelte | 22 +++++++++------------- 4 files changed, 39 insertions(+), 54 deletions(-) (limited to 'src') diff --git a/src/lib/Data/AniList/media.ts b/src/lib/Data/AniList/media.ts index 89d6e339..3eb26de7 100644 --- a/src/lib/Data/AniList/media.ts +++ b/src/lib/Data/AniList/media.ts @@ -5,7 +5,7 @@ import manga from '$stores/manga'; import settings from '$stores/settings'; import lastPruneTimes from '$stores/lastPruneTimes'; import { options as getOptions, type Options } from '$lib/Notification/options'; -import type { PrequelRelations } from './prequels'; +import type { PrequelRelation, PrequelRelations } from './prequels'; export enum Type { Anime, @@ -159,17 +159,9 @@ const collectionQueryTemplate = (type: Type, userId: number, options: Collection edges { relationType node { - id - status - title { - english - romaji - } - episodes - mediaListEntry { - status - progress - } + id status episodes + title { english romaji } + mediaListEntry { status progress } coverImage { extraLarge } } } @@ -479,7 +471,7 @@ export const mediaCover = async (id: number) => export interface UnwatchedRelationMap { media: Media; - unwatchedRelations: Media[]; + unwatchedRelations: PrequelRelation[]; } export const filterRelations = (media: Media[]) => { @@ -487,7 +479,7 @@ export const filterRelations = (media: Media[]) => { for (const mediaItem of media) { const sequels = mediaItem.relations.edges.filter( - (relation) => + (relation: PrequelRelation) => relation.relationType === 'SEQUEL' && !media.some((mediaItem) => mediaItem.id === relation.node.id) && (relation.node.mediaListEntry @@ -498,18 +490,10 @@ export const filterRelations = (media: Media[]) => { relation.node.status !== 'CANCELLED' ); - if (sequels) { - const unwatchedRelations: Media[] = []; - - unwatchedRelations.push(...sequels); - - if (unwatchedRelations.length === 0) { - continue; - } - + if (sequels.length > 0) { unwatchedRelationsMap.push({ media: mediaItem, - unwatchedRelations + unwatchedRelations: sequels }); } } diff --git a/src/lib/Data/AniList/prequels.ts b/src/lib/Data/AniList/prequels.ts index f92cde26..e372500b 100644 --- a/src/lib/Data/AniList/prequels.ts +++ b/src/lib/Data/AniList/prequels.ts @@ -20,23 +20,27 @@ export interface MediaPrequel { }; } +export interface PrequelRelationNode { + id: number; + title: MediaTitle; + episodes: number; + status: MediaStatus; + mediaListEntry: { + status: MediaListEntryStatus; + progress: number; + }; + coverImage: { + extraLarge: string; + }; +} + +export interface PrequelRelation { + relationType: string; + node: PrequelRelationNode; +} + export interface PrequelRelations { - edges: { - relationType: string; - node: { - id: number; - title: MediaTitle; - episodes: number; - status: MediaStatus; - mediaListEntry: { - status: MediaListEntryStatus; - progress: number; - }; - coverImage: { - extraLarge: string; - }; - }; - }[]; + edges: PrequelRelation[]; } interface PrequelsPage { diff --git a/src/lib/Media/links.ts b/src/lib/Media/links.ts index 3c55ba3a..85b696d9 100644 --- a/src/lib/Media/links.ts +++ b/src/lib/Media/links.ts @@ -1,7 +1,8 @@ import type { Media } from '$lib/Data/AniList/media'; +import type { PrequelRelationNode } from '$lib/Data/AniList/prequels'; export const outboundLink = ( - media: Media | null, + media: Media | PrequelRelationNode | null, type: 'anime' | 'manga', setting: 'anilist' | 'livechartme' | 'animeschedule' | 'myanimelist', search = false, diff --git a/src/lib/Tools/SequelCatcher.svelte b/src/lib/Tools/SequelCatcher.svelte index df6c0d3a..4f783fab 100644 --- a/src/lib/Tools/SequelCatcher.svelte +++ b/src/lib/Tools/SequelCatcher.svelte @@ -1,11 +1,9 @@