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)) if (Settings.bypassCloudflare) addInterceptor(CloudflareInterceptor(appCtx))
// TODO: Rewrite CronetInterceptor to use android.net.http.HttpEngine and make it Android 14 only when released // TODO: Rewrite CronetInterceptor to use android.net.http.HttpEngine and make it Android 14 only when released
addInterceptor { chain -> if (Settings.enableQuic) {
val request = chain.request() addInterceptor { chain ->
val url = request.url val request = chain.request()
val newRequest = request.newBuilder() val url = request.url
.addHeader("Cookie", EhCookieStore.getCookieHeader(url)) val newRequest = request.newBuilder()
.build() .addHeader("Cookie", EhCookieStore.getCookieHeader(url))
val response = chain.proceed(newRequest) .build()
EhCookieStore.saveFromResponse(url, Cookie.parseAll(url, response.headers)) val response = chain.proceed(newRequest)
response 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 blackDarkTheme by boolPref("black_dark_theme", false).observed { updateWhenAmoledModeChanges() }
var preloadThumbAggressively by boolPref("preload_thumb_aggressively", false) var preloadThumbAggressively by boolPref("preload_thumb_aggressively", false)
var downloadOriginImage by boolPref("download_origin_image", false) var downloadOriginImage by boolPref("download_origin_image", false)
var enableQuic by boolPref("enable_quic", true)
var bypassCloudflare by boolPref("bypass_cloudflare", false) var bypassCloudflare by boolPref("bypass_cloudflare", false)
var thumbSizeDp by intPref("thumb_size_", 120) var thumbSizeDp by intPref("thumb_size_", 120)
var favLocalCount by intPref("fav_local", 0) var favLocalCount by intPref("fav_local", 0)
@@ -20,6 +20,7 @@ import android.os.Build
import android.os.ParcelFileDescriptor import android.os.ParcelFileDescriptor
import android.os.ParcelFileDescriptor.MODE_READ_WRITE import android.os.ParcelFileDescriptor.MODE_READ_WRITE
import com.hippo.ehviewer.EhDB import com.hippo.ehviewer.EhDB
import com.hippo.ehviewer.Settings
import com.hippo.ehviewer.client.EhUtils.getSuitableTitle import com.hippo.ehviewer.client.EhUtils.getSuitableTitle
import com.hippo.ehviewer.client.data.GalleryInfo import com.hippo.ehviewer.client.data.GalleryInfo
import com.hippo.ehviewer.client.ehRequest import com.hippo.ehviewer.client.ehRequest
@@ -129,7 +130,7 @@ class SpiderDen(private val mGalleryInfo: GalleryInfo) {
referer: String?, referer: String?,
notifyProgress: (Long, Long, Int) -> Unit, notifyProgress: (Long, Long, Int) -> Unit,
): Boolean { ): 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) { cronetRequest(url, referer) {
disableCache() disableCache()
}.execute { info -> }.execute { info ->
@@ -125,6 +125,11 @@ fun AdvancedScreen() {
entryValueRes = R.array.app_language_entry_values, entryValueRes = R.array.app_language_entry_values,
value = Settings::language, 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( SwitchPreference(
title = stringResource(id = R.string.settings_advanced_bypass_cloudflare), title = stringResource(id = R.string.settings_advanced_bypass_cloudflare),
summary = stringResource(id = R.string.settings_advanced_bypass_cloudflare_summary), 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_dump_logcat_to">已保存日志至 %s</string>
<string name="settings_advanced_read_cache_size">阅读缓存大小</string> <string name="settings_advanced_read_cache_size">阅读缓存大小</string>
<string name="settings_advanced_app_language_title">App 界面语言</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">[实验性] 绕过 Cloudflare</string>
<string name="settings_advanced_bypass_cloudflare_summary">若持续遇到 403 错误可尝试此项(需要重启应用)</string> <string name="settings_advanced_bypass_cloudflare_summary">若持续遇到 403 错误可尝试此项(需要重启应用)</string>
<string name="settings_advanced_export_data">导出数据</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_dump_logcat_to">Logcat dumped to %s</string>
<string name="settings_advanced_read_cache_size">Read cache size</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_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">[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_bypass_cloudflare_summary">Try this if you keep getting 403 error (App restart required)</string>
<string name="settings_advanced_export_data">Export data</string> <string name="settings_advanced_export_data">Export data</string>