refactor(coil): Turn "useCustomCover" into an extension method

This commit is contained in:
Ahmad Ansori Palembani 2024-08-21 06:45:19 +07:00
parent b044842475
commit 7564566452
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
6 changed files with 25 additions and 15 deletions

View file

@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.data.coil
import android.webkit.MimeTypeMap
import androidx.core.net.toUri
import co.touchlab.kermit.Logger
import coil3.Extras
import coil3.ImageLoader
import coil3.decode.DataSource
import coil3.decode.ImageSource
@ -11,7 +10,6 @@ import coil3.disk.DiskCache
import coil3.fetch.FetchResult
import coil3.fetch.Fetcher
import coil3.fetch.SourceFetchResult
import coil3.getOrDefault
import coil3.request.Options
import com.hippo.unifile.UniFile
import eu.kanade.tachiyomi.data.cache.CoverCache
@ -60,7 +58,7 @@ class MangaCoverFetcher(
private val fileScope = CoroutineScope(Job() + Dispatchers.IO)
override suspend fun fetch(): FetchResult {
if (options.extras.getOrDefault(USE_CUSTOM_COVER_KEY)) {
if (options.useCustomCover) {
val customCoverFile = customCoverFileLazy.value
if (customCoverFile.exists()) {
setRatioAndColorsInScope(mangaId, url, isInLibrary, UniFile.fromFile(customCoverFile))
@ -377,8 +375,6 @@ class MangaCoverFetcher(
}
companion object {
val USE_CUSTOM_COVER_KEY = Extras.Key(true)
private val CACHE_CONTROL_FORCE_NETWORK_NO_CACHE = CacheControl.Builder().noCache().noStore().build()
private val CACHE_CONTROL_NO_NETWORK_NO_CACHE = CacheControl.Builder().noCache().onlyIfCached().build()
}

View file

@ -42,3 +42,12 @@ val Options.customDecoder: Boolean
get() = getExtra(customDecoderKey)
private val customDecoderKey = Extras.Key(default = false)
val Options.useCustomCover: Boolean
get() = getExtra(useCustomCoverKey)
fun ImageRequest.Builder.useCustomCover(enable: Boolean) = apply {
extras[useCustomCoverKey] = enable
}
private val useCustomCoverKey = Extras.Key(default = true)

View file

@ -17,7 +17,7 @@ import coil3.load
import com.google.android.material.chip.Chip
import com.google.android.material.chip.ChipGroup
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.coil.MangaCoverFetcher
import eu.kanade.tachiyomi.data.coil.useCustomCover
import eu.kanade.tachiyomi.data.database.DatabaseHelper
import eu.kanade.tachiyomi.data.database.models.seriesType
import eu.kanade.tachiyomi.databinding.EditMangaDialogBinding
@ -40,7 +40,9 @@ import eu.kanade.tachiyomi.widget.TachiyomiTextInputEditText
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy
import yokai.domain.manga.models.cover
import yokai.i18n.MR
import yokai.presentation.core.util.coil.asTarget
import yokai.presentation.core.util.coil.loadManga
import yokai.util.lang.getString
import android.R as AR
@ -219,10 +221,11 @@ class EditMangaDialog : DialogController {
binding.resetCover.isVisible = !isLocal
binding.resetCover.setOnClickListener {
binding.mangaCover.load(
manga,
binding.mangaCover.loadManga(
manga.cover(),
target = binding.mangaCover.asTarget(),
) {
extras[MangaCoverFetcher.USE_CUSTOM_COVER_KEY] = false
useCustomCover(false)
}
customCoverUri = null
willResetCover = true

View file

@ -32,6 +32,7 @@ import coil3.request.placeholder
import com.google.android.material.button.MaterialButton
import com.google.android.material.chip.Chip
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.coil.useCustomCover
import eu.kanade.tachiyomi.data.database.models.seriesType
import eu.kanade.tachiyomi.databinding.ChapterHeaderItemBinding
import eu.kanade.tachiyomi.databinding.MangaHeaderItemBinding
@ -675,6 +676,7 @@ class MangaHeaderHolder(
error(drawable)
if (manga.favorite) networkCachePolicy(CachePolicy.READ_ONLY)
diskCachePolicy(CachePolicy.READ_ONLY)
useCustomCover(manga.favorite)
}
binding.backdrop.loadManga(manga) {
placeholder(drawable)
@ -698,6 +700,7 @@ class MangaHeaderHolder(
applyBlur()
},
)
useCustomCover(manga.favorite)
}
}

View file

@ -6,7 +6,7 @@ import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.isInvisible
import androidx.core.view.isVisible
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.coil.MangaCoverFetcher
import eu.kanade.tachiyomi.data.coil.useCustomCover
import eu.kanade.tachiyomi.data.database.DatabaseHelper
import eu.kanade.tachiyomi.databinding.MangaGridItemBinding
import eu.kanade.tachiyomi.databinding.MigrationProcessItemBinding
@ -17,7 +17,6 @@ import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
import eu.kanade.tachiyomi.ui.library.setFreeformCoverRatio
import eu.kanade.tachiyomi.ui.manga.MangaDetailsController
import eu.kanade.tachiyomi.util.system.launchUI
import eu.kanade.tachiyomi.util.system.setExtras
import eu.kanade.tachiyomi.util.view.setCards
import eu.kanade.tachiyomi.util.view.setVectorCompat
import eu.kanade.tachiyomi.util.view.withFadeTransaction
@ -148,15 +147,13 @@ class MigrationProcessHolder(
progress.isVisible = false
coverThumbnail.loadManga(manga.cover(), progress) {
setExtras(MangaCoverFetcher.USE_CUSTOM_COVER_KEY, false)
useCustomCover(false)
}
compactTitle.isVisible = true
gradient.isVisible = true
compactTitle.text = if (manga.title.isBlank()) {
compactTitle.text = manga.title.ifBlank {
view.context.getString(MR.strings.unknown)
} else {
manga.title
}
gradient.isVisible = true

View file

@ -30,6 +30,8 @@ fun ImageView.loadManga(
return imageLoader.enqueue(request)
}
fun ImageView.asTarget() = ImageViewTarget(this)
fun ImageView.loadManga(
cover: MangaCover,
progress: View? = null,