diff options
| author | David Göransson <david.goransson90@gmail.com> | 2023-12-18 12:12:17 +0100 |
|---|---|---|
| committer | Jonathan <jonathan@mullvad.net> | 2023-12-21 13:33:59 +0100 |
| commit | 8ed53a012b6c510a0dfd92925b8b0e742fd79da3 (patch) | |
| tree | c92a6f524fa9f659a0edb2bb702e466d051ddba2 /android/lib/model/src | |
| parent | c70509a345b6db8caf12c880b3ee3bf4c70bf79d (diff) | |
| download | mullvadvpn-8ed53a012b6c510a0dfd92925b8b0e742fd79da3.tar.xz mullvadvpn-8ed53a012b6c510a0dfd92925b8b0e742fd79da3.zip | |
Support new tunnel state API in the Android frontend.
Remove `get_current_location` from jni.
Diffstat (limited to 'android/lib/model/src')
| -rw-r--r-- | android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelState.kt | 72 |
1 files changed, 12 insertions, 60 deletions
diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelState.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelState.kt index 26f776b223..4ab925d014 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelState.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelState.kt @@ -5,11 +5,10 @@ import kotlinx.parcelize.Parcelize import net.mullvad.talpid.net.TunnelEndpoint import net.mullvad.talpid.tunnel.ActionAfterDisconnect import net.mullvad.talpid.tunnel.ErrorState -import net.mullvad.talpid.tunnel.ErrorStateCause -import net.mullvad.talpid.tunnel.FirewallPolicyError sealed class TunnelState : Parcelable { - @Parcelize object Disconnected : TunnelState(), Parcelable + @Parcelize + data class Disconnected(val location: GeoIpLocation? = null) : TunnelState(), Parcelable @Parcelize class Connecting(val endpoint: TunnelEndpoint?, val location: GeoIpLocation?) : @@ -25,6 +24,16 @@ sealed class TunnelState : Parcelable { @Parcelize class Error(val errorState: ErrorState) : TunnelState(), Parcelable + fun location(): GeoIpLocation? { + return when (this) { + is Connected -> location + is Connecting -> location + is Disconnecting -> null + is Disconnected -> location + is Error -> null + } + } + fun isSecured(): Boolean { return when (this) { is Connected, @@ -34,61 +43,4 @@ sealed class TunnelState : Parcelable { is Error -> this.errorState.isBlocking } } - - override fun toString(): String = - when (this) { - is Disconnected -> DISCONNECTED - is Connecting -> CONNECTING - is Connected -> CONNECTED - is Disconnecting -> { - if (actionAfterDisconnect == ActionAfterDisconnect.Reconnect) { - RECONNECTING - } else { - DISCONNECTING - } - } - is Error -> { - if (errorState.isBlocking) { - BLOCKING - } else { - ERROR - } - } - } - - companion object { - const val DISCONNECTED = "disconnected" - const val CONNECTING = "connecting" - const val CONNECTED = "connected" - const val RECONNECTING = "reconnecting" - const val DISCONNECTING = "disconnecting" - const val BLOCKING = "blocking" - const val ERROR = "error" - - fun fromString(description: String, endpoint: TunnelEndpoint?): TunnelState { - return when (description) { - DISCONNECTED -> Disconnected - CONNECTING -> Connecting(endpoint, null) - CONNECTED -> Connected(endpoint!!, null) - RECONNECTING -> Disconnecting(ActionAfterDisconnect.Reconnect) - DISCONNECTING -> Disconnecting(ActionAfterDisconnect.Nothing) - BLOCKING -> Error(ErrorState(ErrorStateCause.StartTunnelError, true)) - ERROR -> { - Error( - ErrorState( - ErrorStateCause.SetFirewallPolicyError(FirewallPolicyError.Generic), - false - ) - ) - } - else -> - Error( - ErrorState( - ErrorStateCause.SetFirewallPolicyError(FirewallPolicyError.Generic), - false - ) - ) - } - } - } } |
