From f85d36d14d76df423ee2068599329fa0715b8d4b Mon Sep 17 00:00:00 2001 From: tarsin Date: Wed, 26 Jul 2023 17:17:31 +0800 Subject: [PATCH] Cleanup CronetHttpUriFetcher --- app/src/main/java/com/hippo/ehviewer/EhApplication.kt | 10 +++------- .../com/hippo/ehviewer/coil/CronetHttpUriFetcher.kt | 11 ++++++++++- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/EhApplication.kt b/app/src/main/java/com/hippo/ehviewer/EhApplication.kt index 7b94655b5..bcf9a1525 100644 --- a/app/src/main/java/com/hippo/ehviewer/EhApplication.kt +++ b/app/src/main/java/com/hippo/ehviewer/EhApplication.kt @@ -18,7 +18,6 @@ package com.hippo.ehviewer import android.app.Application import android.content.ComponentCallbacks2 -import android.net.Uri import androidx.appcompat.app.AppCompatDelegate import androidx.collection.LruCache import androidx.lifecycle.ProcessLifecycleOwner @@ -30,8 +29,8 @@ import com.google.net.cronet.okhttptransport.RedirectStrategy.withoutRedirects import com.hippo.ehviewer.client.EhCookieStore import com.hippo.ehviewer.client.EhTagDatabase import com.hippo.ehviewer.client.data.GalleryDetail -import com.hippo.ehviewer.coil.CronetHttpUriFetcher import com.hippo.ehviewer.coil.MergeInterceptor +import com.hippo.ehviewer.coil.installCronetHttpUriFetcher import com.hippo.ehviewer.dailycheck.checkDawn import com.hippo.ehviewer.download.DownloadManager import com.hippo.ehviewer.ktbuilder.cache @@ -148,12 +147,9 @@ class EhApplication : Application(), ImageLoaderFactory { components { if (isCronetSupported) { callFactory { unreachable() } - add { data: Uri, options, loader -> - if (data.scheme != "http" && data.scheme != "https") return@add null - CronetHttpUriFetcher(data.toString(), options, loader) - } + installCronetHttpUriFetcher() } else { - okHttpClient(nonCacheOkHttpClient) + callFactory(nonCacheOkHttpClient) } add { result, options, _ -> ImageDecoderDecoder(result.source, options, false) } add(MergeInterceptor) diff --git a/app/src/main/java/com/hippo/ehviewer/coil/CronetHttpUriFetcher.kt b/app/src/main/java/com/hippo/ehviewer/coil/CronetHttpUriFetcher.kt index 17c14f93e..078f46faa 100644 --- a/app/src/main/java/com/hippo/ehviewer/coil/CronetHttpUriFetcher.kt +++ b/app/src/main/java/com/hippo/ehviewer/coil/CronetHttpUriFetcher.kt @@ -1,6 +1,10 @@ +@file:Suppress("BlockingMethodInNonBlockingContext") + package com.hippo.ehviewer.coil +import android.net.Uri import android.webkit.MimeTypeMap +import coil.ComponentRegistry import coil.ImageLoader import coil.decode.DataSource import coil.decode.ImageSource @@ -13,7 +17,7 @@ import com.hippo.ehviewer.spider.cronetRequest import com.hippo.ehviewer.spider.execute import java.io.RandomAccessFile -class CronetHttpUriFetcher(val data: String, val options: Options, val imageLoader: ImageLoader) : Fetcher { +class CronetHttpUriFetcher(private val data: String, private val options: Options, private val imageLoader: ImageLoader) : Fetcher { override suspend fun fetch(): FetchResult { val diskCacheKey = options.diskCacheKey ?: data val diskCache = requireNotNull(imageLoader.diskCache) @@ -42,6 +46,11 @@ class CronetHttpUriFetcher(val data: String, val options: Options, val imageLoad } } +fun ComponentRegistry.Builder.installCronetHttpUriFetcher() = add { data: Uri, options, loader -> + if (data.scheme != "http" && data.scheme != "https") return@add null + CronetHttpUriFetcher(data.toString(), options, loader) +} + private fun getMimeType(url: String) = MimeTypeMap.getSingleton().getMimeTypeFromUrl(url) private fun MimeTypeMap.getMimeTypeFromUrl(url: String?): String? {