diff options
Diffstat (limited to 'android')
| -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() |
