aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Data/AniList
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-07-07 22:58:04 -0700
committerFuwn <[email protected]>2024-07-07 22:58:04 -0700
commite4246eacbffa15242de69fe0331cac6f1869e410 (patch)
tree47f2079ddb8cd1b53ca3c1b8bf6fab5641653a2b /src/lib/Data/AniList
parentfeat(tools): sequel catcher (diff)
downloaddue.moe-e4246eacbffa15242de69fe0331cac6f1869e410.tar.xz
due.moe-e4246eacbffa15242de69fe0331cac6f1869e410.zip
refactor(SequelCatcher): tidy
Diffstat (limited to 'src/lib/Data/AniList')
-rw-r--r--src/lib/Data/AniList/media.ts32
-rw-r--r--src/lib/Data/AniList/prequels.ts36
2 files changed, 28 insertions, 40 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 {