@@ -30,7 +30,6 @@ import androidx.compose.material3.SnackbarHostState
30
30
import androidx.compose.material3.Text
31
31
import androidx.compose.material3.rememberModalBottomSheetState
32
32
import androidx.compose.runtime.Composable
33
- import androidx.compose.runtime.LaunchedEffect
34
33
import androidx.compose.runtime.getValue
35
34
import androidx.compose.runtime.mutableStateOf
36
35
import androidx.compose.runtime.remember
@@ -46,7 +45,9 @@ import androidx.compose.ui.res.painterResource
46
45
import androidx.compose.ui.res.stringResource
47
46
import androidx.compose.ui.text.style.TextAlign
48
47
import androidx.compose.ui.tooling.preview.Preview
48
+ import androidx.lifecycle.compose.LocalLifecycleOwner
49
49
import androidx.lifecycle.compose.collectAsStateWithLifecycle
50
+ import androidx.lifecycle.compose.currentStateAsState
50
51
import androidx.lifecycle.compose.dropUnlessResumed
51
52
import com.ramcosta.composedestinations.annotation.Destination
52
53
import com.ramcosta.composedestinations.annotation.RootGraph
@@ -95,6 +96,7 @@ import net.mullvad.mullvadvpn.compose.test.SELECT_LOCATION_LOCATION_BOTTOM_SHEET
95
96
import net.mullvad.mullvadvpn.compose.textfield.SearchTextField
96
97
import net.mullvad.mullvadvpn.compose.transitions.SelectLocationTransition
97
98
import net.mullvad.mullvadvpn.compose.util.CollectSideEffectWithLifecycle
99
+ import net.mullvad.mullvadvpn.compose.util.RunOnKeyChange
98
100
import net.mullvad.mullvadvpn.compose.util.showSnackbarImmediately
99
101
import net.mullvad.mullvadvpn.lib.model.CustomListId
100
102
import net.mullvad.mullvadvpn.lib.model.RelayItem
@@ -147,7 +149,9 @@ fun SelectLocation(
147
149
val lazyListState = rememberLazyListState()
148
150
CollectSideEffectWithLifecycle (vm.uiSideEffect) {
149
151
when (it) {
150
- SelectLocationSideEffect .CloseScreen -> backNavigator.navigateBack(result = true )
152
+ SelectLocationSideEffect .CloseScreen -> {
153
+ backNavigator.navigateBack(result = true )
154
+ }
151
155
is SelectLocationSideEffect .LocationAddedToCustomList ->
152
156
launch {
153
157
snackbarHostState.showResultSnackbar(
@@ -171,18 +175,16 @@ fun SelectLocation(
171
175
duration = SnackbarDuration .Short
172
176
)
173
177
}
174
- is SelectLocationSideEffect .CenterOnItem -> {
175
- val index = state.value.indexOfSelectedRelayItem()
176
- if (index != - 1 ) {
177
- lazyListState.scrollToItem(index)
178
- lazyListState.animateScrollAndCentralizeItem(index)
179
- }
180
- }
181
178
}
182
179
}
183
180
184
- if (state.value is SelectLocationUiState .Content ) {
185
- LaunchedEffect (Unit ) { vm.centerOnSelected() }
181
+ val stateActual = state.value
182
+ RunOnKeyChange (stateActual is SelectLocationUiState .Content ) {
183
+ val index = stateActual.indexOfSelectedRelayItem()
184
+ if (index != - 1 ) {
185
+ lazyListState.scrollToItem(index)
186
+ lazyListState.animateScrollAndCentralizeItem(index)
187
+ }
186
188
}
187
189
188
190
createCustomListDialogResultRecipient.OnCustomListNavResult (
@@ -285,6 +287,8 @@ fun SelectLocationScreen(
285
287
)
286
288
}
287
289
) {
290
+ val lifecycleState = LocalLifecycleOwner .current.lifecycle.currentStateAsState()
291
+ Text (text = lifecycleState.value.toString())
288
292
var bottomSheetState by remember { mutableStateOf<BottomSheetState ?>(null ) }
289
293
BottomSheets (
290
294
bottomSheetState = bottomSheetState,
0 commit comments