diff --git a/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt b/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt index b9b16a6a2..50b99a33e 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt @@ -148,7 +148,7 @@ object Settings : DataStorePreferences(null) { var harmonizeCategoryColor by boolPref("harmonize_category_color", true) var preloadThumbAggressively by boolPref("preload_thumb_aggressively", false) var downloadOriginImage by boolPref("download_origin_image", false) - var enableCronet by boolPref("enable_cronet", true) + var enableCronet by boolPref("enable_cronet", true).observed { updateWhenEnableCronetChanges() } var recentFavCat by intPref("recent_fav_cat", FavListUrlBuilder.FAV_CAT_LOCAL) var defaultFavSlot by intPref("default_favorite_slot", -2) var securityDelay by intPref("require_unlock_delay", 0) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/SettingsCollector.kt b/app/src/main/kotlin/com/hippo/ehviewer/SettingsCollector.kt index 2499423c3..d72a554f8 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/SettingsCollector.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/SettingsCollector.kt @@ -3,6 +3,8 @@ package com.hippo.ehviewer import android.app.UiModeManager import androidx.appcompat.app.AppCompatDelegate import androidx.core.os.LocaleListCompat +import com.hippo.ehviewer.EhApplication.Companion.ktorClient +import com.hippo.ehviewer.EhApplication.Companion.noRedirectKtorClient import com.hippo.ehviewer.client.EhCookieStore import com.hippo.ehviewer.client.EhEngine import com.hippo.ehviewer.client.EhTagDatabase @@ -43,6 +45,13 @@ fun updateWhenKeepMediaStatusChanges() { } } +fun updateWhenEnableCronetChanges() { + collectScope.launchIO { + ktorClient = ktorClient.apply { close() } + noRedirectKtorClient = noRedirectKtorClient.apply { close() } + } +} + fun updateWhenThemeChanges() { collectScope.launch { delay(100) // Avoid recompose being cancelled diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt index 3a7accc11..8f80f788e 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt @@ -36,8 +36,6 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import com.hippo.ehviewer.BuildConfig -import com.hippo.ehviewer.EhApplication.Companion.ktorClient -import com.hippo.ehviewer.EhApplication.Companion.noRedirectKtorClient import com.hippo.ehviewer.EhDB import com.hippo.ehviewer.R import com.hippo.ehviewer.Settings @@ -147,11 +145,6 @@ fun AdvancedScreen(navigator: DestinationsNavigator) { summary = if (enableCronet) "Cronet" else "OkHttp", ) { coroutineScope.launch { - fun reset() { - ktorClient = ktorClient.apply { close() } - noRedirectKtorClient = noRedirectKtorClient.apply { close() } - } - dialogState.awaitPermissionOrCancel( title = R.string.settings_advanced_http_engine, showCancelButton = false, @@ -162,7 +155,6 @@ fun AdvancedScreen(navigator: DestinationsNavigator) { selected = !enableCronet, onClick = { enableCronet = false - reset() }, shape = SegmentedButtonDefaults.itemShape(index = 0, count = 2), ) { @@ -172,7 +164,6 @@ fun AdvancedScreen(navigator: DestinationsNavigator) { selected = enableCronet, onClick = { enableCronet = true - reset() }, shape = SegmentedButtonDefaults.itemShape(index = 1, count = 2), enabled = isCronetAvailable,