diff --git a/CHANGELOG.md b/CHANGELOG.md index d6b20ecf..1407773e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -59,7 +59,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - (**Reader**) Fix infinite scrolling sometimes not opening previous/next chapter - (**Reader**) Fix preserving scroll position with RTL reading direction and a language that is read RTL - (**Browse**) Fix showing only nsfw sources in the browse source page when the "show nsfw" setting is disabled -- (**Manga**) Fix mark as read/unread option not being disabled for manga without any chapters +- (**Manga/Library**) Fix mark as read/unread option not being disabled for manga without any chapters +- (**Manga/Library**) Fix delete/download option not being disabled for manga without any chapters ## [20260509.01] (r3147) - 2026-05-09 diff --git a/src/features/manga/components/MangaActionMenuItems.tsx b/src/features/manga/components/MangaActionMenuItems.tsx index a4cd7bc5..78d9ba96 100644 --- a/src/features/manga/components/MangaActionMenuItems.tsx +++ b/src/features/manga/components/MangaActionMenuItems.tsx @@ -82,10 +82,10 @@ export const MangaActionMenuItems = ({ const shouldShowMenuItem = createShouldShowMenuItem(isSingleMode); const isMenuItemDisabled = createIsMenuItemDisabled(isSingleMode); - const isFullyDownloaded = !!manga && manga.downloadCount === manga.chapters.totalCount; - const hasDownloadedChapters = !!manga?.downloadCount; - const hasUnreadChapters = !!manga?.unreadCount; - const hasReadChapters = !!manga && manga.unreadCount !== manga.chapters.totalCount; + const isPartiallyDownloaded = !!manga && Mangas.isPartiallyDownloaded(manga); + const hasDownloadedChapters = manga && Mangas.isPartiallyDownloaded(manga); + const hasUnreadChapters = manga && Mangas.isPartiallyRead(manga); + const hasReadChapters = !!manga && Mangas.isPartiallyRead(manga); const handleSelect = () => { handleSelection?.(manga.id, true); @@ -121,7 +121,7 @@ export const MangaActionMenuItems = ({ {!!handleSelection && isSingleMode && ( )} - {shouldShowMenuItem(!isFullyDownloaded) && ( + {shouldShowMenuItem(isPartiallyDownloaded) && ( 0 && downloadCount === 0; } static getNotDownloaded(mangas: Mangas[]): Mangas[] { @@ -128,7 +128,7 @@ export class Mangas { } static isFullyDownloaded({ downloadCount, chapters: { totalCount } }: MangaDownloadInfo): boolean { - return downloadCount === totalCount; + return totalCount > 0 && downloadCount === totalCount; } static getFullyDownloaded(mangas: Mangas[]): Mangas[] { @@ -136,7 +136,11 @@ export class Mangas { } static isPartiallyDownloaded(manga: MangaDownloadInfo): boolean { - return !Mangas.isNotDownloaded(manga) && !Mangas.isFullyDownloaded(manga); + const { + chapters: { totalCount }, + } = manga; + + return totalCount > 0 && !Mangas.isNotDownloaded(manga) && !Mangas.isFullyDownloaded(manga); } static getPartiallyDownloaded(mangas: Mangas[]): Mangas[] {