From 9c34323c9d516a6942e33352d23fef18a36cd0c5 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Fri, 21 Jul 2023 22:18:00 -0400 Subject: [PATCH] Merged manga play button fix --- .../eu/kanade/domain/chapter/model/ChapterFilter.kt | 6 +++++- .../kanade/tachiyomi/ui/library/LibraryScreenModel.kt | 11 ++++++++++- .../tachiyomi/util/chapter/ChapterGetNextUnread.kt | 4 ++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/kanade/domain/chapter/model/ChapterFilter.kt b/app/src/main/java/eu/kanade/domain/chapter/model/ChapterFilter.kt index 7ac4a4cc5..8398b4bc1 100644 --- a/app/src/main/java/eu/kanade/domain/chapter/model/ChapterFilter.kt +++ b/app/src/main/java/eu/kanade/domain/chapter/model/ChapterFilter.kt @@ -14,7 +14,7 @@ import tachiyomi.source.local.isLocal * Applies the view filters to the list of chapters obtained from the database. * @return an observable of the list of chapters filtered and sorted. */ -fun List.applyFilters(manga: Manga, downloadManager: DownloadManager): List { +fun List.applyFilters(manga: Manga, downloadManager: DownloadManager/* SY --> */, mergedManga: Map/* SY <-- */): List { val isLocalManga = manga.isLocal() val unreadFilter = manga.unreadFilter val downloadedFilter = manga.downloadedFilter @@ -23,6 +23,10 @@ fun List.applyFilters(manga: Manga, downloadManager: DownloadManager): return filter { chapter -> applyFilter(unreadFilter) { !chapter.read } } .filter { chapter -> applyFilter(bookmarkedFilter) { chapter.bookmark } } .filter { chapter -> + // SY --> + @Suppress("NAME_SHADOWING") + val manga = mergedManga.getOrElse(chapter.mangaId) { manga } + // SY <-- applyFilter(downloadedFilter) { val downloaded = downloadManager.isChapterDownloaded(chapter.name, chapter.scanlator, /* SY --> */ manga.ogTitle /* SY <-- */, manga.source) downloaded || isLocalManga diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt index 45392eed6..03576bdec 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt @@ -80,6 +80,7 @@ import tachiyomi.domain.category.interactor.GetCategories import tachiyomi.domain.category.interactor.SetMangaCategories import tachiyomi.domain.category.model.Category import tachiyomi.domain.chapter.interactor.GetChapterByMangaId +import tachiyomi.domain.chapter.interactor.GetMergedChapterByMangaId import tachiyomi.domain.chapter.model.Chapter import tachiyomi.domain.history.interactor.GetNextChapters import tachiyomi.domain.library.model.LibraryDisplayMode @@ -141,6 +142,7 @@ class LibraryScreenModel( private val getSearchTitles: GetSearchTitles = Injekt.get(), private val searchEngine: SearchEngine = Injekt.get(), private val setCustomMangaInfo: SetCustomMangaInfo = Injekt.get(), + private val getMergedChapterByMangaId: GetMergedChapterByMangaId = Injekt.get(), // SY <-- ) : StateScreenModel(State()) { @@ -582,7 +584,14 @@ class LibraryScreenModel( } suspend fun getNextUnreadChapter(manga: Manga): Chapter? { - return getChaptersByMangaId.await(manga.id).getNextUnread(manga, downloadManager) + // SY --> + val mergedManga = getMergedMangaById.await(manga.id).associateBy { it.id } + return if (manga.id == MERGED_SOURCE_ID) { + getMergedChapterByMangaId.await(manga.id) + } else { + getChaptersByMangaId.await(manga.id) + }.getNextUnread(manga, downloadManager, mergedManga) + // SY <-- } /** diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterGetNextUnread.kt b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterGetNextUnread.kt index 40563761d..eed60cc6e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterGetNextUnread.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterGetNextUnread.kt @@ -10,8 +10,8 @@ import tachiyomi.domain.manga.model.Manga /** * Gets next unread chapter with filters and sorting applied */ -fun List.getNextUnread(manga: Manga, downloadManager: DownloadManager): Chapter? { - return applyFilters(manga, downloadManager).let { chapters -> +fun List.getNextUnread(manga: Manga, downloadManager: DownloadManager /* SY --> */, mergedManga: Map/* SY <-- */): Chapter? { + return applyFilters(manga, downloadManager/* SY --> */, mergedManga/* SY <-- */).let { chapters -> // SY --> if (manga.isEhBasedManga()) { return@let if (manga.sortDescending()) {