Fix page previews not opening read chapters
This commit is contained in:
parent
a960b624ce
commit
292f5a93aa
@ -1,6 +1,6 @@
|
|||||||
package eu.kanade.domain.manga.interactor
|
package eu.kanade.domain.manga.interactor
|
||||||
|
|
||||||
import eu.kanade.domain.history.interactor.GetNextChapters
|
import eu.kanade.domain.chapter.interactor.GetChapterByMangaId
|
||||||
import eu.kanade.domain.manga.model.Manga
|
import eu.kanade.domain.manga.model.Manga
|
||||||
import eu.kanade.domain.manga.model.PagePreview
|
import eu.kanade.domain.manga.model.PagePreview
|
||||||
import eu.kanade.tachiyomi.data.cache.PagePreviewCache
|
import eu.kanade.tachiyomi.data.cache.PagePreviewCache
|
||||||
@ -10,13 +10,13 @@ import exh.source.getMainSource
|
|||||||
|
|
||||||
class GetPagePreviews(
|
class GetPagePreviews(
|
||||||
private val pagePreviewCache: PagePreviewCache,
|
private val pagePreviewCache: PagePreviewCache,
|
||||||
private val getChapters: GetNextChapters,
|
private val getChapters: GetChapterByMangaId,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
suspend fun await(manga: Manga, source: Source, page: Int): Result {
|
suspend fun await(manga: Manga, source: Source, page: Int): Result {
|
||||||
@Suppress("NAME_SHADOWING")
|
@Suppress("NAME_SHADOWING")
|
||||||
val source = source.getMainSource<PagePreviewSource>() ?: return Result.Unused
|
val source = source.getMainSource<PagePreviewSource>() ?: return Result.Unused
|
||||||
val chapters = getChapters.await(manga.id, false)
|
val chapters = getChapters.await(manga.id).sortedByDescending { it.sourceOrder }
|
||||||
val chapterIds = chapters.map { it.id }
|
val chapterIds = chapters.map { it.id }
|
||||||
return try {
|
return try {
|
||||||
val pagePreviews = try {
|
val pagePreviews = try {
|
||||||
|
@ -59,7 +59,6 @@ import eu.kanade.tachiyomi.ui.manga.merged.EditMergedSettingsDialog
|
|||||||
import eu.kanade.tachiyomi.ui.manga.track.TrackInfoDialogHomeScreen
|
import eu.kanade.tachiyomi.ui.manga.track.TrackInfoDialogHomeScreen
|
||||||
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
|
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
|
||||||
import eu.kanade.tachiyomi.ui.webview.WebViewActivity
|
import eu.kanade.tachiyomi.ui.webview.WebViewActivity
|
||||||
import eu.kanade.tachiyomi.util.chapter.getNextUnread
|
|
||||||
import eu.kanade.tachiyomi.util.lang.launchUI
|
import eu.kanade.tachiyomi.util.lang.launchUI
|
||||||
import eu.kanade.tachiyomi.util.lang.withIOContext
|
import eu.kanade.tachiyomi.util.lang.withIOContext
|
||||||
import eu.kanade.tachiyomi.util.lang.withNonCancellableContext
|
import eu.kanade.tachiyomi.util.lang.withNonCancellableContext
|
||||||
@ -177,7 +176,7 @@ class MangaScreen(
|
|||||||
onMergedSettingsClicked = screenModel::showEditMergedSettingsDialog,
|
onMergedSettingsClicked = screenModel::showEditMergedSettingsDialog,
|
||||||
onMergeClicked = { openSmartSearch(navigator, successState.manga) },
|
onMergeClicked = { openSmartSearch(navigator, successState.manga) },
|
||||||
onMergeWithAnotherClicked = { mergeWithAnother(navigator, context, successState.manga, screenModel::smartSearchMerge) },
|
onMergeWithAnotherClicked = { mergeWithAnother(navigator, context, successState.manga, screenModel::smartSearchMerge) },
|
||||||
onOpenPagePreview = { openPagePreview(context, successState.chapters.getNextUnread(successState.manga), it) },
|
onOpenPagePreview = { openPagePreview(context, successState.chapters.minByOrNull { it.chapter.sourceOrder }?.chapter, it) },
|
||||||
onMorePreviewsClicked = { openMorePagePreviews(navigator, successState.manga) },
|
onMorePreviewsClicked = { openMorePagePreviews(navigator, successState.manga) },
|
||||||
// SY <--
|
// SY <--
|
||||||
onMultiBookmarkClicked = screenModel::bookmarkChapters,
|
onMultiBookmarkClicked = screenModel::bookmarkChapters,
|
||||||
|
@ -5,8 +5,8 @@ import androidx.compose.runtime.mutableStateOf
|
|||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
import cafe.adriel.voyager.core.model.StateScreenModel
|
import cafe.adriel.voyager.core.model.StateScreenModel
|
||||||
import cafe.adriel.voyager.core.model.coroutineScope
|
import cafe.adriel.voyager.core.model.coroutineScope
|
||||||
|
import eu.kanade.domain.chapter.interactor.GetChapterByMangaId
|
||||||
import eu.kanade.domain.chapter.model.Chapter
|
import eu.kanade.domain.chapter.model.Chapter
|
||||||
import eu.kanade.domain.history.interactor.GetNextChapters
|
|
||||||
import eu.kanade.domain.manga.interactor.GetManga
|
import eu.kanade.domain.manga.interactor.GetManga
|
||||||
import eu.kanade.domain.manga.interactor.GetPagePreviews
|
import eu.kanade.domain.manga.interactor.GetPagePreviews
|
||||||
import eu.kanade.domain.manga.model.Manga
|
import eu.kanade.domain.manga.model.Manga
|
||||||
@ -26,7 +26,7 @@ class PagePreviewScreenModel(
|
|||||||
private val mangaId: Long,
|
private val mangaId: Long,
|
||||||
private val getPagePreviews: GetPagePreviews = Injekt.get(),
|
private val getPagePreviews: GetPagePreviews = Injekt.get(),
|
||||||
private val getManga: GetManga = Injekt.get(),
|
private val getManga: GetManga = Injekt.get(),
|
||||||
private val getNextChapters: GetNextChapters = Injekt.get(),
|
private val getChapterByMangaId: GetChapterByMangaId = Injekt.get(),
|
||||||
private val sourceManager: SourceManager = Injekt.get(),
|
private val sourceManager: SourceManager = Injekt.get(),
|
||||||
) : StateScreenModel<PagePreviewState>(PagePreviewState.Loading) {
|
) : StateScreenModel<PagePreviewState>(PagePreviewState.Loading) {
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ class PagePreviewScreenModel(
|
|||||||
init {
|
init {
|
||||||
coroutineScope.launchIO {
|
coroutineScope.launchIO {
|
||||||
val manga = getManga.await(mangaId)!!
|
val manga = getManga.await(mangaId)!!
|
||||||
val chapter = getNextChapters.await(mangaId, onlyUnread = false).lastOrNull()
|
val chapter = getChapterByMangaId.await(mangaId).minByOrNull { it.sourceOrder }
|
||||||
if (chapter == null) {
|
if (chapter == null) {
|
||||||
mutableState.update {
|
mutableState.update {
|
||||||
PagePreviewState.Error(Exception("No chapters found"))
|
PagePreviewState.Error(Exception("No chapters found"))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user