aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-11-18 16:43:05 -0800
committerFuwn <[email protected]>2024-11-18 16:43:05 -0800
commitf82a798a099e844084c863624f2d718ab942e197 (patch)
tree712e8cb188621dbc4b1782977e03ab6a4fc0a0c1
parentfeat(CleanMangaList): add total due episode count toggle function (diff)
downloaddue.moe-f82a798a099e844084c863624f2d718ab942e197.tar.xz
due.moe-f82a798a099e844084c863624f2d718ab942e197.zip
feat(List): display total episodes everywhere toggle
-rw-r--r--src/lib/List/Anime/CleanAnimeList.svelte5
-rw-r--r--src/lib/List/Manga/CleanMangaList.svelte4
-rw-r--r--src/lib/Settings/Categories/Display.svelte9
-rw-r--r--src/stores/settings.ts22
4 files changed, 28 insertions, 12 deletions
diff --git a/src/lib/List/Anime/CleanAnimeList.svelte b/src/lib/List/Anime/CleanAnimeList.svelte
index 0220a366..b8079f7a 100644
--- a/src/lib/List/Anime/CleanAnimeList.svelte
+++ b/src/lib/List/Anime/CleanAnimeList.svelte
@@ -32,6 +32,8 @@
let keyCacher: NodeJS.Timeout;
let totalEpisodeDueCount = media
.map((anime) => {
+ if ($settings.displayTotalEpisodes && anime.status === 'FINISHED') return anime.episodes;
+
if (anime.mediaListEntry?.status === 'COMPLETED') return 0;
return (anime.nextAiringEpisode?.episode || 1) - (anime.mediaListEntry?.progress || 0) - 1;
@@ -100,7 +102,8 @@
<ListTitle
time={endTime / 1000}
- count={$settings.displayTotalDueEpisodes && !notYetReleased && !completed && !upcoming
+ count={($settings.displayTotalDueEpisodes && !notYetReleased && !completed && !upcoming) ||
+ $settings.displayTotalEpisodes
? totalEpisodeDueCount
: media.length}
{title}
diff --git a/src/lib/List/Manga/CleanMangaList.svelte b/src/lib/List/Manga/CleanMangaList.svelte
index 7b5b04b7..cbe2bd9f 100644
--- a/src/lib/List/Manga/CleanMangaList.svelte
+++ b/src/lib/List/Manga/CleanMangaList.svelte
@@ -53,7 +53,9 @@
{#if authorised}
<ListTitle
- count={$settings.displayTotalDueEpisodes && due ? totalEpisodeDueCount : media.length}
+ count={($settings.displayTotalDueEpisodes && due) || $settings.displayTotalEpisodes
+ ? totalEpisodeDueCount
+ : media.length}
time={endTime / 1000}
title={due
? $locale().lists.due.mangaAndLightNovels
diff --git a/src/lib/Settings/Categories/Display.svelte b/src/lib/Settings/Categories/Display.svelte
index 3b572b7b..1dbe4c95 100644
--- a/src/lib/Settings/Categories/Display.svelte
+++ b/src/lib/Settings/Categories/Display.svelte
@@ -329,7 +329,16 @@
<SettingCheckboxToggle
setting="displayTotalDueEpisodes"
text="Display total number of due episodes instead of due media count"
+ lineBreak={!$settings.displayTotalDueEpisodes}
/>
+
+{#if $settings.displayTotalDueEpisodes}
+ <SettingCheckboxToggle
+ setting="displayTotalEpisodes"
+ text="Apply to all media lists, not just due media lists"
+ />
+{/if}
+
<SettingCheckboxToggle
setting="displayScheduleFilterList"
text="Only display media on your media lists in Subtitle Schedule"
diff --git a/src/stores/settings.ts b/src/stores/settings.ts
index 9d6b0e3e..3d663a23 100644
--- a/src/stores/settings.ts
+++ b/src/stores/settings.ts
@@ -30,16 +30,16 @@ export interface Settings {
displayPlannedAnime: boolean;
displayFurigana: boolean;
displayAoButa:
- | 'kaede'
- | 'mai'
- | 'mai_2'
- | 'nodoka'
- | 'rio'
- | 'sakuta'
- | 'shouko'
- | 'tomoe'
- | 'random'
- | 'none';
+ | 'kaede'
+ | 'mai'
+ | 'mai_2'
+ | 'nodoka'
+ | 'rio'
+ | 'sakuta'
+ | 'shouko'
+ | 'tomoe'
+ | 'random'
+ | 'none';
disableManga: boolean;
disableAnime: boolean;
disableUpcomingAnime: boolean;
@@ -61,6 +61,7 @@ export interface Settings {
displayBlurAdultContent: boolean;
displayCopyMediaTitleNotLink: boolean;
displayTotalDueEpisodes: boolean;
+ displayTotalEpisodes: boolean;
displayAniListNotifications: boolean;
displayFiltersIncludeCompleted: boolean;
displayDataSaver: boolean;
@@ -104,6 +105,7 @@ const defaultSettings: Settings = {
displayBlurAdultContent: true,
displayCopyMediaTitleNotLink: false,
displayTotalDueEpisodes: false,
+ displayTotalEpisodes: false,
displayAniListNotifications: false,
displayFiltersIncludeCompleted: false,
displayDataSaver: false,