From 4f46d0ee286fa51daff137adc085464a81b8a0e8 Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Sun, 28 Jul 2024 12:25:54 +0700 Subject: [PATCH] feat(source/local): Button to invalidate local source manga cover In case Android somehow messing up the URI the first time --- CHANGELOG.md | 4 ++++ .../eu/kanade/tachiyomi/source/LocalSource.kt | 7 ++++++ .../tachiyomi/ui/manga/EditMangaDialog.kt | 22 +++++++++++++------ .../ui/manga/MangaDetailsPresenter.kt | 12 +++++----- .../moko-resources/base/strings.xml | 1 + 5 files changed, 34 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0527c3d55c..9027f7d47f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,10 @@ ## Other ?? Technical stuff, what happened behind the scene --> +## Additions +- Add button to local source's entry info editor to invalidate cover, + in case Android messing it up (especially on heavily modified ROMs) + ## Changes - Add more info to WorkerInfo page - Added "next scheduled run" diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt b/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt index c2176837c4..94965ec334 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt @@ -72,6 +72,13 @@ class LocalSource(private val context: Context) : CatalogueSource, UnmeteredSour } } + fun invalidateCover(manga: SManga) { + val dir = getBaseDirectory()?.findFile(manga.url) ?: return + val cover = getCoverFile(dir) ?: return + + manga.thumbnail_url = cover.uri.toString() + } + fun updateCover(manga: SManga, input: InputStream): UniFile? { val dir = getBaseDirectory()?.findFile(manga.url) if (dir == null) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/EditMangaDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/EditMangaDialog.kt index 5db32e3a2f..3daffb4552 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/EditMangaDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/EditMangaDialog.kt @@ -216,14 +216,22 @@ class EditMangaDialog : DialogController { true } - binding.resetCover.isVisible = !isLocal - binding.resetCover.setOnClickListener { - binding.mangaCover.load( - manga, - ) { - extras[MangaCoverFetcher.USE_CUSTOM_COVER_KEY] = false + binding.resetCover.text = context.getString( + if (isLocal) { + MR.strings.invalidate_cover + } else { + MR.strings.reset_cover + } + ) + binding.resetCover.setOnClickListener { + if (!isLocal) { + binding.mangaCover.load( + manga, + ) { + extras[MangaCoverFetcher.USE_CUSTOM_COVER_KEY] = false + } + customCoverUri = null } - customCoverUri = null willResetCover = true } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt index 0d73501253..1bdadb54ff 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt @@ -12,10 +12,6 @@ import coil3.request.SuccessResult import com.hippo.unifile.UniFile import dev.icerock.moko.resources.StringResource import eu.kanade.tachiyomi.BuildConfig -import eu.kanade.tachiyomi.R -import yokai.i18n.MR -import yokai.util.lang.getString -import dev.icerock.moko.resources.compose.stringResource import eu.kanade.tachiyomi.data.cache.CoverCache import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Category @@ -81,6 +77,8 @@ import yokai.domain.library.custom.model.CustomMangaInfo import yokai.domain.manga.interactor.UpdateManga import yokai.domain.manga.models.MangaUpdate import yokai.domain.storage.StorageManager +import yokai.i18n.MR +import yokai.util.lang.getString import java.io.File import java.io.FileOutputStream import java.io.OutputStream @@ -854,7 +852,11 @@ class MangaDetailsPresenter( if (uri != null) { editCoverWithStream(uri) } else if (resetCover) { - coverCache.deleteCustomCover(manga) + if (!manga.isLocal()) { + coverCache.deleteCustomCover(manga) + } else { + LocalSource.invalidateCover(manga) + } view?.setPaletteColor() } view?.updateHeader() diff --git a/i18n/src/commonMain/moko-resources/base/strings.xml b/i18n/src/commonMain/moko-resources/base/strings.xml index 6aae802289..21bf6a8c23 100644 --- a/i18n/src/commonMain/moko-resources/base/strings.xml +++ b/i18n/src/commonMain/moko-resources/base/strings.xml @@ -553,6 +553,7 @@ Add tag Clear tags Reset tags + Invalidate cover Reset cover Failed to update cover Series must be in your library to edit