Fix aggressive thumb preload

https://github.com/coil-kt/coil/commit/65ff90ea2b11db9da98cc7763d9c5f60e9ca364a
This commit is contained in:
tarsin committed 2023-05-14 18:17:08 +08:00
1 parent 4c7b4dbc51
commit 196190314b
4 files changed
+16 -11

No files matched your search

@@ -1,7 +1,12 @@
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
@@ -25,6 +30,11 @@ fun ImageRequest.Builder.ehPreviewKey(key: GalleryPreview) = apply {
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()
@@ -139,6 +139,7 @@ import com.hippo.ehviewer.client.parser.HomeParser
import com.hippo.ehviewer.client.parser.ParserUtils
import com.hippo.ehviewer.client.parser.TorrentParser
import com.hippo.ehviewer.coil.imageRequest
import com.hippo.ehviewer.coil.justDownload
import com.hippo.ehviewer.dao.DownloadInfo
import com.hippo.ehviewer.dao.Filter
import com.hippo.ehviewer.download.DownloadManager.DownloadInfoListener
@@ -892,11 +893,7 @@ class GalleryDetailScene : BaseScene(), DownloadInfoListener {
EhDB.putHistoryInfo(galleryDetail)
if (Settings.preloadThumbAggressively) {
lifecycleScope.launchIO {
galleryDetail.previewList.forEach {
context?.run {
imageLoader.enqueue(imageRequest(it))
}
}
galleryDetail.previewList.forEach { context?.run { imageLoader.enqueue(imageRequest(it) { justDownload() }) } }
}
}
composeBindingGD = galleryDetail
@@ -71,6 +71,7 @@ import com.hippo.ehviewer.client.parser.GalleryDetailUrlParser
import com.hippo.ehviewer.client.parser.GalleryListParser
import com.hippo.ehviewer.client.parser.GalleryPageUrlParser
import com.hippo.ehviewer.coil.imageRequest
import com.hippo.ehviewer.coil.justDownload
import com.hippo.ehviewer.dao.DownloadInfo
import com.hippo.ehviewer.dao.QuickSearch
import com.hippo.ehviewer.databinding.DrawerListRvBinding
@@ -1052,11 +1053,7 @@ class GalleryListScene : SearchBarScene(), OnDragHandlerListener, SearchLayout.H
private fun onGetGalleryListSuccess(result: GalleryListParser.Result, taskId: Int) {
if (Settings.preloadThumbAggressively) {
lifecycleScope.launchIO {
result.galleryInfoList.forEach {
context?.run {
imageLoader.enqueue(imageRequest(it.thumb))
}
}
result.galleryInfoList.forEach { context?.run { imageLoader.enqueue(imageRequest(it.thumb) { justDownload() }) } }
}
}
if (mHelper != null && mHelper!!.isCurrentTask(taskId)) {
@@ -54,6 +54,7 @@ import com.hippo.ehviewer.client.EhUrl
import com.hippo.ehviewer.client.data.GalleryDetail
import com.hippo.ehviewer.client.data.GalleryPreview
import com.hippo.ehviewer.coil.imageRequest
import com.hippo.ehviewer.coil.justDownload
import com.hippo.ehviewer.ui.compose.data.EhPreviewItem
import com.hippo.ehviewer.ui.compose.rememberDialogState
import com.hippo.ehviewer.ui.compose.setMD3Content
@@ -90,7 +91,7 @@ class GalleryPreviewScreen : Fragment() {
val result = EhEngine.getPreviewList(url)
if (Settings.preloadThumbAggressively) {
coroutineScope.launch {
context.run { result.first.first.forEach { imageLoader.enqueue(imageRequest(it)) } }
context.run { result.first.first.forEach { imageLoader.enqueue(imageRequest(it) { justDownload() }) } }
}
}
result.first.first