From 562a6d6ab8ae9a8e9b2c9a638dfcbd698035a75f Mon Sep 17 00:00:00 2001 From: tarsin Date: Sun, 5 Mar 2023 01:32:51 +0800 Subject: [PATCH] Merge image cache --- .../main/java/com/hippo/ehviewer/EhApplication.kt | 11 +++++++++++ .../java/com/hippo/ehviewer/spider/SpiderDen.kt | 14 +------------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/EhApplication.kt b/app/src/main/java/com/hippo/ehviewer/EhApplication.kt index 921236867..7baac02d6 100644 --- a/app/src/main/java/com/hippo/ehviewer/EhApplication.kt +++ b/app/src/main/java/com/hippo/ehviewer/EhApplication.kt @@ -27,6 +27,7 @@ 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 @@ -51,6 +52,7 @@ import io.ktor.client.engine.cio.CIO import io.ktor.client.plugins.cookies.HttpCookies import kotlinx.coroutines.DelicateCoroutinesApi import okhttp3.OkHttpClient +import okio.Path.Companion.toOkioPath import java.net.InetAddress import java.net.InetSocketAddress import java.net.Proxy @@ -197,6 +199,7 @@ class EhApplication : Application(), DefaultLifecycleObserver, ImageLoaderFactor return ImageLoader.Builder(this).apply { okHttpClient(okHttpClient) components { add(MergeInterceptor) } + diskCache(imageCache) crossfade(300) if (BuildConfig.DEBUG) logger(DebugLogger()) }.build() @@ -304,5 +307,13 @@ class EhApplication : Application(), DefaultLifecycleObserver, ImageLoaderFactor @JvmStatic val ehDatabase by lazy { buildMainDB(application) } + + // We use data to store image file, and metadata for image type + val imageCache by lazy { + DiskCache.Builder().apply { + directory(application.cacheDir.toOkioPath() / "img") + maxSizeBytes(Settings.readCacheSize.coerceIn(40, 1280).toLong() * 1024 * 1024) + }.build() + } } } diff --git a/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt b/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt index b8a53af74..8a2020c7e 100644 --- a/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt +++ b/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt @@ -20,7 +20,6 @@ import android.os.ParcelFileDescriptor import android.os.ParcelFileDescriptor.MODE_READ_WRITE import coil.disk.DiskCache import com.hippo.ehviewer.EhApplication -import com.hippo.ehviewer.EhApplication.Companion.application import com.hippo.ehviewer.EhDB import com.hippo.ehviewer.Settings import com.hippo.ehviewer.client.EhCacheKeyFactory @@ -36,7 +35,6 @@ import com.hippo.sendTo import com.hippo.unifile.UniFile import com.hippo.unifile.openOutputStream import com.hippo.yorozuya.FileUtils -import com.hippo.yorozuya.MathUtils import io.ktor.client.plugins.onDownload import io.ktor.client.request.prepareGet import io.ktor.client.statement.HttpResponse @@ -46,10 +44,10 @@ import io.ktor.http.contentLength import io.ktor.http.contentType import io.ktor.utils.io.jvm.nio.copyTo import moe.tarsin.coroutines.runSuspendCatching -import java.io.File import java.io.IOException import java.util.Locale import kotlin.io.path.readText +import com.hippo.ehviewer.EhApplication.Companion.imageCache as sCache private val client = EhApplication.ktorClient @@ -299,16 +297,6 @@ class SpiderDen(private val mGalleryInfo: GalleryInfo) { } companion object { - private const val TRANSFER_BLOCK: Long = 8192 - - // We use data to store image file, and metadata for image type - private val sCache by lazy { - DiskCache.Builder().directory(File(application.cacheDir, "gallery_image")) - .maxSizeBytes( - MathUtils.clamp(Settings.readCacheSize, 40, 1280).toLong() * 1024 * 1024 - ).build() - } - private val COMPAT_IMAGE_EXTENSIONS = SUPPORT_IMAGE_EXTENSIONS + ".jpeg" fun getGalleryDownloadDir(gid: Long): UniFile? {