Add option for QUIC support

This commit is contained in:
FooIbar authored and tarsin committed 2023-07-03 07:16:44 +08:00
1 parent 09b92cc709
commit 861c05db44
6 files changed
+24 -11

No files matched your search

@@ -162,17 +162,19 @@ class EhApplication : Application(), ImageLoaderFactory {
if (Settings.bypassCloudflare) addInterceptor(CloudflareInterceptor(appCtx))
// TODO: Rewrite CronetInterceptor to use android.net.http.HttpEngine and make it Android 14 only when released
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
if (Settings.enableQuic) {
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(CronetInterceptor.newBuilder(cronetHttpClient).build())
}
addInterceptor(CronetInterceptor.newBuilder(cronetHttpClient).build())
}
}
@@ -53,6 +53,7 @@ object Settings : DataStorePreferences(null) {
var blackDarkTheme by boolPref("black_dark_theme", false).observed { updateWhenAmoledModeChanges() }
var preloadThumbAggressively by boolPref("preload_thumb_aggressively", false)
var downloadOriginImage by boolPref("download_origin_image", false)
var enableQuic by boolPref("enable_quic", true)
var bypassCloudflare by boolPref("bypass_cloudflare", false)
var thumbSizeDp by intPref("thumb_size_", 120)
var favLocalCount by intPref("fav_local", 0)
@@ -20,6 +20,7 @@ import android.os.Build
import android.os.ParcelFileDescriptor
import android.os.ParcelFileDescriptor.MODE_READ_WRITE
import com.hippo.ehviewer.EhDB
import com.hippo.ehviewer.Settings
import com.hippo.ehviewer.client.EhUtils.getSuitableTitle
import com.hippo.ehviewer.client.data.GalleryInfo
import com.hippo.ehviewer.client.ehRequest
@@ -129,7 +130,7 @@ class SpiderDen(private val mGalleryInfo: GalleryInfo) {
referer: String?,
notifyProgress: (Long, Long, Int) -> Unit,
): Boolean {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && Settings.enableQuic) {
cronetRequest(url, referer) {
disableCache()
}.execute { info ->
@@ -125,6 +125,11 @@ fun AdvancedScreen() {
entryValueRes = R.array.app_language_entry_values,
value = Settings::language,
)
SwitchPreference(
title = stringResource(id = R.string.settings_advanced_enable_quic),
summary = stringResource(id = R.string.settings_advanced_enable_quic_summary),
value = Settings::enableQuic,
)
SwitchPreference(
title = stringResource(id = R.string.settings_advanced_bypass_cloudflare),
summary = stringResource(id = R.string.settings_advanced_bypass_cloudflare_summary),
@@ -371,6 +371,8 @@
<string name="settings_advanced_dump_logcat_to">已保存日志至 %s</string>
<string name="settings_advanced_read_cache_size">阅读缓存大小</string>
<string name="settings_advanced_app_language_title">App 界面语言</string>
<string name="settings_advanced_enable_quic">[实验性] QUIC 支持</string>
<string name="settings_advanced_enable_quic_summary">启用 QUIC 协议支持(需要重启应用)</string>
<string name="settings_advanced_bypass_cloudflare">[实验性] 绕过 Cloudflare</string>
<string name="settings_advanced_bypass_cloudflare_summary">若持续遇到 403 错误可尝试此项(需要重启应用)</string>
<string name="settings_advanced_export_data">导出数据</string>
+2
View File
@@ -415,6 +415,8 @@
<string name="settings_advanced_dump_logcat_to">Logcat dumped to %s</string>
<string name="settings_advanced_read_cache_size">Read cache size</string>
<string name="settings_advanced_app_language_title">App language</string>
<string name="settings_advanced_enable_quic">[Experimental] QUIC support</string>
<string name="settings_advanced_enable_quic_summary">Enable QUIC protocol support (App restart required)</string>
<string name="settings_advanced_bypass_cloudflare">[Experimental] Bypass Cloudflare</string>
<string name="settings_advanced_bypass_cloudflare_summary">Try this if you keep getting 403 error (App restart required)</string>
<string name="settings_advanced_export_data">Export data</string>