From 253c116f9b60216fd4fd13638b2c478e3fdd1ba9 Mon Sep 17 00:00:00 2001 From: kari-ts <135075563+kari-ts@users.noreply.github.com> Date: Tue, 16 Apr 2024 12:21:17 -0700 Subject: [PATCH] MainView: fix toggle animation (#333) Use persistent isOn state across recompositions Updates tailscale/corp#18202 Fixes tailscale/corp#19194 Signed-off-by: kari-ts --- android/src/main/java/com/tailscale/ipn/ui/view/MainView.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/main/java/com/tailscale/ipn/ui/view/MainView.kt b/android/src/main/java/com/tailscale/ipn/ui/view/MainView.kt index f41628c..5c97955 100644 --- a/android/src/main/java/com/tailscale/ipn/ui/view/MainView.kt +++ b/android/src/main/java/com/tailscale/ipn/ui/view/MainView.kt @@ -101,6 +101,7 @@ fun MainView( navigation: MainViewNavigation, viewModel: MainViewModel = viewModel() ) { + val isOn = viewModel.vpnToggleState.collectAsState() LoadingIndicator.Wrap { Scaffold(contentWindowInsets = WindowInsets.Companion.statusBars) { paddingInsets -> Column( @@ -115,7 +116,6 @@ fun MainView( ListItem( colors = MaterialTheme.colorScheme.surfaceContainerListItem, leadingContent = { - val isOn = viewModel.vpnToggleState.collectAsState(initial = false) TintedSwitch(onCheckedChange = { viewModel.toggleVpn() }, checked = isOn.value) }, headlineContent = {