diff --git a/app/src/main/java/com/hippo/ehviewer/EhApplication.kt b/app/src/main/java/com/hippo/ehviewer/EhApplication.kt index dce2cd714..54910749e 100644 --- a/app/src/main/java/com/hippo/ehviewer/EhApplication.kt +++ b/app/src/main/java/com/hippo/ehviewer/EhApplication.kt @@ -26,7 +26,6 @@ import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.ProcessLifecycleOwner import coil.ImageLoader import coil.ImageLoaderFactory -import coil.disk.DiskCache import coil.util.DebugLogger import com.hippo.ehviewer.client.EhCookieStore import com.hippo.ehviewer.client.EhDns @@ -34,6 +33,7 @@ import com.hippo.ehviewer.client.EhSSLSocketFactory import com.hippo.ehviewer.client.EhTagDatabase import com.hippo.ehviewer.client.data.GalleryDetail import com.hippo.ehviewer.coil.MergeInterceptor +import com.hippo.ehviewer.coil.diskCache import com.hippo.ehviewer.dailycheck.checkDawn import com.hippo.ehviewer.dao.buildMainDB import com.hippo.ehviewer.download.DownloadManager @@ -247,10 +247,10 @@ class EhApplication : Application(), DefaultLifecycleObserver, ImageLoaderFactor val ehDatabase by lazy { buildMainDB(application) } val imageCache by lazy { - DiskCache.Builder().apply { + diskCache { directory(application.cacheDir.toOkioPath() / "image_cache") maxSizeBytes(Settings.readCacheSize.coerceIn(320, 5120).toLong() * 1024 * 1024) - }.build() + } } } } 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 738a156b7..14794fa1a 100644 --- a/app/src/main/java/com/hippo/ehviewer/coil/Extensions.kt +++ b/app/src/main/java/com/hippo/ehviewer/coil/Extensions.kt @@ -1,24 +1,20 @@ package com.hippo.ehviewer.coil import android.content.Context +import coil.disk.DiskCache import coil.request.ImageRequest import coil.size.Size import com.hippo.ehviewer.client.getPreviewThumbKey -fun ImageRequest.Builder.ehUrl(url: String) = apply { - val key = getPreviewThumbKey(url) - data(url) - memoryCacheKey(key) - diskCacheKey(key) - size(Size.ORIGINAL) +fun ImageRequest.Builder.ehUrl(url: String?) = apply { + url?.let { + val key = getPreviewThumbKey(url) + data(url) + memoryCacheKey(key) + diskCacheKey(key) + size(Size.ORIGINAL) + } } -inline fun Context.imageRequest( - url: String, - builder: ImageRequest.Builder.() -> Unit = {}, -): ImageRequest { - return ImageRequest.Builder(this) - .ehUrl(url) - .apply(builder) - .build() -} +inline fun Context.imageRequest(url: String?, builder: ImageRequest.Builder.() -> Unit = {}) = ImageRequest.Builder(this).ehUrl(url).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 28b68fccd..5e2cb6ce3 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 @@ -112,7 +112,6 @@ import arrow.core.partially1 import coil.Coil.imageLoader import coil.annotation.ExperimentalCoilApi import coil.imageLoader -import coil.request.ImageRequest import com.google.accompanist.themeadapter.material3.Mdc3Theme import com.google.android.material.progressindicator.CircularProgressIndicator import com.google.android.material.snackbar.Snackbar @@ -146,7 +145,7 @@ import com.hippo.ehviewer.client.parser.HomeParser import com.hippo.ehviewer.client.parser.ParserUtils import com.hippo.ehviewer.client.parser.RateGalleryParser import com.hippo.ehviewer.client.parser.TorrentParser -import com.hippo.ehviewer.coil.ehUrl +import com.hippo.ehviewer.coil.imageRequest import com.hippo.ehviewer.dao.DownloadInfo import com.hippo.ehviewer.dao.Filter import com.hippo.ehviewer.download.DownloadManager.DownloadInfoListener @@ -932,10 +931,8 @@ class GalleryDetailScene : BaseScene(), DownloadInfoListener { if (Settings.preloadThumbAggressively) { lifecycleScope.launchIO { galleryDetail.previewList.forEach { - it.imageUrl.run { - context?.imageLoader?.enqueue( - ImageRequest.Builder(requireContext()).ehUrl(this).build(), - ) + context?.run { + imageLoader.enqueue(imageRequest(it.imageUrl)) } } } 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 a5bb2985c..1961f158c 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 @@ -50,7 +50,6 @@ import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import coil.imageLoader -import coil.request.ImageRequest import com.google.android.material.datepicker.CalendarConstraints import com.google.android.material.datepicker.CalendarConstraints.DateValidator import com.google.android.material.datepicker.CompositeDateValidator @@ -83,7 +82,7 @@ import com.hippo.ehviewer.client.exception.EhException 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.ehUrl +import com.hippo.ehviewer.coil.imageRequest import com.hippo.ehviewer.dao.DownloadInfo import com.hippo.ehviewer.dao.QuickSearch import com.hippo.ehviewer.databinding.DrawerListRvBinding @@ -1069,10 +1068,8 @@ class GalleryListScene : if (Settings.preloadThumbAggressively) { lifecycleScope.launchIO { result.galleryInfoList.forEach { - it.thumb?.run { - context?.imageLoader?.enqueue( - ImageRequest.Builder(requireContext()).ehUrl(this).build(), - ) + context?.run { + imageLoader.enqueue(imageRequest(it.thumb)) } } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewsScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewsScene.kt index d34385732..ccce5d7f8 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewsScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewsScene.kt @@ -23,7 +23,6 @@ import android.view.View import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import coil.imageLoader -import coil.request.ImageRequest import com.hippo.app.BaseDialogBuilder import com.hippo.easyrecyclerview.MarginItemDecoration import com.hippo.ehviewer.R @@ -34,7 +33,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.client.exception.EhException -import com.hippo.ehviewer.coil.ehUrl +import com.hippo.ehviewer.coil.imageRequest import com.hippo.ehviewer.databinding.DialogGoToBinding import com.hippo.ehviewer.databinding.SceneGalleryPreviewsBinding import com.hippo.util.getParcelableCompat @@ -169,10 +168,8 @@ class GalleryPreviewsScene : BaseToolbarScene() { if (Settings.preloadThumbAggressively) { lifecycleScope.launchIO { result.first.forEach { - it.imageUrl.run { - context?.imageLoader?.enqueue( - ImageRequest.Builder(requireContext()).ehUrl(this).build(), - ) + context?.run { + imageLoader.enqueue(imageRequest(it.imageUrl)) } } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/widget/EhAsyncThumb.kt b/app/src/main/java/com/hippo/ehviewer/ui/widget/EhAsyncThumb.kt index 09a52427f..0a37405dc 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/widget/EhAsyncThumb.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/widget/EhAsyncThumb.kt @@ -18,12 +18,12 @@ import coil.compose.AsyncImage import coil.compose.AsyncImagePainter import coil.request.ImageRequest import com.hippo.ehviewer.client.data.GalleryPreview -import com.hippo.ehviewer.coil.ehUrl +import com.hippo.ehviewer.coil.imageRequest @Composable @ReadOnlyComposable fun requestOf(model: String?): ImageRequest { - return ImageRequest.Builder(LocalContext.current).apply { model?.let { ehUrl(it) } }.build() + return LocalContext.current.imageRequest(model) } @Composable