feat(source/local): Button to invalidate local source manga cover

In case Android somehow messing up the URI the first time
This commit is contained in:
Ahmad Ansori Palembani 2024-07-28 12:25:54 +07:00
parent 931a4e84c3
commit 4f46d0ee28
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
5 changed files with 34 additions and 12 deletions

View file

@ -9,6 +9,10 @@
## Other ?? Technical stuff, what happened behind the scene ## 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 ## Changes
- Add more info to WorkerInfo page - Add more info to WorkerInfo page
- Added "next scheduled run" - Added "next scheduled run"

View file

@ -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? { fun updateCover(manga: SManga, input: InputStream): UniFile? {
val dir = getBaseDirectory()?.findFile(manga.url) val dir = getBaseDirectory()?.findFile(manga.url)
if (dir == null) { if (dir == null) {

View file

@ -216,14 +216,22 @@ class EditMangaDialog : DialogController {
true true
} }
binding.resetCover.isVisible = !isLocal binding.resetCover.text = context.getString(
if (isLocal) {
MR.strings.invalidate_cover
} else {
MR.strings.reset_cover
}
)
binding.resetCover.setOnClickListener { binding.resetCover.setOnClickListener {
if (!isLocal) {
binding.mangaCover.load( binding.mangaCover.load(
manga, manga,
) { ) {
extras[MangaCoverFetcher.USE_CUSTOM_COVER_KEY] = false extras[MangaCoverFetcher.USE_CUSTOM_COVER_KEY] = false
} }
customCoverUri = null customCoverUri = null
}
willResetCover = true willResetCover = true
} }
} }

View file

@ -12,10 +12,6 @@ import coil3.request.SuccessResult
import com.hippo.unifile.UniFile import com.hippo.unifile.UniFile
import dev.icerock.moko.resources.StringResource import dev.icerock.moko.resources.StringResource
import eu.kanade.tachiyomi.BuildConfig 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.cache.CoverCache
import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.DatabaseHelper
import eu.kanade.tachiyomi.data.database.models.Category 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.interactor.UpdateManga
import yokai.domain.manga.models.MangaUpdate import yokai.domain.manga.models.MangaUpdate
import yokai.domain.storage.StorageManager import yokai.domain.storage.StorageManager
import yokai.i18n.MR
import yokai.util.lang.getString
import java.io.File import java.io.File
import java.io.FileOutputStream import java.io.FileOutputStream
import java.io.OutputStream import java.io.OutputStream
@ -854,7 +852,11 @@ class MangaDetailsPresenter(
if (uri != null) { if (uri != null) {
editCoverWithStream(uri) editCoverWithStream(uri)
} else if (resetCover) { } else if (resetCover) {
if (!manga.isLocal()) {
coverCache.deleteCustomCover(manga) coverCache.deleteCustomCover(manga)
} else {
LocalSource.invalidateCover(manga)
}
view?.setPaletteColor() view?.setPaletteColor()
} }
view?.updateHeader() view?.updateHeader()

View file

@ -553,6 +553,7 @@
<string name="add_tag">Add tag</string> <string name="add_tag">Add tag</string>
<string name="clear_tags">Clear tags</string> <string name="clear_tags">Clear tags</string>
<string name="reset_tags">Reset tags</string> <string name="reset_tags">Reset tags</string>
<string name="invalidate_cover">Invalidate cover</string>
<string name="reset_cover">Reset cover</string> <string name="reset_cover">Reset cover</string>
<string name="failed_to_update_cover">Failed to update cover</string> <string name="failed_to_update_cover">Failed to update cover</string>
<string name="must_be_in_library_to_edit">Series must be in your library to edit</string> <string name="must_be_in_library_to_edit">Series must be in your library to edit</string>