Merged manga play button fix

This commit is contained in:
Jobobby04 2023-07-21 22:18:00 -04:00
parent 70bbede29e
commit 9c34323c9d
3 changed files with 17 additions and 4 deletions

View File

@ -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<Chapter>.applyFilters(manga: Manga, downloadManager: DownloadManager): List<Chapter> {
fun List<Chapter>.applyFilters(manga: Manga, downloadManager: DownloadManager/* SY --> */, mergedManga: Map<Long, Manga>/* SY <-- */): List<Chapter> {
val isLocalManga = manga.isLocal()
val unreadFilter = manga.unreadFilter
val downloadedFilter = manga.downloadedFilter
@ -23,6 +23,10 @@ fun List<Chapter>.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

View File

@ -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<LibraryScreenModel.State>(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 <--
}
/**

View File

@ -10,8 +10,8 @@ import tachiyomi.domain.manga.model.Manga
/**
* Gets next unread chapter with filters and sorting applied
*/
fun List<Chapter>.getNextUnread(manga: Manga, downloadManager: DownloadManager): Chapter? {
return applyFilters(manga, downloadManager).let { chapters ->
fun List<Chapter>.getNextUnread(manga: Manga, downloadManager: DownloadManager /* SY --> */, mergedManga: Map<Long, Manga>/* SY <-- */): Chapter? {
return applyFilters(manga, downloadManager/* SY --> */, mergedManga/* SY <-- */).let { chapters ->
// SY -->
if (manga.isEhBasedManga()) {
return@let if (manga.sortDescending()) {