diff options
| author | Albin <albin@mullvad.net> | 2023-07-25 15:34:48 +0200 |
|---|---|---|
| committer | Albin <albin@mullvad.net> | 2023-07-25 16:03:51 +0200 |
| commit | c57796d3a13840740ef31c1efc7f6d1022da2de6 (patch) | |
| tree | 30bb60dc8194d9a2c1a44fa1d13ff866808b95ef /android/lib/model/src | |
| parent | d8217899bf2b7a3cd999e0d3d704016e3b707539 (diff) | |
| download | mullvadvpn-c57796d3a13840740ef31c1efc7f6d1022da2de6.tar.xz mullvadvpn-c57796d3a13840740ef31c1efc7f6d1022da2de6.zip | |
Move model classes to model module
Diffstat (limited to 'android/lib/model/src')
53 files changed, 638 insertions, 0 deletions
diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountAndDevice.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountAndDevice.kt new file mode 100644 index 0000000000..f5137ebbb7 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountAndDevice.kt @@ -0,0 +1,6 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize data class AccountAndDevice(val account_token: String, val device: Device) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountCreationResult.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountCreationResult.kt new file mode 100644 index 0000000000..4bb4c61384 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountCreationResult.kt @@ -0,0 +1,10 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +sealed class AccountCreationResult : Parcelable { + @Parcelize data class Success(val accountToken: String) : AccountCreationResult() + + @Parcelize object Failure : AccountCreationResult() +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountData.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountData.kt new file mode 100644 index 0000000000..6dda6b8352 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountData.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.model + +data class AccountData(val expiry: String) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountExpiry.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountExpiry.kt new file mode 100644 index 0000000000..a91ce46148 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountExpiry.kt @@ -0,0 +1,15 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize +import org.joda.time.DateTime + +sealed class AccountExpiry : Parcelable { + @Parcelize data class Available(val expiryDateTime: DateTime) : AccountExpiry() + + @Parcelize object Missing : AccountExpiry() + + fun date(): DateTime? { + return (this as? Available)?.expiryDateTime + } +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountHistory.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountHistory.kt new file mode 100644 index 0000000000..008eb1ea7a --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountHistory.kt @@ -0,0 +1,12 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.android.parcel.Parcelize + +sealed class AccountHistory : Parcelable { + @Parcelize data class Available(val accountToken: String) : AccountHistory() + + @Parcelize object Missing : AccountHistory() + + fun accountToken() = (this as? Available)?.accountToken +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AppVersionInfo.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AppVersionInfo.kt new file mode 100644 index 0000000000..bbe99ce656 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AppVersionInfo.kt @@ -0,0 +1,7 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class AppVersionInfo(val supported: Boolean, val suggestedUpgrade: String?) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Constraint.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Constraint.kt new file mode 100644 index 0000000000..c6dc2bb091 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Constraint.kt @@ -0,0 +1,12 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +sealed class Constraint<T>() : Parcelable { + @Parcelize + @Suppress("PARCELABLE_PRIMARY_CONSTRUCTOR_IS_EMPTY") + class Any<T>() : Constraint<T>() + + @Parcelize data class Only<T : Parcelable>(val value: T) : Constraint<T>() +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomDnsOptions.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomDnsOptions.kt new file mode 100644 index 0000000000..bbf029dd4d --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomDnsOptions.kt @@ -0,0 +1,7 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import java.net.InetAddress +import kotlinx.parcelize.Parcelize + +@Parcelize data class CustomDnsOptions(val addresses: ArrayList<InetAddress>) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomTunnelEndpoint.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomTunnelEndpoint.kt new file mode 100644 index 0000000000..05dd38a80b --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomTunnelEndpoint.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.model + +class CustomTunnelEndpoint() diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DefaultDnsOptions.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DefaultDnsOptions.kt new file mode 100644 index 0000000000..eb22c93994 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DefaultDnsOptions.kt @@ -0,0 +1,17 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class DefaultDnsOptions( + val blockAds: Boolean = false, + val blockTrackers: Boolean = false, + val blockMalware: Boolean = false, + val blockAdultContent: Boolean = false, + val blockGambling: Boolean = false, +) : Parcelable { + fun isAnyBlockerEnabled(): Boolean { + return blockAds || blockTrackers || blockMalware || blockAdultContent || blockGambling + } +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Device.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Device.kt new file mode 100644 index 0000000000..a9ad4ec874 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Device.kt @@ -0,0 +1,37 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class Device( + val id: String, + val name: String, + val pubkey: ByteArray, + val ports: ArrayList<DevicePort>, + val created: String +) : Parcelable { + // Generated by Android Studio + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as Device + + if (id != other.id) return false + if (name != other.name) return false + if (!pubkey.contentEquals(other.pubkey)) return false + if (ports != other.ports) return false + + return true + } + + // Generated by Android Studio + override fun hashCode(): Int { + var result = id.hashCode() + result = 31 * result + name.hashCode() + result = 31 * result + pubkey.contentHashCode() + result = 31 * result + ports.hashCode() + return result + } +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceEvent.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceEvent.kt new file mode 100644 index 0000000000..741108612d --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceEvent.kt @@ -0,0 +1,7 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class DeviceEvent(val cause: DeviceEventCause, val newState: DeviceState) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceEventCause.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceEventCause.kt new file mode 100644 index 0000000000..b4c1d21761 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceEventCause.kt @@ -0,0 +1,13 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +enum class DeviceEventCause : Parcelable { + LoggedIn, + LoggedOut, + Revoked, + Updated, + RotatedKey +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceList.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceList.kt new file mode 100644 index 0000000000..de1acb0e23 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceList.kt @@ -0,0 +1,7 @@ +package net.mullvad.mullvadvpn.model + +sealed class DeviceList { + object Unavailable : DeviceList() + data class Available(val devices: List<Device>) : DeviceList() + object Error : DeviceList() +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceListEvent.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceListEvent.kt new file mode 100644 index 0000000000..7a2883617b --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceListEvent.kt @@ -0,0 +1,15 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +sealed class DeviceListEvent : Parcelable { + @Parcelize + data class Available(val accountToken: String, val devices: List<Device>) : DeviceListEvent() + + @Parcelize object Error : DeviceListEvent() + + fun isAvailable(): Boolean { + return (this is Available) + } +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DevicePort.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DevicePort.kt new file mode 100644 index 0000000000..e43eae3e6b --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DevicePort.kt @@ -0,0 +1,6 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize data class DevicePort(val id: String) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceState.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceState.kt new file mode 100644 index 0000000000..440d03de55 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceState.kt @@ -0,0 +1,28 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +sealed class DeviceState : Parcelable { + @Parcelize object Initial : DeviceState() + + @Parcelize object Unknown : DeviceState() + + @Parcelize data class LoggedIn(val accountAndDevice: AccountAndDevice) : DeviceState() + + @Parcelize object LoggedOut : DeviceState() + + @Parcelize object Revoked : DeviceState() + + fun isUnknown(): Boolean { + return this is Unknown + } + + fun deviceName(): String? { + return (this as? LoggedIn)?.accountAndDevice?.device?.name + } + + fun token(): String? { + return (this as? LoggedIn)?.accountAndDevice?.account_token + } +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DnsOptions.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DnsOptions.kt new file mode 100644 index 0000000000..1ce3acc095 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DnsOptions.kt @@ -0,0 +1,11 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class DnsOptions( + val state: DnsState, + val defaultOptions: DefaultDnsOptions, + val customOptions: CustomDnsOptions +) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DnsState.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DnsState.kt new file mode 100644 index 0000000000..9c8677ba7d --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DnsState.kt @@ -0,0 +1,6 @@ +package net.mullvad.mullvadvpn.model + +enum class DnsState { + Default, + Custom +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/GeoIpLocation.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/GeoIpLocation.kt new file mode 100644 index 0000000000..e15ab20376 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/GeoIpLocation.kt @@ -0,0 +1,14 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import java.net.InetAddress +import kotlinx.parcelize.Parcelize + +@Parcelize +data class GeoIpLocation( + val ipv4: InetAddress?, + val ipv6: InetAddress?, + val country: String, + val city: String?, + val hostname: String? +) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/GeographicLocationConstraint.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/GeographicLocationConstraint.kt new file mode 100644 index 0000000000..04f92a72ac --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/GeographicLocationConstraint.kt @@ -0,0 +1,28 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +sealed class GeographicLocationConstraint : Parcelable { + abstract val location: GeoIpLocation + + @Parcelize + data class Country(val countryCode: String) : GeographicLocationConstraint() { + override val location: GeoIpLocation + get() = GeoIpLocation(null, null, countryCode, null, null) + } + + @Parcelize + data class City(val countryCode: String, val cityCode: String) : + GeographicLocationConstraint() { + override val location: GeoIpLocation + get() = GeoIpLocation(null, null, countryCode, cityCode, null) + } + + @Parcelize + data class Hostname(val countryCode: String, val cityCode: String, val hostname: String) : + GeographicLocationConstraint() { + override val location: GeoIpLocation + get() = GeoIpLocation(null, null, countryCode, cityCode, hostname) + } +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/GetAccountDataResult.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/GetAccountDataResult.kt new file mode 100644 index 0000000000..cbed622df6 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/GetAccountDataResult.kt @@ -0,0 +1,8 @@ +package net.mullvad.mullvadvpn.model + +sealed class GetAccountDataResult { + class Ok(val accountData: AccountData) : GetAccountDataResult() + object InvalidAccount : GetAccountDataResult() + object RpcError : GetAccountDataResult() + object OtherError : GetAccountDataResult() +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/LocationConstraint.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/LocationConstraint.kt new file mode 100644 index 0000000000..de7dd4e99b --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/LocationConstraint.kt @@ -0,0 +1,10 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +sealed class LocationConstraint : Parcelable { + @Parcelize + data class Location(val location: GeographicLocationConstraint) : LocationConstraint() + @Parcelize data class CustomList(val listId: String) : LocationConstraint() +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/LoginResult.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/LoginResult.kt new file mode 100644 index 0000000000..29fb68203d --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/LoginResult.kt @@ -0,0 +1,13 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +enum class LoginResult : Parcelable { + Ok, + InvalidAccount, + MaxDevicesReached, + RpcError, + OtherError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/ObfuscationSettings.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/ObfuscationSettings.kt new file mode 100644 index 0000000000..19b5c0e5f2 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/ObfuscationSettings.kt @@ -0,0 +1,10 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class ObfuscationSettings( + val selectedObfuscation: SelectedObfuscation, + val udp2tcp: Udp2TcpObfuscationSettings +) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Port.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Port.kt new file mode 100644 index 0000000000..52f495a7a7 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Port.kt @@ -0,0 +1,6 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize data class Port(val value: Int) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PortRange.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PortRange.kt new file mode 100644 index 0000000000..376f5ef7a4 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PortRange.kt @@ -0,0 +1,6 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize data class PortRange(val from: Int, val to: Int) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PublicKey.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PublicKey.kt new file mode 100644 index 0000000000..169b6c3856 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PublicKey.kt @@ -0,0 +1,6 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize data class PublicKey(val key: ByteArray, val dateCreated: String) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/QuantumResistantState.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/QuantumResistantState.kt new file mode 100644 index 0000000000..a19267388a --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/QuantumResistantState.kt @@ -0,0 +1,11 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +enum class QuantumResistantState : Parcelable { + Auto, + On, + Off +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Relay.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Relay.kt new file mode 100644 index 0000000000..b1abdc3c75 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Relay.kt @@ -0,0 +1,11 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class Relay(val hostname: String, val active: Boolean, val endpointData: RelayEndpointData) : + Parcelable { + val isWireguardRelay + get() = endpointData is RelayEndpointData.Wireguard +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayConstraints.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayConstraints.kt new file mode 100644 index 0000000000..da2acb39f6 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayConstraints.kt @@ -0,0 +1,10 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class RelayConstraints( + val location: Constraint<LocationConstraint>, + val wireguardConstraints: WireguardConstraints +) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayConstraintsUpdate.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayConstraintsUpdate.kt new file mode 100644 index 0000000000..bd5bfb9605 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayConstraintsUpdate.kt @@ -0,0 +1,6 @@ +package net.mullvad.mullvadvpn.model + +data class RelayConstraintsUpdate( + var location: Constraint<LocationConstraint>?, + var wireguardConstraints: WireguardConstraints? +) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayEndpointData.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayEndpointData.kt new file mode 100644 index 0000000000..86b3f0fa35 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayEndpointData.kt @@ -0,0 +1,14 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +sealed class RelayEndpointData : Parcelable { + @Parcelize object Openvpn : RelayEndpointData() + + @Parcelize object Bridge : RelayEndpointData() + + @Parcelize + data class Wireguard(val wireguardRelayEndpointData: WireguardRelayEndpointData) : + RelayEndpointData() +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayList.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayList.kt new file mode 100644 index 0000000000..60d8b6dd35 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayList.kt @@ -0,0 +1,10 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class RelayList( + val countries: ArrayList<RelayListCountry>, + val wireguardEndpointData: WireguardEndpointData +) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayListCity.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayListCity.kt new file mode 100644 index 0000000000..2376609ced --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayListCity.kt @@ -0,0 +1,8 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class RelayListCity(val name: String, val code: String, val relays: ArrayList<Relay>) : + Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayListCountry.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayListCountry.kt new file mode 100644 index 0000000000..d6d4b8ec6a --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayListCountry.kt @@ -0,0 +1,11 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class RelayListCountry( + val name: String, + val code: String, + val cities: ArrayList<RelayListCity> +) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelaySettings.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelaySettings.kt new file mode 100644 index 0000000000..7832a00e77 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelaySettings.kt @@ -0,0 +1,10 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +sealed class RelaySettings : Parcelable { + @Parcelize object CustomTunnelEndpoint : RelaySettings() + + @Parcelize class Normal(val relayConstraints: RelayConstraints) : RelaySettings() +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelaySettingsUpdate.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelaySettingsUpdate.kt new file mode 100644 index 0000000000..85f5de2a32 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelaySettingsUpdate.kt @@ -0,0 +1,6 @@ +package net.mullvad.mullvadvpn.model + +sealed class RelaySettingsUpdate { + object CustomTunnelEndpoint : RelaySettingsUpdate() + data class Normal(var constraints: RelayConstraintsUpdate) : RelaySettingsUpdate() +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RemoveDeviceEvent.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RemoveDeviceEvent.kt new file mode 100644 index 0000000000..cc6e7db2bb --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RemoveDeviceEvent.kt @@ -0,0 +1,8 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class RemoveDeviceEvent(val accountToken: String, val newDevices: ArrayList<Device>) : + Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RemoveDeviceResult.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RemoveDeviceResult.kt new file mode 100644 index 0000000000..67bf165a37 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RemoveDeviceResult.kt @@ -0,0 +1,12 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +enum class RemoveDeviceResult : Parcelable { + Ok, + NotFound, + RpcError, + OtherError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/SelectedObfuscation.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/SelectedObfuscation.kt new file mode 100644 index 0000000000..8124bcc6a6 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/SelectedObfuscation.kt @@ -0,0 +1,11 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +enum class SelectedObfuscation : Parcelable { + Auto, + Off, + Udp2Tcp +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/ServiceResult.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/ServiceResult.kt new file mode 100644 index 0000000000..e597797e5a --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/ServiceResult.kt @@ -0,0 +1,23 @@ +package net.mullvad.mullvadvpn.model + +import android.os.IBinder + +data class ServiceResult(val binder: IBinder?) { + enum class ConnectionState { + CONNECTED, + DISCONNECTED + } + + val connectionState: ConnectionState + get() { + return if (binder == null) { + ConnectionState.DISCONNECTED + } else { + ConnectionState.CONNECTED + } + } + + companion object { + val NOT_CONNECTED = ServiceResult(null) + } +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Settings.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Settings.kt new file mode 100644 index 0000000000..0d45b38179 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Settings.kt @@ -0,0 +1,14 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class Settings( + val relaySettings: RelaySettings, + val obfuscationSettings: ObfuscationSettings, + val allowLan: Boolean, + val autoConnect: Boolean, + val tunnelOptions: TunnelOptions, + val showBetaReleases: Boolean +) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelOptions.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelOptions.kt new file mode 100644 index 0000000000..108fd32e04 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelOptions.kt @@ -0,0 +1,8 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class TunnelOptions(val wireguard: WireguardTunnelOptions, val dnsOptions: DnsOptions) : + Parcelable 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 new file mode 100644 index 0000000000..c3d58d2ca7 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelState.kt @@ -0,0 +1,82 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +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 + +sealed class TunnelState : Parcelable { + @Parcelize object Disconnected : TunnelState(), Parcelable + + @Parcelize + class Connecting(val endpoint: TunnelEndpoint?, val location: GeoIpLocation?) : + TunnelState(), Parcelable + + @Parcelize + class Connected(val endpoint: TunnelEndpoint, val location: GeoIpLocation?) : + TunnelState(), Parcelable + + @Parcelize + class Disconnecting(val actionAfterDisconnect: ActionAfterDisconnect) : + TunnelState(), Parcelable + + @Parcelize class Error(val errorState: ErrorState) : TunnelState(), Parcelable + + fun isSecured(): Boolean { + return when (this) { + is Connected, + is Connecting, + is Disconnecting, -> true + is Disconnected -> false + is Error -> this.errorState.isBlocking + } + } + + 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, false)) + } + else -> Error(ErrorState(ErrorStateCause.SetFirewallPolicyError, false)) + } + } + } + + 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 + } + } + } +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Udp2TcpObfuscationSettings.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Udp2TcpObfuscationSettings.kt new file mode 100644 index 0000000000..f01bb35c6f --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Udp2TcpObfuscationSettings.kt @@ -0,0 +1,6 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize data class Udp2TcpObfuscationSettings(val port: Constraint<Int>) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmission.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmission.kt new file mode 100644 index 0000000000..efe05e2f5c --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmission.kt @@ -0,0 +1,6 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize data class VoucherSubmission(val timeAdded: Long, val newExpiry: String) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionError.kt new file mode 100644 index 0000000000..1cf778400a --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionError.kt @@ -0,0 +1,12 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +enum class VoucherSubmissionError : Parcelable { + InvalidVoucher, + VoucherAlreadyUsed, + RpcError, + OtherError, +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionResult.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionResult.kt new file mode 100644 index 0000000000..4163b782d4 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionResult.kt @@ -0,0 +1,10 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +sealed class VoucherSubmissionResult : Parcelable { + @Parcelize data class Ok(val submission: VoucherSubmission) : VoucherSubmissionResult() + + @Parcelize data class Error(val error: VoucherSubmissionError) : VoucherSubmissionResult() +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/WireguardConstraints.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/WireguardConstraints.kt new file mode 100644 index 0000000000..1725b01f0f --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/WireguardConstraints.kt @@ -0,0 +1,6 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize data class WireguardConstraints(val port: Constraint<Port>) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/WireguardEndpointData.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/WireguardEndpointData.kt new file mode 100644 index 0000000000..0a21221bb0 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/WireguardEndpointData.kt @@ -0,0 +1,6 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize data class WireguardEndpointData(val portRanges: ArrayList<PortRange>) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/WireguardRelayEndpointData.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/WireguardRelayEndpointData.kt new file mode 100644 index 0000000000..4a1930dd43 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/WireguardRelayEndpointData.kt @@ -0,0 +1,6 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize object WireguardRelayEndpointData : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/WireguardTunnelOptions.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/WireguardTunnelOptions.kt new file mode 100644 index 0000000000..f4a869a4ea --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/WireguardTunnelOptions.kt @@ -0,0 +1,8 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class WireguardTunnelOptions(val mtu: Int?, val quantumResistant: QuantumResistantState) : + Parcelable |
