diff --git a/src/components/chapter/ChapterCard.tsx b/src/components/chapter/ChapterCard.tsx index b5eda427..e1c96c70 100644 --- a/src/components/chapter/ChapterCard.tsx +++ b/src/components/chapter/ChapterCard.tsx @@ -38,6 +38,7 @@ import { ChapterReadInfo, ChapterScanlatorInfo, } from '@/lib/data/Chapters.ts'; +import { ChaptersWithMeta } from '@/lib/data/ChaptersWithMeta.ts'; type TChapter = ChapterIdInfo & ChapterMangaInfo & @@ -182,7 +183,10 @@ export const ChapterCard: React.FC = (props: IProps) => { chapter={chapter} allChapters={allChapters} handleSelection={() => onSelect(true)} - canBeDownloaded={!chapter.isDownloaded && !dc} + canBeDownloaded={ChaptersWithMeta.isDownloadable({ + chapter, + downloadChapter: dc, + })} /> )} diff --git a/src/lib/data/ChaptersWithMeta.ts b/src/lib/data/ChaptersWithMeta.ts index a543f4a0..1e3fd460 100644 --- a/src/lib/data/ChaptersWithMeta.ts +++ b/src/lib/data/ChaptersWithMeta.ts @@ -50,11 +50,12 @@ export class ChaptersWithMeta { return chapters.filter(({ chapter }) => !Chapters.isDownloaded(chapter)); } + static isDownloadable({ chapter, downloadChapter }: Chapter): boolean { + return !Chapters.isDownloaded(chapter) && (!downloadChapter || downloadChapter?.state === DownloadState.Error); + } + static getDownloadable(chapters: Chapter[]): Chapter[] { - return chapters.filter( - ({ chapter, downloadChapter }) => - !Chapters.isDownloaded(chapter) && (!downloadChapter || downloadChapter?.state === DownloadState.Error), - ); + return chapters.filter(this.isDownloadable); } static getBookmarked(chapters: Chapter[]): Chapter[] {