diff options
| author | Albin <albin@mullvad.net> | 2022-11-16 16:10:28 +0100 |
|---|---|---|
| committer | Albin <albin@mullvad.net> | 2022-12-01 08:05:34 +0100 |
| commit | ec41ff7423de7338e95923304d0e0cdc44fa816b (patch) | |
| tree | df7d8ef72656b4217245c3c23cc90edd2dec33e4 /android/app | |
| parent | 1e7eabbc591ffe554b531c9655b032e5072d22a9 (diff) | |
| download | mullvadvpn-ec41ff7423de7338e95923304d0e0cdc44fa816b.tar.xz mullvadvpn-ec41ff7423de7338e95923304d0e0cdc44fa816b.zip | |
Add transition on tunnel error caused by expiry
This commit adds an automatic transition to the out-of-time view if
there's a tunnel state error caused by the account being expired.
Diffstat (limited to 'android/app')
| -rw-r--r-- | android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt | 10 | ||||
| -rw-r--r-- | android/app/src/main/kotlin/net/mullvad/talpid/tunnel/ErrorStateCause.kt | 8 |
2 files changed, 17 insertions, 1 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt index 79c0783fcd..ea048c4802 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt @@ -44,6 +44,7 @@ import net.mullvad.mullvadvpn.util.JobTracker import net.mullvad.mullvadvpn.util.appVersionCallbackFlow import net.mullvad.mullvadvpn.util.callbackFlowFromNotifier import net.mullvad.mullvadvpn.viewmodel.ConnectViewModel +import net.mullvad.talpid.tunnel.ErrorStateCause import org.joda.time.DateTime import org.koin.android.ext.android.inject import org.koin.androidx.viewmodel.ext.android.viewModel @@ -235,6 +236,10 @@ class ConnectFragment : BaseFragment(), NavigationBarPainter { actionButton.tunnelState = uiState switchLocationButton.tunnelState = uiState + + if (realState.isTunnelErrorStateDueToExpiredAccount()) { + openOutOfTimeScreen() + } } private fun openSwitchLocationScreen() { @@ -275,4 +280,9 @@ class ConnectFragment : BaseFragment(), NavigationBarPainter { openOutOfTimeScreen() } } + + private fun TunnelState.isTunnelErrorStateDueToExpiredAccount(): Boolean { + return ((this as? TunnelState.Error)?.errorState?.cause as? ErrorStateCause.AuthFailed) + ?.isCausedByExpiredAccount() ?: false + } } diff --git a/android/app/src/main/kotlin/net/mullvad/talpid/tunnel/ErrorStateCause.kt b/android/app/src/main/kotlin/net/mullvad/talpid/tunnel/ErrorStateCause.kt index f5b79bdfd5..b31f71f1fb 100644 --- a/android/app/src/main/kotlin/net/mullvad/talpid/tunnel/ErrorStateCause.kt +++ b/android/app/src/main/kotlin/net/mullvad/talpid/tunnel/ErrorStateCause.kt @@ -4,9 +4,15 @@ import android.os.Parcelable import java.net.InetAddress import kotlinx.parcelize.Parcelize +private const val AUTH_FAILED_REASON_EXPIRED_ACCOUNT = "[EXPIRED_ACCOUNT]" + sealed class ErrorStateCause : Parcelable { @Parcelize - class AuthFailed(val reason: String?) : ErrorStateCause() + class AuthFailed(private val reason: String?) : ErrorStateCause() { + fun isCausedByExpiredAccount(): Boolean { + return reason == AUTH_FAILED_REASON_EXPIRED_ACCOUNT + } + } @Parcelize object Ipv6Unavailable : ErrorStateCause() |
