arkon 1 жил өмнө
parent
commit
e0733c1a4c

+ 38 - 45
core/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt

@@ -11,67 +11,60 @@ import java.io.File
 import java.util.concurrent.TimeUnit
 
 class NetworkHelper(
-    context: Context,
+    private val context: Context,
     private val preferences: NetworkPreferences,
 ) {
 
-    private val cacheDir = File(context.cacheDir, "network_cache")
-    private val cacheSize = 5L * 1024 * 1024 // 5 MiB
+    val cookieJar by lazy { AndroidCookieJar() }
 
-    val cookieJar = AndroidCookieJar()
+    val client by lazy {
+        val builder = OkHttpClient.Builder()
+            .cookieJar(cookieJar)
+            .connectTimeout(30, TimeUnit.SECONDS)
+            .readTimeout(30, TimeUnit.SECONDS)
+            .callTimeout(2, TimeUnit.MINUTES)
+            .cache(
+                Cache(
+                    directory = File(context.cacheDir, "network_cache"),
+                    maxSize = 5L * 1024 * 1024, // 5 MiB
+                ),
+            )
+            .addInterceptor(UncaughtExceptionInterceptor())
+            .addInterceptor(UserAgentInterceptor(::defaultUserAgentProvider))
 
-    private val userAgentInterceptor by lazy {
-        UserAgentInterceptor(::defaultUserAgentProvider)
-    }
-    private val cloudflareInterceptor by lazy {
-        CloudflareInterceptor(context, cookieJar, ::defaultUserAgentProvider)
-    }
-
-    private val baseClientBuilder: OkHttpClient.Builder
-        get() {
-            val builder = OkHttpClient.Builder()
-                .cookieJar(cookieJar)
-                .connectTimeout(30, TimeUnit.SECONDS)
-                .readTimeout(30, TimeUnit.SECONDS)
-                .callTimeout(2, TimeUnit.MINUTES)
-                .addInterceptor(UncaughtExceptionInterceptor())
-                .addInterceptor(userAgentInterceptor)
-
-            if (preferences.verboseLogging().get()) {
-                val httpLoggingInterceptor = HttpLoggingInterceptor().apply {
-                    level = HttpLoggingInterceptor.Level.HEADERS
-                }
-                builder.addNetworkInterceptor(httpLoggingInterceptor)
+        if (preferences.verboseLogging().get()) {
+            val httpLoggingInterceptor = HttpLoggingInterceptor().apply {
+                level = HttpLoggingInterceptor.Level.HEADERS
             }
+            builder.addNetworkInterceptor(httpLoggingInterceptor)
+        }
 
-            builder.addInterceptor(cloudflareInterceptor)
-
-            when (preferences.dohProvider().get()) {
-                PREF_DOH_CLOUDFLARE -> builder.dohCloudflare()
-                PREF_DOH_GOOGLE -> builder.dohGoogle()
-                PREF_DOH_ADGUARD -> builder.dohAdGuard()
-                PREF_DOH_QUAD9 -> builder.dohQuad9()
-                PREF_DOH_ALIDNS -> builder.dohAliDNS()
-                PREF_DOH_DNSPOD -> builder.dohDNSPod()
-                PREF_DOH_360 -> builder.doh360()
-                PREF_DOH_QUAD101 -> builder.dohQuad101()
-                PREF_DOH_MULLVAD -> builder.dohMullvad()
-                PREF_DOH_CONTROLD -> builder.dohControlD()
-                PREF_DOH_NJALLA -> builder.dohNajalla()
-                PREF_DOH_SHECAN -> builder.dohShecan()
-            }
+        builder.addInterceptor(CloudflareInterceptor(context, cookieJar, ::defaultUserAgentProvider))
 
-            return builder
+        when (preferences.dohProvider().get()) {
+            PREF_DOH_CLOUDFLARE -> builder.dohCloudflare()
+            PREF_DOH_GOOGLE -> builder.dohGoogle()
+            PREF_DOH_ADGUARD -> builder.dohAdGuard()
+            PREF_DOH_QUAD9 -> builder.dohQuad9()
+            PREF_DOH_ALIDNS -> builder.dohAliDNS()
+            PREF_DOH_DNSPOD -> builder.dohDNSPod()
+            PREF_DOH_360 -> builder.doh360()
+            PREF_DOH_QUAD101 -> builder.dohQuad101()
+            PREF_DOH_MULLVAD -> builder.dohMullvad()
+            PREF_DOH_CONTROLD -> builder.dohControlD()
+            PREF_DOH_NJALLA -> builder.dohNajalla()
+            PREF_DOH_SHECAN -> builder.dohShecan()
         }
 
-    val client by lazy { baseClientBuilder.cache(Cache(cacheDir, cacheSize)).build() }
+        builder.build()
+    }
 
     /**
      * @deprecated Since extension-lib 1.5
      */
     @Deprecated("The regular client handles Cloudflare by default")
     @Suppress("UNUSED")
-    val cloudflareClient = client
+    val cloudflareClient by lazy { client }
 
     fun defaultUserAgentProvider() = preferences.defaultUserAgent().get().trim()
 }