summaryrefslogtreecommitdiffhomepage
path: root/android/lib/model/src
diff options
context:
space:
mode:
authorDavid Göransson <david.goransson90@gmail.com>2023-12-18 12:12:17 +0100
committerJonathan <jonathan@mullvad.net>2023-12-21 13:33:59 +0100
commit8ed53a012b6c510a0dfd92925b8b0e742fd79da3 (patch)
treec92a6f524fa9f659a0edb2bb702e466d051ddba2 /android/lib/model/src
parentc70509a345b6db8caf12c880b3ee3bf4c70bf79d (diff)
downloadmullvadvpn-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.kt72
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
- )
- )
- }
- }
- }
}