From 5ab921aba74233e841959f0c7f203ebb76790ecc Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Mon, 29 Apr 2024 22:59:40 +0200 Subject: [PATCH] Fix TypeError in Mangas::downloadChapters In case a manga was completely downloaded, the grouped chapters did not contain a list for the specific manga id, resulting in an TypeError due to trying to use the array as if it was not undefined --- src/lib/data/Chapters.ts | 4 +++- src/lib/data/Mangas.ts | 9 +++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/lib/data/Chapters.ts b/src/lib/data/Chapters.ts index e1be4741..f8f51ea8 100644 --- a/src/lib/data/Chapters.ts +++ b/src/lib/data/Chapters.ts @@ -314,7 +314,9 @@ export class Chapters { ): T[] { const chapterNumberToChapters = Object.groupBy(allChapters, ({ chapterNumber }) => chapterNumber); - return uniqueChapters.map(({ chapterNumber }) => chapterNumberToChapters[chapterNumber]!).flat(); + return uniqueChapters + .map((uniqueChapter) => chapterNumberToChapters[uniqueChapter.chapterNumber] ?? [uniqueChapter]) + .flat(); } static removeDuplicates(currentChapter: T, chapters: T[]): T[] { diff --git a/src/lib/data/Mangas.ts b/src/lib/data/Mangas.ts index 78fc1753..766ae33d 100644 --- a/src/lib/data/Mangas.ts +++ b/src/lib/data/Mangas.ts @@ -264,11 +264,8 @@ export class Mangas { const mangaIdToUnReadDownloadedChapters = Object.groupBy(unReadDownloadedChapters, ({ mangaId }) => mangaId); const mangaIdToDownloadSize = Object.entries(mangaIdToUnReadDownloadedChapters).map( - ([mangaId, downloadedChapters]) => { - const downloadAheadSize = Math.max( - 0, - (size ?? downloadedChapters!.length) - downloadedChapters!.length, - ); + ([mangaId, downloadedChapters = []]) => { + const downloadAheadSize = Math.max(0, (size ?? downloadedChapters.length) - downloadedChapters.length); const actualSize = downloadAhead ? downloadAheadSize : size; return [mangaId, actualSize]; @@ -281,7 +278,7 @@ export class Mangas { const chapterIdsToDownload = mangaIdToActualDownloadSize .map(([mangaId, actualSize]) => { - const mangaChapters = mangaIdToChaptersToConsider[Number(mangaId)]!; + const mangaChapters = mangaIdToChaptersToConsider[Number(mangaId)] ?? []; if (!mangaChapters.length) { return [];