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 android.webkit.MimeTypeMap
|
||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
import co.touchlab.kermit.Logger
|
import co.touchlab.kermit.Logger
|
||||||
import coil3.Extras
|
|
||||||
import coil3.ImageLoader
|
import coil3.ImageLoader
|
||||||
import coil3.decode.DataSource
|
import coil3.decode.DataSource
|
||||||
import coil3.decode.ImageSource
|
import coil3.decode.ImageSource
|
||||||
|
@ -11,7 +10,6 @@ import coil3.disk.DiskCache
|
||||||
import coil3.fetch.FetchResult
|
import coil3.fetch.FetchResult
|
||||||
import coil3.fetch.Fetcher
|
import coil3.fetch.Fetcher
|
||||||
import coil3.fetch.SourceFetchResult
|
import coil3.fetch.SourceFetchResult
|
||||||
import coil3.getOrDefault
|
|
||||||
import coil3.request.Options
|
import coil3.request.Options
|
||||||
import com.hippo.unifile.UniFile
|
import com.hippo.unifile.UniFile
|
||||||
import eu.kanade.tachiyomi.data.cache.CoverCache
|
import eu.kanade.tachiyomi.data.cache.CoverCache
|
||||||
|
@ -60,7 +58,7 @@ class MangaCoverFetcher(
|
||||||
private val fileScope = CoroutineScope(Job() + Dispatchers.IO)
|
private val fileScope = CoroutineScope(Job() + Dispatchers.IO)
|
||||||
|
|
||||||
override suspend fun fetch(): FetchResult {
|
override suspend fun fetch(): FetchResult {
|
||||||
if (options.extras.getOrDefault(USE_CUSTOM_COVER_KEY)) {
|
if (options.useCustomCover) {
|
||||||
val customCoverFile = customCoverFileLazy.value
|
val customCoverFile = customCoverFileLazy.value
|
||||||
if (customCoverFile.exists()) {
|
if (customCoverFile.exists()) {
|
||||||
setRatioAndColorsInScope(mangaId, url, isInLibrary, UniFile.fromFile(customCoverFile))
|
setRatioAndColorsInScope(mangaId, url, isInLibrary, UniFile.fromFile(customCoverFile))
|
||||||
|
@ -377,8 +375,6 @@ class MangaCoverFetcher(
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
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_FORCE_NETWORK_NO_CACHE = CacheControl.Builder().noCache().noStore().build()
|
||||||
private val CACHE_CONTROL_NO_NETWORK_NO_CACHE = CacheControl.Builder().noCache().onlyIfCached().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)
|
get() = getExtra(customDecoderKey)
|
||||||
|
|
||||||
private val customDecoderKey = Extras.Key(default = false)
|
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.Chip
|
||||||
import com.google.android.material.chip.ChipGroup
|
import com.google.android.material.chip.ChipGroup
|
||||||
import eu.kanade.tachiyomi.R
|
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.DatabaseHelper
|
||||||
import eu.kanade.tachiyomi.data.database.models.seriesType
|
import eu.kanade.tachiyomi.data.database.models.seriesType
|
||||||
import eu.kanade.tachiyomi.databinding.EditMangaDialogBinding
|
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.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.manga.models.cover
|
||||||
import yokai.i18n.MR
|
import yokai.i18n.MR
|
||||||
|
import yokai.presentation.core.util.coil.asTarget
|
||||||
import yokai.presentation.core.util.coil.loadManga
|
import yokai.presentation.core.util.coil.loadManga
|
||||||
import yokai.util.lang.getString
|
import yokai.util.lang.getString
|
||||||
import android.R as AR
|
import android.R as AR
|
||||||
|
@ -219,10 +221,11 @@ class EditMangaDialog : DialogController {
|
||||||
|
|
||||||
binding.resetCover.isVisible = !isLocal
|
binding.resetCover.isVisible = !isLocal
|
||||||
binding.resetCover.setOnClickListener {
|
binding.resetCover.setOnClickListener {
|
||||||
binding.mangaCover.load(
|
binding.mangaCover.loadManga(
|
||||||
manga,
|
manga.cover(),
|
||||||
|
target = binding.mangaCover.asTarget(),
|
||||||
) {
|
) {
|
||||||
extras[MangaCoverFetcher.USE_CUSTOM_COVER_KEY] = false
|
useCustomCover(false)
|
||||||
}
|
}
|
||||||
customCoverUri = null
|
customCoverUri = null
|
||||||
willResetCover = true
|
willResetCover = true
|
||||||
|
|
|
@ -32,6 +32,7 @@ import coil3.request.placeholder
|
||||||
import com.google.android.material.button.MaterialButton
|
import com.google.android.material.button.MaterialButton
|
||||||
import com.google.android.material.chip.Chip
|
import com.google.android.material.chip.Chip
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
|
import eu.kanade.tachiyomi.data.coil.useCustomCover
|
||||||
import eu.kanade.tachiyomi.data.database.models.seriesType
|
import eu.kanade.tachiyomi.data.database.models.seriesType
|
||||||
import eu.kanade.tachiyomi.databinding.ChapterHeaderItemBinding
|
import eu.kanade.tachiyomi.databinding.ChapterHeaderItemBinding
|
||||||
import eu.kanade.tachiyomi.databinding.MangaHeaderItemBinding
|
import eu.kanade.tachiyomi.databinding.MangaHeaderItemBinding
|
||||||
|
@ -675,6 +676,7 @@ class MangaHeaderHolder(
|
||||||
error(drawable)
|
error(drawable)
|
||||||
if (manga.favorite) networkCachePolicy(CachePolicy.READ_ONLY)
|
if (manga.favorite) networkCachePolicy(CachePolicy.READ_ONLY)
|
||||||
diskCachePolicy(CachePolicy.READ_ONLY)
|
diskCachePolicy(CachePolicy.READ_ONLY)
|
||||||
|
useCustomCover(manga.favorite)
|
||||||
}
|
}
|
||||||
binding.backdrop.loadManga(manga) {
|
binding.backdrop.loadManga(manga) {
|
||||||
placeholder(drawable)
|
placeholder(drawable)
|
||||||
|
@ -698,6 +700,7 @@ class MangaHeaderHolder(
|
||||||
applyBlur()
|
applyBlur()
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
useCustomCover(manga.favorite)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ import androidx.constraintlayout.widget.ConstraintLayout
|
||||||
import androidx.core.view.isInvisible
|
import androidx.core.view.isInvisible
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import eu.kanade.tachiyomi.R
|
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.DatabaseHelper
|
||||||
import eu.kanade.tachiyomi.databinding.MangaGridItemBinding
|
import eu.kanade.tachiyomi.databinding.MangaGridItemBinding
|
||||||
import eu.kanade.tachiyomi.databinding.MigrationProcessItemBinding
|
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.library.setFreeformCoverRatio
|
||||||
import eu.kanade.tachiyomi.ui.manga.MangaDetailsController
|
import eu.kanade.tachiyomi.ui.manga.MangaDetailsController
|
||||||
import eu.kanade.tachiyomi.util.system.launchUI
|
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.setCards
|
||||||
import eu.kanade.tachiyomi.util.view.setVectorCompat
|
import eu.kanade.tachiyomi.util.view.setVectorCompat
|
||||||
import eu.kanade.tachiyomi.util.view.withFadeTransaction
|
import eu.kanade.tachiyomi.util.view.withFadeTransaction
|
||||||
|
@ -148,15 +147,13 @@ class MigrationProcessHolder(
|
||||||
progress.isVisible = false
|
progress.isVisible = false
|
||||||
|
|
||||||
coverThumbnail.loadManga(manga.cover(), progress) {
|
coverThumbnail.loadManga(manga.cover(), progress) {
|
||||||
setExtras(MangaCoverFetcher.USE_CUSTOM_COVER_KEY, false)
|
useCustomCover(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
compactTitle.isVisible = true
|
compactTitle.isVisible = true
|
||||||
gradient.isVisible = true
|
gradient.isVisible = true
|
||||||
compactTitle.text = if (manga.title.isBlank()) {
|
compactTitle.text = manga.title.ifBlank {
|
||||||
view.context.getString(MR.strings.unknown)
|
view.context.getString(MR.strings.unknown)
|
||||||
} else {
|
|
||||||
manga.title
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gradient.isVisible = true
|
gradient.isVisible = true
|
||||||
|
|
|
@ -30,6 +30,8 @@ fun ImageView.loadManga(
|
||||||
return imageLoader.enqueue(request)
|
return imageLoader.enqueue(request)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun ImageView.asTarget() = ImageViewTarget(this)
|
||||||
|
|
||||||
fun ImageView.loadManga(
|
fun ImageView.loadManga(
|
||||||
cover: MangaCover,
|
cover: MangaCover,
|
||||||
progress: View? = null,
|
progress: View? = null,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue