aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-12-15 13:31:34 -0800
committerFuwn <[email protected]>2023-12-15 13:31:34 -0800
commitf1e3313ea3dc0ccf2a443d6afd66f8663de819ba (patch)
treeb2115f8930224bb2801ef166d95cf387cb301819 /src/lib
parentfeat(media): #dueinclude (diff)
downloaddue.moe-f1e3313ea3dc0ccf2a443d6afd66f8663de819ba.tar.xz
due.moe-f1e3313ea3dc0ccf2a443d6afd66f8663de819ba.zip
feat(media): multiple dueincludes
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/AniList/media.ts23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/lib/AniList/media.ts b/src/lib/AniList/media.ts
index dcbefdaa..ff43732e 100644
--- a/src/lib/AniList/media.ts
+++ b/src/lib/AniList/media.ts
@@ -66,25 +66,34 @@ export const flattenLists = (lists: { name: string; entries: { media: Media }[]
if (lists === undefined) return [];
const flattenedList: Media[] = [];
- const ignoredMediaIds: number[] = [];
- const processedList = (list: Media[]) =>
+ const markedMediaIds: number[] = [];
+ let dueInclude = false;
+ const processedList = (list: Media[], include: boolean) =>
list
- .filter((media) => !ignoredMediaIds.includes(media.id))
+ .filter((media) =>
+ include ? markedMediaIds.includes(media.id) : !markedMediaIds.includes(media.id)
+ )
.filter(
(item, index, self) =>
self.findIndex((itemToCompare) => itemToCompare.id === item.id) === index
);
for (const list of lists) {
- if (list.name.toLowerCase().includes('#dueinclude'))
- return processedList(list.entries.map((entry) => entry.media));
+ if (list.name.toLowerCase().includes('#dueinclude')) {
+ dueInclude = true;
+
+ markedMediaIds.splice(0, markedMediaIds.length);
+ markedMediaIds.push(...list.entries.map((entry) => entry.media.id));
+ }
+
+ if (dueInclude) continue;
if (list.name.toLowerCase().includes('#dueignore'))
- ignoredMediaIds.push(...list.entries.map((entry) => entry.media.id));
+ markedMediaIds.push(...list.entries.map((entry) => entry.media.id));
else flattenedList.push(...list.entries.map((entry) => entry.media));
}
- return processedList(flattenedList);
+ return processedList(flattenedList, dueInclude);
};
const collectionQueryTemplate = (type: Type, userId: number, includeCompleted: boolean) =>