mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
refactor(coil): Turn "useCustomCover" into an extension method
This commit is contained in:
parent
b044842475
commit
7564566452
6 changed files with 25 additions and 15 deletions
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -30,6 +30,8 @@ fun ImageView.loadManga(
|
|||
return imageLoader.enqueue(request)
|
||||
}
|
||||
|
||||
fun ImageView.asTarget() = ImageViewTarget(this)
|
||||
|
||||
fun ImageView.loadManga(
|
||||
cover: MangaCover,
|
||||
progress: View? = null,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue