From 02a3c1c54b7d13b4c1a14adf1eeea263fa9261fb Mon Sep 17 00:00:00 2001 From: tarsin Date: Wed, 12 Jul 2023 08:32:43 +0800 Subject: [PATCH] Cleanup kt style builder --- .../java/com/hippo/ehviewer/EhApplication.kt | 21 +++++++------------ .../hippo/ehviewer/client/EhCookieStore.kt | 13 +++++++++++- .../com/hippo/ehviewer/cronet/CronetUtils.kt | 4 ++-- .../java/com/hippo/ehviewer/util/SDKUtils.kt | 5 +++++ 4 files changed, 27 insertions(+), 16 deletions(-) create mode 100644 app/src/main/java/com/hippo/ehviewer/util/SDKUtils.kt diff --git a/app/src/main/java/com/hippo/ehviewer/EhApplication.kt b/app/src/main/java/com/hippo/ehviewer/EhApplication.kt index c93c37158..c6aac8aed 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.os.Build import androidx.appcompat.app.AppCompatDelegate import androidx.collection.LruCache import androidx.lifecycle.ProcessLifecycleOwner @@ -50,12 +49,12 @@ import com.hippo.ehviewer.util.Crash import com.hippo.ehviewer.util.FavouriteStatusRouter import com.hippo.ehviewer.util.FileUtils import com.hippo.ehviewer.util.ReadableTime +import com.hippo.ehviewer.util.isAtLeastQ import eu.kanade.tachiyomi.network.interceptor.CloudflareInterceptor import eu.kanade.tachiyomi.util.lang.launchIO import eu.kanade.tachiyomi.util.lang.withUIContext import kotlinx.coroutines.launch import okhttp3.AsyncDns -import okhttp3.Cookie import okhttp3.android.AndroidAsyncDns import okio.Path.Companion.toOkioPath import splitties.arch.room.roomDb @@ -160,20 +159,16 @@ class EhApplication : Application(), ImageLoaderFactory { val nonCacheOkHttpClient by lazy { httpClient { cookieJar(EhCookieStore) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) dns(AsyncDns.toDns(AndroidAsyncDns.IPv4, AndroidAsyncDns.IPv6)) + if (isAtLeastQ) { + dns(AsyncDns.toDns(AndroidAsyncDns.IPv4, AndroidAsyncDns.IPv6)) + } chunker { alwaysReadResponseBody(false) } - if (Settings.bypassCloudflare) addInterceptor(CloudflareInterceptor(appCtx)) - + if (Settings.bypassCloudflare) { + addInterceptor(CloudflareInterceptor(appCtx)) + } // TODO: Rewrite CronetInterceptor to use android.net.http.HttpEngine and make it Android 14 only when released if (isCronetSupported) { - addInterceptor { chain -> - val request = chain.request() - val url = request.url - val newRequest = request.newBuilder().addHeader("Cookie", EhCookieStore.getCookieHeader(url)).build() - val response = chain.proceed(newRequest) - EhCookieStore.saveFromResponse(url, Cookie.parseAll(url, response.headers)) - response - } + addInterceptor(EhCookieStore) cronet(cronetHttpClient) } } diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhCookieStore.kt b/app/src/main/java/com/hippo/ehviewer/client/EhCookieStore.kt index 44cb3a24a..4189735a9 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhCookieStore.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/EhCookieStore.kt @@ -20,8 +20,10 @@ import okhttp3.Cookie import okhttp3.CookieJar import okhttp3.HttpUrl import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.Interceptor +import okhttp3.Response -object EhCookieStore : CookieJar { +object EhCookieStore : CookieJar, Interceptor { private val manager = CookieManager.getInstance() fun signOut() = manager.removeAllCookies(null) fun contains(url: HttpUrl, name: String) = get(url).any { it.name == name } @@ -101,4 +103,13 @@ object EhCookieStore : CookieJar { } } } + + override fun intercept(chain: Interceptor.Chain): Response { + val request = chain.request() + val url = request.url + val newRequest = request.newBuilder().addHeader("Cookie", getCookieHeader(url)).build() + val response = chain.proceed(newRequest) + saveFromResponse(url, Cookie.parseAll(url, response.headers)) + return response + } } diff --git a/app/src/main/java/com/hippo/ehviewer/cronet/CronetUtils.kt b/app/src/main/java/com/hippo/ehviewer/cronet/CronetUtils.kt index fdfed208a..5a847f74d 100644 --- a/app/src/main/java/com/hippo/ehviewer/cronet/CronetUtils.kt +++ b/app/src/main/java/com/hippo/ehviewer/cronet/CronetUtils.kt @@ -1,7 +1,7 @@ package com.hippo.ehviewer.cronet -import android.os.Build import com.hippo.ehviewer.Settings +import com.hippo.ehviewer.util.isAtLeastQ val isCronetSupported: Boolean - get() = Settings.enableQuic && Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q + get() = Settings.enableQuic && isAtLeastQ diff --git a/app/src/main/java/com/hippo/ehviewer/util/SDKUtils.kt b/app/src/main/java/com/hippo/ehviewer/util/SDKUtils.kt new file mode 100644 index 000000000..41e4f35ea --- /dev/null +++ b/app/src/main/java/com/hippo/ehviewer/util/SDKUtils.kt @@ -0,0 +1,5 @@ +package com.hippo.ehviewer.util + +import android.os.Build + +val isAtLeastQ = Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q