summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
Diffstat (limited to 'android')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt10
-rw-r--r--android/app/src/main/kotlin/net/mullvad/talpid/tunnel/ErrorStateCause.kt8
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()