From 045c6abe406ceefd3672e172de2d1f90040113bb Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Sun, 7 Jan 2024 21:45:28 +0800 Subject: [PATCH] Revert "Always enable predictive nav" (#616) * Revert "Always enable predictive nav" This reverts commit 0333a8c679256e36c74557a56349b3f539f03973. * Disable predictive nav animations by default --- .../kotlin/androidx/navigation/compose/NavHost.kt | 14 +++++++++++--- app/src/main/kotlin/com/hippo/ehviewer/Settings.kt | 1 + .../hippo/ehviewer/ui/settings/AdvancedScreen.kt | 4 ++++ app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 5 files changed, 18 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/androidx/navigation/compose/NavHost.kt b/app/src/main/kotlin/androidx/navigation/compose/NavHost.kt index 80f68c99c..57802d04d 100644 --- a/app/src/main/kotlin/androidx/navigation/compose/NavHost.kt +++ b/app/src/main/kotlin/androidx/navigation/compose/NavHost.kt @@ -29,6 +29,7 @@ import androidx.compose.animation.core.SeekableTransitionState import androidx.compose.animation.core.rememberTransition import androidx.compose.animation.core.snap import androidx.compose.animation.core.tween +import androidx.compose.animation.core.updateTransition import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.animation.togetherWith @@ -55,6 +56,8 @@ import androidx.navigation.NavHostController import androidx.navigation.Navigator import androidx.navigation.createGraph import androidx.navigation.get +import com.hippo.ehviewer.Settings +import com.hippo.ehviewer.collectAsState import kotlinx.coroutines.CancellationException import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.withContext @@ -246,10 +249,15 @@ public fun NavHost( val zIndices = remember { mutableMapOf() } if (backStackEntry != null) { + val enablePredictiveBack by Settings.predictiveNavAnim.collectAsState() val transitionState = remember { SeekableTransitionState(backStackEntry) } - val transition = rememberTransition(transitionState, label = "entry") - LaunchedEffect(backStackEntry) { - transitionState.animateTo(backStackEntry) + val transition = if (enablePredictiveBack) { + LaunchedEffect(backStackEntry) { + transitionState.animateTo(backStackEntry) + } + rememberTransition(transitionState, label = "entry") + } else { + updateTransition(backStackEntry, label = "entry") } var inPredictiveBack by remember { mutableStateOf(false) } diff --git a/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt b/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt index 50b99a33e..81e9bae2d 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt @@ -109,6 +109,7 @@ object Settings : DataStorePreferences(null) { val listThumbSize = intPref("list_tile_size", 40) val languageFilter = intPref("language_filter", -1) val meteredNetworkWarning = boolPref("cellular_network_warning", false) + val predictiveNavAnim = boolPref("predictive_nav_anim_2", false) val blackDarkTheme = boolPref("black_dark_theme", false) var downloadScheme by stringOrNullPref("image_scheme", null) 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 8f80f788e..d0840dc09 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 @@ -179,6 +179,10 @@ fun AdvancedScreen(navigator: DestinationsNavigator) { title = stringResource(id = R.string.preload_thumb_aggressively), value = Settings::preloadThumbAggressively, ) + SwitchPreference( + title = stringResource(id = R.string.predictive_nav_anim), + value = Settings.predictiveNavAnim::value, + ) IntSliderPreference( maxValue = 5, minValue = 1, diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 58ca6ff48..f29ae194f 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -508,6 +508,7 @@ 详情模式下缩略图大小 账户 激进地预载缩略图 + [实验性] 预见式返回导航动画 自动检查更新 从不 每天 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 574bdc3a6..305323eff 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -571,6 +571,7 @@ Thumb size in detail mode Account Preload thumbs aggressively + [Experimental] Predictive back navigation animations User Agent Automatically check for updates Never