Files
EhViewer/app/src/main/java/com/hippo/ehviewer/coil/Extensions.kt
T

41 lines
1.4 KiB
Kotlin

package com.hippo.ehviewer.coil
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import coil.decode.DecodeResult
import coil.decode.Decoder
import coil.disk.DiskCache
import coil.request.CachePolicy
import coil.request.ImageRequest
import coil.size.Size
import com.hippo.ehviewer.client.data.GalleryPreview
import com.hippo.ehviewer.client.getPreviewThumbKey
import com.hippo.ehviewer.client.url
fun ImageRequest.Builder.ehUrl(url: String?) = apply {
url?.let {
val key = getPreviewThumbKey(url)
data(url)
memoryCacheKey(key)
diskCacheKey(key)
size(Size.ORIGINAL)
}
}
fun ImageRequest.Builder.ehPreviewKey(key: GalleryPreview) = apply {
data(key.url)
memoryCacheKey(key.imageKey)
diskCacheKey(key.imageKey)
size(Size.ORIGINAL)
}
fun ImageRequest.Builder.justDownload() = apply {
memoryCachePolicy(CachePolicy.DISABLED)
decoderFactory { _, _, _ -> Decoder { DecodeResult(ColorDrawable(Color.BLACK), false) } }
}
inline fun Context.imageRequest(key: GalleryPreview, builder: ImageRequest.Builder.() -> Unit = {}) = ImageRequest.Builder(this).ehPreviewKey(key).apply(builder).build()
inline fun Context.imageRequest(key: String?, builder: ImageRequest.Builder.() -> Unit = {}) = ImageRequest.Builder(this).ehUrl(key).apply(builder).build()
inline fun diskCache(builder: DiskCache.Builder.() -> Unit) = DiskCache.Builder().apply(builder).build()