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