aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-08-23 15:05:46 -0700
committerFuwn <[email protected]>2024-08-23 15:05:46 -0700
commit074f541dc00ca9811ca42b4e71f2e132b4c929cd (patch)
tree351380f3e7e63994db166c99317288fcc072ecc7
parentfeat(SequelCatcher): show current progress (diff)
downloaddue.moe-074f541dc00ca9811ca42b4e71f2e132b4c929cd.tar.xz
due.moe-074f541dc00ca9811ca42b4e71f2e132b4c929cd.zip
feat(SequelCatcher): side stories toggle
-rw-r--r--src/lib/Data/AniList/media.ts5
-rw-r--r--src/lib/Tools/SequelCatcher/List.svelte6
2 files changed, 8 insertions, 3 deletions
diff --git a/src/lib/Data/AniList/media.ts b/src/lib/Data/AniList/media.ts
index e99c6dff..d3b38005 100644
--- a/src/lib/Data/AniList/media.ts
+++ b/src/lib/Data/AniList/media.ts
@@ -476,13 +476,14 @@ export interface UnwatchedRelationMap {
unwatchedRelations: PrequelRelation[];
}
-export const filterRelations = (media: Media[]) => {
+export const filterRelations = (media: Media[], includeSideStories = false) => {
const unwatchedRelationsMap: UnwatchedRelationMap[] = [];
for (const mediaItem of media) {
const sequels = mediaItem.relations.edges.filter(
(relation: PrequelRelation) =>
- relation.relationType === 'SEQUEL' &&
+ (relation.relationType === 'SEQUEL' ||
+ (relation.relationType === 'SIDE_STORY' && includeSideStories)) &&
!media.some((mediaItem) => mediaItem.id === relation.node.id) &&
(relation.node.mediaListEntry
? relation.node.mediaListEntry.status !== 'COMPLETED'
diff --git a/src/lib/Tools/SequelCatcher/List.svelte b/src/lib/Tools/SequelCatcher/List.svelte
index 71513e76..8205b8c7 100644
--- a/src/lib/Tools/SequelCatcher/List.svelte
+++ b/src/lib/Tools/SequelCatcher/List.svelte
@@ -7,6 +7,7 @@
export let mediaListUnchecked: Media[];
let includeCurrent = false;
+ let includeSideStories = false;
const matchCheck = (media: Media | undefined, swap = false) =>
(media &&
@@ -25,11 +26,14 @@
<input type="checkbox" bind:checked={includeCurrent} /> Include current (watching, rewatching,
paused)
+<br />
+<input type="checkbox" bind:checked={includeSideStories} /> Include side stories (e.g., OVAs,
+specials, etc.)
<p />
<ol class="media-list">
- {#each filterRelations(mediaListUnchecked.filter((media) => media.mediaListEntry?.status === 'COMPLETED')) as { media, unwatchedRelations }}
+ {#each filterRelations( mediaListUnchecked.filter((media) => media.mediaListEntry?.status === 'COMPLETED'), includeSideStories ) as { media, unwatchedRelations }}
{#if unwatchedRelations.filter( (relation) => matchCheck(mediaListUnchecked.find((media) => media.id === relation.node.id)) ).length !== 0 || includeCurrent}
<li>
<a href={outboundLink(media, 'anime', $settings.displayOutboundLinksTo)} target="_blank">