summaryrefslogtreecommitdiffhomepage
path: root/android/app/src
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2024-07-29 10:59:55 +0200
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2024-07-29 11:19:48 +0200
commitd6033019257ade6cc824d092d8454ae354a272ea (patch)
treed6830eed3e64e54d42ea4019feb9976c557185ad /android/app/src
parent7b30164bf42bde27c781bae904c62343dfbcc230 (diff)
downloadmullvadvpn-d6033019257ade6cc824d092d8454ae354a272ea.tar.xz
mullvadvpn-d6033019257ade6cc824d092d8454ae354a272ea.zip
Fix crash when removing the NoDaemonScreen
Diffstat (limited to 'android/app/src')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/MullvadApp.kt19
1 files changed, 11 insertions, 8 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/MullvadApp.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/MullvadApp.kt
index c73e6601e5..9827c45a92 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/MullvadApp.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/MullvadApp.kt
@@ -15,8 +15,10 @@ import com.ramcosta.composedestinations.generated.destinations.ChangelogDestinat
import com.ramcosta.composedestinations.generated.destinations.ConnectDestination
import com.ramcosta.composedestinations.generated.destinations.NoDaemonDestination
import com.ramcosta.composedestinations.generated.destinations.OutOfTimeDestination
+import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import com.ramcosta.composedestinations.rememberNavHostEngine
import com.ramcosta.composedestinations.utils.destination
+import com.ramcosta.composedestinations.utils.rememberDestinationsNavigator
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.map
import net.mullvad.mullvadvpn.compose.util.LaunchedEffectCollect
@@ -34,20 +36,21 @@ private val changeLogDestinations = listOf(ConnectDestination, OutOfTimeDestinat
@Composable
fun MullvadApp() {
val engine = rememberNavHostEngine()
- val navController: NavHostController = engine.rememberNavController()
+ val navHostController: NavHostController = engine.rememberNavController()
+ val navigator: DestinationsNavigator = navHostController.rememberDestinationsNavigator()
val serviceVm = koinViewModel<NoDaemonViewModel>()
val permissionVm = koinViewModel<VpnPermissionViewModel>()
DisposableEffect(Unit) {
- navController.addOnDestinationChangedListener(serviceVm)
- onDispose { navController.removeOnDestinationChangedListener(serviceVm) }
+ navHostController.addOnDestinationChangedListener(serviceVm)
+ onDispose { navHostController.removeOnDestinationChangedListener(serviceVm) }
}
DestinationsNavHost(
modifier = Modifier.semantics { testTagsAsResourceId = true }.fillMaxSize(),
engine = engine,
- navController = navController,
+ navController = navHostController,
navGraph = NavGraphs.root,
)
@@ -55,8 +58,8 @@ fun MullvadApp() {
LaunchedEffectCollect(serviceVm.uiSideEffect) {
when (it) {
DaemonScreenEvent.Show ->
- navController.navigate(NoDaemonDestination) { launchSingleTop = true }
- DaemonScreenEvent.Remove -> navController.popBackStack(NoDaemonDestination, true)
+ navigator.navigate(NoDaemonDestination) { launchSingleTop = true }
+ DaemonScreenEvent.Remove -> navigator.popBackStack(NoDaemonDestination, true)
}
}
@@ -65,11 +68,11 @@ fun MullvadApp() {
LaunchedEffectCollect(changeLogsViewModel.uiSideEffect) {
// Wait until we are in an acceptable destination
- navController.currentBackStackEntryFlow
+ navHostController.currentBackStackEntryFlow
.map { it.destination() }
.first { it in changeLogDestinations }
- navController.navigate(ChangelogDestination(it).route)
+ navigator.navigate(ChangelogDestination(it))
}
// Ask for VPN Permission