diff options
| author | Fuwn <[email protected]> | 2024-07-07 22:58:04 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-07-07 22:58:04 -0700 |
| commit | e4246eacbffa15242de69fe0331cac6f1869e410 (patch) | |
| tree | 47f2079ddb8cd1b53ca3c1b8bf6fab5641653a2b /src/lib | |
| parent | feat(tools): sequel catcher (diff) | |
| download | due.moe-e4246eacbffa15242de69fe0331cac6f1869e410.tar.xz due.moe-e4246eacbffa15242de69fe0331cac6f1869e410.zip | |
refactor(SequelCatcher): tidy
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/Data/AniList/media.ts | 32 | ||||
| -rw-r--r-- | src/lib/Data/AniList/prequels.ts | 36 | ||||
| -rw-r--r-- | src/lib/Media/links.ts | 3 | ||||
| -rw-r--r-- | src/lib/Tools/SequelCatcher.svelte | 22 |
4 files changed, 39 insertions, 54 deletions
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 @@ <script lang="ts"> - import { type AniListAuthorisation } from '$lib/Data/AniList/identity'; + import type { AniListAuthorisation } from '$lib/Data/AniList/identity'; import userIdentity from '$stores/identity'; import { filterRelations, type Media, mediaListCollection, Type } from '$lib/Data/AniList/media'; import LogInRestricted from '$lib/Error/LogInRestricted.svelte'; - import LinkedTooltip from '$lib/Tooltip/LinkedTooltip.svelte'; import anime from '$stores/anime'; - import identity from '$stores/identity'; import { onMount } from 'svelte'; import lastPruneTimes from '$stores/lastPruneTimes'; @@ -62,14 +60,20 @@ <ul> {#each filterRelations(mediaList) as { media, unwatchedRelations }} - <a href={outboundLink(media, 'anime', $settings.displayOutboundLinksTo)}> + <a + href={outboundLink(media, 'anime', $settings.displayOutboundLinksTo)} + target="_blank" + > <MediaTitleDisplay title={media.title} /> </a> <ul> {#each unwatchedRelations as relation} <li> - <a href={outboundLink(relation.node, 'anime', $settings.displayOutboundLinksTo)}> + <a + href={outboundLink(relation.node, 'anime', $settings.displayOutboundLinksTo)} + target="_blank" + > <MediaTitleDisplay title={relation.node.title} /> </a> </li> @@ -102,11 +106,3 @@ </blockquote> </div> {/if} - -<style> - .hint-toggle { - box-shadow: rgba(0, 0, 11, 0.2) 0px 7px 29px 0px, 0 0 0 5px var(--base02); - float: right; - border-radius: 8px; - } -</style> |