diff options
| author | Fuwn <[email protected]> | 2023-11-06 23:46:16 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-11-06 23:46:16 -0800 |
| commit | 8ad5a3c31198bd3d46e3d4f4c4891cd12136d4e3 (patch) | |
| tree | 48784e00fc66e82ea9efec4b8c6eaa7a7bb52307 /src/lib | |
| parent | fix(docker): ignore includes (diff) | |
| download | due.moe-8ad5a3c31198bd3d46e3d4f4c4891cd12136d4e3.tar.xz due.moe-8ad5a3c31198bd3d46e3d4f4c4891cd12136d4e3.zip | |
feat(manga): ignored list
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/AniList/media.ts | 43 |
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 } + } } } } }` }) }) |