From aa5259c82587214acdca1fcb60e6432388a7c1b6 Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Tue, 16 Jan 2024 21:34:34 +0800 Subject: [PATCH] Fix local source cover updating Ref: tachiyomiorg/tachiyomi#10186 --- .../eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt | 9 ++++++++- .../kotlin/tachiyomi/source/local/LocalSource.kt | 10 +++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt index ae61519ee9..42de7345a5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt @@ -18,6 +18,7 @@ import eu.kanade.domain.manga.interactor.GetExcludedScanlators import eu.kanade.domain.manga.interactor.SetExcludedScanlators import eu.kanade.domain.manga.interactor.UpdateManga import eu.kanade.domain.manga.model.chaptersFiltered +import eu.kanade.domain.manga.model.copyFrom import eu.kanade.domain.manga.model.downloadedFilter import eu.kanade.domain.manga.model.toSManga import eu.kanade.domain.track.interactor.AddTracks @@ -537,7 +538,13 @@ class MangaScreenModel( val state = successState ?: return try { withIOContext { - val chapters = state.source.getChapterList(state.manga.toSManga()) + val manga = state.manga.toSManga() + val chapters = state.source.getChapterList(manga) + + // `LocalSource.getChapterList` has side effects since 82bdf63 + if (state.manga != state.manga.copyFrom(manga)) { + updateManga.awaitUpdateFromSource(state.manga, manga, manualFetch) + } val newChapters = syncChaptersWithSource.await( chapters, diff --git a/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt b/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt index 93bb2ec6fc..9071eebae2 100644 --- a/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt +++ b/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt @@ -126,10 +126,8 @@ actual class LocalSource( title = mangaDir.name.orEmpty() url = mangaDir.name.orEmpty() - // Try to find the cover - coverManager.find(mangaDir.name.orEmpty())?.let { - thumbnail_url = it.uri.toString() - } + // Try to find the cover, reset to null on failure so it can be updated + thumbnail_url = coverManager.find(mangaDir.name.orEmpty())?.uri?.toString() } } } @@ -140,9 +138,7 @@ actual class LocalSource( // Manga details related override suspend fun getMangaDetails(manga: SManga): SManga = withIOContext { - coverManager.find(manga.url)?.let { - manga.thumbnail_url = it.uri.toString() - } + manga.thumbnail_url = coverManager.find(manga.url)?.uri?.toString() // Augment manga details based on metadata files try {