aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-11-06 23:46:16 -0800
committerFuwn <[email protected]>2023-11-06 23:46:16 -0800
commit8ad5a3c31198bd3d46e3d4f4c4891cd12136d4e3 (patch)
tree48784e00fc66e82ea9efec4b8c6eaa7a7bb52307 /src/lib
parentfix(docker): ignore includes (diff)
downloaddue.moe-8ad5a3c31198bd3d46e3d4f4c4891cd12136d4e3.tar.xz
due.moe-8ad5a3c31198bd3d46e3d4f4c4891cd12136d4e3.zip
feat(manga): ignored list
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/AniList/media.ts43
1 files changed, 27 insertions, 16 deletions
diff --git a/src/lib/AniList/media.ts b/src/lib/AniList/media.ts
index 701eddf0..3b413e16 100644
--- a/src/lib/AniList/media.ts
+++ b/src/lib/AniList/media.ts
@@ -44,22 +44,35 @@ export interface Media {
};
}
-export const flattenLists = (lists: { entries: { media: Media }[] }[]) => {
+export const flattenLists = (lists: { name: string; entries: { media: Media }[] }[]) => {
if (lists === undefined) {
return [];
}
let flattenedList: { media: Media }[] = [];
const minimisedList: Media[] = [];
+ const ignoredMedia: Media[] = [];
for (const list of lists) {
- flattenedList = flattenedList.concat(list.entries);
+ if (list.name.toLowerCase().includes('#dueignore')) {
+ ignoredMedia.push(...list.entries.map((entry) => entry.media));
+ } else {
+ flattenedList = flattenedList.concat(list.entries);
+ }
}
for (const [position, entry] of flattenedList.entries()) {
minimisedList[position] = entry.media;
}
+ for (const ignored of ignoredMedia) {
+ const index = minimisedList.findIndex((item) => item.id === ignored.id);
+
+ if (index !== -1) {
+ minimisedList.splice(index, 1);
+ }
+ }
+
return minimisedList.filter((item, index, array) => {
return (
array.findIndex((i) => {
@@ -124,7 +137,7 @@ export const mediaListCollection = async (
query: `{ MediaListCollection(userId: ${userIdentity.id}, type: ${
type === Type.Anime ? 'ANIME' : 'MANGA'
}${includeCompleted ? '' : ', status_not_in: [ COMPLETED ]'}) {
- lists { entries { media {
+ lists { name entries { media {
id status type episodes chapters format
title { romaji english native }
nextAiringEpisode { episode timeUntilAiring }
@@ -167,19 +180,17 @@ export const publicMediaListCollection = async (userId: number, type: Type): Pro
body: JSON.stringify({
query: `{ MediaListCollection(userId: ${userId}, type: ${
type === Type.Anime ? 'ANIME' : 'MANGA'
- }, status_not_in: [ COMPLETED ]) {
- lists { entries { media {
- id
- status
- type
- episodes
- format
- title { romaji english native }
- nextAiringEpisode { episode timeUntilAiring }
- mediaListEntry { progress status }
- startDate { year }
- } } }
- }
+ }, status_not_in: [ COMPLETED ]) { lists { name entries { media {
+ id
+ status
+ type
+ episodes
+ format
+ title { romaji english native }
+ nextAiringEpisode { episode timeUntilAiring }
+ mediaListEntry { progress status }
+ startDate { year }
+ } } } }
}`
})
})