summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Göransson <david.goransson90@gmail.com>2023-12-19 15:43:35 +0100
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2024-01-04 14:58:53 +0100
commitdc9de3171f1c0e1e169c29be1098d8563dbb159f (patch)
tree934965a53aa5972f4dd83509236b914dd25f28b7
parent268bde60ec57ddc85d81ca33ca10b8c11443f707 (diff)
downloadmullvadvpn-dc9de3171f1c0e1e169c29be1098d8563dbb159f.tar.xz
mullvadvpn-dc9de3171f1c0e1e169c29be1098d8563dbb159f.zip
Handle device revocation on ConnectScreen
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ConnectScreen.kt7
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt11
2 files changed, 17 insertions, 1 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ConnectScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ConnectScreen.kt
index 646e89c987..f626191b4c 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ConnectScreen.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ConnectScreen.kt
@@ -43,6 +43,7 @@ import net.mullvad.mullvadvpn.compose.component.ScaffoldWithTopBarAndDeviceName
import net.mullvad.mullvadvpn.compose.component.drawVerticalScrollbar
import net.mullvad.mullvadvpn.compose.component.notificationbanner.NotificationBanner
import net.mullvad.mullvadvpn.compose.destinations.AccountDestination
+import net.mullvad.mullvadvpn.compose.destinations.DeviceRevokedDestination
import net.mullvad.mullvadvpn.compose.destinations.OutOfTimeDestination
import net.mullvad.mullvadvpn.compose.destinations.SelectLocationDestination
import net.mullvad.mullvadvpn.compose.destinations.SettingsDestination
@@ -98,6 +99,12 @@ fun Connect(navigator: DestinationsNavigator) {
popUpTo(NavGraphs.root) { inclusive = true }
}
}
+ ConnectViewModel.UiSideEffect.RevokedDevice -> {
+ navigator.navigate(DeviceRevokedDestination) {
+ launchSingleTop = true
+ popUpTo(NavGraphs.root) { inclusive = true }
+ }
+ }
}
}
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt
index d25f360b51..69a75bea7f 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt
@@ -23,6 +23,7 @@ import kotlinx.coroutines.flow.shareIn
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
import net.mullvad.mullvadvpn.compose.state.ConnectUiState
+import net.mullvad.mullvadvpn.model.DeviceState
import net.mullvad.mullvadvpn.model.GeoIpLocation
import net.mullvad.mullvadvpn.model.TunnelState
import net.mullvad.mullvadvpn.repository.AccountRepository
@@ -137,12 +138,18 @@ class ConnectViewModel(
init {
viewModelScope.launch {
- // This once we get isOutOfTime true we will navigate to OutOfTime view.
+ // When we get isOutOfTime true we will navigate to OutOfTime view.
outOfTimeUseCase.isOutOfTime().first { it == true }
_uiSideEffect.send(UiSideEffect.OutOfTime)
}
viewModelScope.launch {
+ // When we get a revoked DeviceState we navigate to the RevokedDevice screen.
+ deviceRepository.deviceState.filterIsInstance<DeviceState.Revoked>().first()
+ _uiSideEffect.send(UiSideEffect.RevokedDevice)
+ }
+
+ viewModelScope.launch {
paymentUseCase.verifyPurchases { accountRepository.fetchAccountExpiry() }
}
}
@@ -194,6 +201,8 @@ class ConnectViewModel(
data class OpenAccountManagementPageInBrowser(val token: String) : UiSideEffect
data object OutOfTime : UiSideEffect
+
+ data object RevokedDevice : UiSideEffect
}
companion object {