From 196190314b23b5396e8debac867e92003fc82cc1 Mon Sep 17 00:00:00 2001 From: tarsin Date: Sun, 14 May 2023 18:17:08 +0800 Subject: [PATCH] Fix aggressive thumb preload https://github.com/coil-kt/coil/commit/65ff90ea2b11db9da98cc7763d9c5f60e9ca364a --- .../main/java/com/hippo/ehviewer/coil/Extensions.kt | 10 ++++++++++ .../com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt | 7 ++----- .../com/hippo/ehviewer/ui/scene/GalleryListScene.kt | 7 ++----- .../hippo/ehviewer/ui/scene/GalleryPreviewScreen.kt | 3 ++- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/coil/Extensions.kt b/app/src/main/java/com/hippo/ehviewer/coil/Extensions.kt index 6e23453f3..2dab876dd 100644 --- a/app/src/main/java/com/hippo/ehviewer/coil/Extensions.kt +++ b/app/src/main/java/com/hippo/ehviewer/coil/Extensions.kt @@ -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() diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt index b46fa193b..b3aab5b67 100755 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt @@ -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 diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt index 8e994cd20..1a9b9c8a0 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt @@ -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)) { diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewScreen.kt index 3c2160ea7..a87e432e9 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewScreen.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewScreen.kt @@ -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