From 4f7fb68e4211279cd38a02822269a1b19e913a8f Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Tue, 5 May 2026 00:55:45 +0200 Subject: [PATCH] Prevent enqueuing already queued chapter downloads Didn't break anything, but creates unnecessary requests as well as misleading toasts --- src/features/manga/services/Mangas.ts | 32 ++++++++++++++------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/features/manga/services/Mangas.ts b/src/features/manga/services/Mangas.ts index 5a963984..ab070749 100644 --- a/src/features/manga/services/Mangas.ts +++ b/src/features/manga/services/Mangas.ts @@ -219,29 +219,31 @@ export class Mangas { Object.fromEntries([...mangaIdToDefaultDownloadSize, ...mangaIdToDownloadSize]), ) satisfies MangaIdToDownloadSize[]; - const chapterIdsToDownload = mangaIdToActualDownloadSize.flatMap(([mangaId, actualSize]) => { - const mangaChapters = mangaIdToChaptersToConsider[Number(mangaId)] ?? []; + const chaptersToDownload = mangaIdToActualDownloadSize + .flatMap(([mangaId, actualSize]) => { + const mangaChapters = mangaIdToChaptersToConsider[Number(mangaId)] ?? []; - if (!mangaChapters.length) { - return []; - } + if (!mangaChapters.length) { + return []; + } - const shouldDownloadAll = actualSize === undefined; - if (shouldDownloadAll) { - return mangaChapters; - } + const shouldDownloadAll = actualSize === undefined; + if (shouldDownloadAll) { + return mangaChapters; + } - const uniqueMangaChapters = Chapters.removeDuplicates(mangaChapters[0], mangaChapters); - const uniqueMangaChaptersToDownload = uniqueMangaChapters.slice(0, actualSize); + const uniqueMangaChapters = Chapters.removeDuplicates(mangaChapters[0], mangaChapters); + const uniqueMangaChaptersToDownload = uniqueMangaChapters.slice(0, actualSize); - return Chapters.addDuplicates(uniqueMangaChaptersToDownload, mangaChapters); - }); + return Chapters.addDuplicates(uniqueMangaChaptersToDownload, mangaChapters); + }) + .filter(Chapters.isDownloadable); - if (!chapterIdsToDownload.length) { + if (!chaptersToDownload.length) { return Promise.resolve(); } - return Chapters.download(Chapters.getIds(chapterIdsToDownload), disableConfirmation); + return Chapters.download(Chapters.getIds(chaptersToDownload), disableConfirmation); } static async deleteChapters(mangaIds: number[], disableConfirmation?: boolean): Promise {