diff options
Diffstat (limited to 'android/lib/model/src')
155 files changed, 889 insertions, 692 deletions
diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AccountData.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AccountData.kt new file mode 100644 index 0000000000..60395721d8 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AccountData.kt @@ -0,0 +1,8 @@ +package net.mullvad.mullvadvpn.lib.model + +import org.joda.time.DateTime + +data class AccountData( + val id: AccountId, + val expiryDate: DateTime, +) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AccountId.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AccountId.kt new file mode 100644 index 0000000000..75550259fd --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AccountId.kt @@ -0,0 +1,10 @@ +package net.mullvad.mullvadvpn.lib.model + +import java.util.UUID + +@JvmInline +value class AccountId(val value: UUID) { + companion object { + fun fromString(value: String) = AccountId(UUID.fromString(value)) + } +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AccountToken.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AccountToken.kt new file mode 100644 index 0000000000..d03a0d6721 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AccountToken.kt @@ -0,0 +1,6 @@ +package net.mullvad.mullvadvpn.lib.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@JvmInline @Parcelize value class AccountToken(val value: String) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ActionAfterDisconnect.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ActionAfterDisconnect.kt new file mode 100644 index 0000000000..531fc1c073 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ActionAfterDisconnect.kt @@ -0,0 +1,7 @@ +package net.mullvad.mullvadvpn.lib.model + +enum class ActionAfterDisconnect { + Nothing, + Block, + Reconnect +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AddSplitTunnelingAppError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AddSplitTunnelingAppError.kt new file mode 100644 index 0000000000..338162db8c --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AddSplitTunnelingAppError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +interface AddSplitTunnelingAppError { + data class Unknown(val throwable: Throwable) : AddSplitTunnelingAppError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AppId.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AppId.kt new file mode 100644 index 0000000000..0663b530a1 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AppId.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.lib.model + +@JvmInline value class AppId(val value: String) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AppVersionInfo.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AppVersionInfo.kt new file mode 100644 index 0000000000..9af168bf28 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AppVersionInfo.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.lib.model + +data class AppVersionInfo(val supported: Boolean, val suggestedUpgrade: String?) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/BuildVersion.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/BuildVersion.kt new file mode 100644 index 0000000000..980ea23961 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/BuildVersion.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.lib.model + +data class BuildVersion(val name: String, val code: Int) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ClearAllOverridesError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ClearAllOverridesError.kt new file mode 100644 index 0000000000..ce1bc0af12 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ClearAllOverridesError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface ClearAllOverridesError { + data class Unknown(val throwable: Throwable) : ClearAllOverridesError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ConnectError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ConnectError.kt new file mode 100644 index 0000000000..307a235314 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ConnectError.kt @@ -0,0 +1,7 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface ConnectError { + data class Unknown(val throwable: Throwable) : ConnectError + + data object NoVpnPermission : ConnectError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Constraint.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Constraint.kt new file mode 100644 index 0000000000..95e7d95154 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Constraint.kt @@ -0,0 +1,21 @@ +package net.mullvad.mullvadvpn.lib.model + +import arrow.optics.optics + +@optics +sealed interface Constraint<out T> { + data object Any : Constraint<Nothing> + + @optics + data class Only<T>(val value: T) : Constraint<T> { + companion object + } + + fun getOrNull(): T? = + when (this) { + Any -> null + is Only -> value + } + + companion object +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/CreateAccountError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/CreateAccountError.kt new file mode 100644 index 0000000000..eeeaf11fca --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/CreateAccountError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed class CreateAccountError { + data class Unknown(val error: Throwable) : CreateAccountError() +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/CreateCustomListError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/CreateCustomListError.kt new file mode 100644 index 0000000000..adbac22d9b --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/CreateCustomListError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface CreateCustomListError + +data object CustomListAlreadyExists : CreateCustomListError diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/CustomDnsOptions.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/CustomDnsOptions.kt new file mode 100644 index 0000000000..4fd64b2892 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/CustomDnsOptions.kt @@ -0,0 +1,9 @@ +package net.mullvad.mullvadvpn.lib.model + +import arrow.optics.optics +import java.net.InetAddress + +@optics +data class CustomDnsOptions(val addresses: List<InetAddress>) { + companion object +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/CustomList.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/CustomList.kt new file mode 100644 index 0000000000..ed43ac1097 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/CustomList.kt @@ -0,0 +1,12 @@ +package net.mullvad.mullvadvpn.lib.model + +import arrow.optics.optics + +@optics +data class CustomList( + val id: CustomListId, + val name: CustomListName, + val locations: List<GeoLocationId> +) { + companion object +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomListName.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/CustomListName.kt index 5822eec2b3..186d74dc92 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomListName.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/CustomListName.kt @@ -1,4 +1,4 @@ -package net.mullvad.mullvadvpn.model +package net.mullvad.mullvadvpn.lib.model import android.os.Parcelable import kotlinx.parcelize.Parcelize 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/lib/model/DefaultDnsOptions.kt index 69f4d4d220..6979320ce6 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DefaultDnsOptions.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/DefaultDnsOptions.kt @@ -1,9 +1,8 @@ -package net.mullvad.mullvadvpn.model +package net.mullvad.mullvadvpn.lib.model -import android.os.Parcelable -import kotlinx.parcelize.Parcelize +import arrow.optics.optics -@Parcelize +@optics data class DefaultDnsOptions( val blockAds: Boolean = false, val blockTrackers: Boolean = false, @@ -11,7 +10,7 @@ data class DefaultDnsOptions( val blockAdultContent: Boolean = false, val blockGambling: Boolean = false, val blockSocialMedia: Boolean = false, -) : Parcelable { +) { fun isAnyBlockerEnabled(): Boolean { return blockAds || blockTrackers || @@ -20,4 +19,6 @@ data class DefaultDnsOptions( blockGambling || blockSocialMedia } + + companion object } diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/DeleteCustomListError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/DeleteCustomListError.kt new file mode 100644 index 0000000000..d9c93c87cf --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/DeleteCustomListError.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface DeleteCustomListError diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/DeleteDeviceError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/DeleteDeviceError.kt new file mode 100644 index 0000000000..1c6c54bcf0 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/DeleteDeviceError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface DeleteDeviceError { + data class Unknown(val error: Throwable) : DeleteDeviceError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Device.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Device.kt new file mode 100644 index 0000000000..e8303f0eca --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Device.kt @@ -0,0 +1,12 @@ +package net.mullvad.mullvadvpn.lib.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize +import net.mullvad.mullvadvpn.lib.model.extensions.startCase +import org.joda.time.DateTime + +@Parcelize +data class Device(val id: DeviceId, private val name: String, val creationDate: DateTime) : + Parcelable { + fun displayName(): String = name.startCase() +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/DeviceId.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/DeviceId.kt new file mode 100644 index 0000000000..863d15fd67 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/DeviceId.kt @@ -0,0 +1,13 @@ +package net.mullvad.mullvadvpn.lib.model + +import android.os.Parcelable +import java.util.UUID +import kotlinx.parcelize.Parcelize + +@JvmInline +@Parcelize +value class DeviceId(val value: UUID) : Parcelable { + companion object { + fun fromString(value: String): DeviceId = DeviceId(UUID.fromString(value)) + } +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/DeviceState.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/DeviceState.kt new file mode 100644 index 0000000000..4546cd46b3 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/DeviceState.kt @@ -0,0 +1,21 @@ +package net.mullvad.mullvadvpn.lib.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +sealed class DeviceState : Parcelable { + @Parcelize + data class LoggedIn(val accountToken: AccountToken, val device: Device) : DeviceState() + + @Parcelize data object LoggedOut : DeviceState() + + @Parcelize data object Revoked : DeviceState() + + fun displayName(): String? { + return (this as? LoggedIn)?.device?.displayName() + } + + fun token(): AccountToken? { + return (this as? LoggedIn)?.accountToken + } +} 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/lib/model/DnsOptions.kt index 1ce3acc095..ae27e47457 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DnsOptions.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/DnsOptions.kt @@ -1,11 +1,12 @@ -package net.mullvad.mullvadvpn.model +package net.mullvad.mullvadvpn.lib.model -import android.os.Parcelable -import kotlinx.parcelize.Parcelize +import arrow.optics.optics -@Parcelize +@optics data class DnsOptions( val state: DnsState, val defaultOptions: DefaultDnsOptions, val customOptions: CustomDnsOptions -) : Parcelable +) { + companion object +} 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/lib/model/DnsState.kt index 9c8677ba7d..4bf053eef1 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DnsState.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/DnsState.kt @@ -1,4 +1,4 @@ -package net.mullvad.mullvadvpn.model +package net.mullvad.mullvadvpn.lib.model enum class DnsState { Default, diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/EnableSplitTunnelingError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/EnableSplitTunnelingError.kt new file mode 100644 index 0000000000..43a4cc41b1 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/EnableSplitTunnelingError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +interface EnableSplitTunnelingError { + data class Unknown(val throwable: Throwable) : EnableSplitTunnelingError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Endpoint.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Endpoint.kt new file mode 100644 index 0000000000..4eae8b08ec --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Endpoint.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +import java.net.InetSocketAddress + +data class Endpoint(val address: InetSocketAddress, val protocol: TransportProtocol) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ErrorState.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ErrorState.kt new file mode 100644 index 0000000000..fb7673b7b5 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ErrorState.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.lib.model + +data class ErrorState(val cause: ErrorStateCause, val isBlocking: Boolean) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ErrorStateCause.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ErrorStateCause.kt new file mode 100644 index 0000000000..0ba63a4b08 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ErrorStateCause.kt @@ -0,0 +1,34 @@ +package net.mullvad.mullvadvpn.lib.model + +import java.net.InetAddress + +sealed class ErrorStateCause { + class AuthFailed(private val reason: String?) : ErrorStateCause() { + fun isCausedByExpiredAccount(): Boolean { + return reason == AUTH_FAILED_REASON_EXPIRED_ACCOUNT + } + + companion object { + private const val AUTH_FAILED_REASON_EXPIRED_ACCOUNT = "[EXPIRED_ACCOUNT]" + } + } + + data object Ipv6Unavailable : ErrorStateCause() + + sealed class FirewallPolicyError : ErrorStateCause() { + data object Generic : FirewallPolicyError() + } + + data object DnsError : ErrorStateCause() + + // Regression + data class InvalidDnsServers(val addresses: List<InetAddress>) : ErrorStateCause() + + data object StartTunnelError : ErrorStateCause() + + data class TunnelParameterError(val error: ParameterGenerationError) : ErrorStateCause() + + data object IsOffline : ErrorStateCause() + + data object VpnPermissionDenied : ErrorStateCause() +} 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/lib/model/GeoIpLocation.kt index 625de76b29..3334b458d7 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/GeoIpLocation.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/GeoIpLocation.kt @@ -1,10 +1,7 @@ -package net.mullvad.mullvadvpn.model +package net.mullvad.mullvadvpn.lib.model -import android.os.Parcelable import java.net.InetAddress -import kotlinx.parcelize.Parcelize -@Parcelize data class GeoIpLocation( val ipv4: InetAddress?, val ipv6: InetAddress?, @@ -13,4 +10,4 @@ data class GeoIpLocation( val latitude: Double, val longitude: Double, val hostname: String?, -) : Parcelable +) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/GetAccountDataError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/GetAccountDataError.kt new file mode 100644 index 0000000000..6f3ba64848 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/GetAccountDataError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface GetAccountDataError { + data class Unknown(val error: Throwable) : GetAccountDataError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/GetAccountHistoryError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/GetAccountHistoryError.kt new file mode 100644 index 0000000000..7803a98ad1 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/GetAccountHistoryError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface GetAccountHistoryError { + data class Unknown(val error: Throwable) : GetAccountHistoryError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/GetDeviceListError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/GetDeviceListError.kt new file mode 100644 index 0000000000..bcad016580 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/GetDeviceListError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface GetDeviceListError { + data class Unknown(val error: Throwable) : GetDeviceListError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/GetDeviceStateError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/GetDeviceStateError.kt new file mode 100644 index 0000000000..675973ee1e --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/GetDeviceStateError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface GetDeviceStateError { + data class Unknown(val error: Throwable) : GetDeviceStateError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/LatLong.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/LatLong.kt index d6749a16a2..19f757ffc3 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/LatLong.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/LatLong.kt @@ -1,9 +1,9 @@ -package net.mullvad.mullvadvpn.model +package net.mullvad.mullvadvpn.lib.model import kotlin.math.cos import kotlin.math.pow import kotlin.math.sqrt -import net.mullvad.mullvadvpn.model.Latitude.Companion.mean +import net.mullvad.mullvadvpn.lib.model.Latitude.Companion.mean data class LatLong(val latitude: Latitude, val longitude: Longitude) { diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Latitude.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Latitude.kt index 21d113f3bc..9b0cc7fbbe 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Latitude.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Latitude.kt @@ -1,4 +1,4 @@ -package net.mullvad.mullvadvpn.model +package net.mullvad.mullvadvpn.lib.model import kotlin.math.absoluteValue diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ListDevicesError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ListDevicesError.kt new file mode 100644 index 0000000000..6530450d42 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ListDevicesError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +interface ListDevicesError { + data class Unknown(val throwable: Throwable) : ListDevicesError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/LoginAccountError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/LoginAccountError.kt new file mode 100644 index 0000000000..1c58f80bee --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/LoginAccountError.kt @@ -0,0 +1,15 @@ +package net.mullvad.mullvadvpn.lib.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +sealed class LoginAccountError : Parcelable { + data object InvalidAccount : LoginAccountError() + + data class MaxDevicesReached(val accountToken: AccountToken) : LoginAccountError() + + data object RpcError : LoginAccountError() + + data class Unknown(val error: Throwable) : LoginAccountError() +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Longitude.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Longitude.kt index 9f73a6ff17..b772801da7 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Longitude.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Longitude.kt @@ -1,4 +1,4 @@ -package net.mullvad.mullvadvpn.model +package net.mullvad.mullvadvpn.lib.model import kotlin.math.absoluteValue diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Mtu.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Mtu.kt new file mode 100644 index 0000000000..68b4b71bd9 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Mtu.kt @@ -0,0 +1,28 @@ +package net.mullvad.mullvadvpn.lib.model + +import android.os.Parcelable +import arrow.core.Either +import arrow.core.raise.either +import arrow.core.raise.ensure +import kotlinx.parcelize.Parcelize + +@JvmInline +@Parcelize +value class Mtu(val value: Int) : Parcelable { + companion object { + fun fromString(value: String): Either<ParseMtuError, Mtu> = either { + val number = value.toIntOrNull() ?: raise(ParseMtuError.NotANumber) + ensure(number in MIN_VALUE..MAX_VALUE) { ParseMtuError.OutOfRange(number) } + Mtu(number) + } + + private const val MIN_VALUE = 1280 + private const val MAX_VALUE = 1420 + } +} + +sealed interface ParseMtuError { + data object NotANumber : ParseMtuError + + data class OutOfRange(val number: Int) : ParseMtuError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Notification.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Notification.kt new file mode 100644 index 0000000000..5dda03aa9d --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Notification.kt @@ -0,0 +1,25 @@ +package net.mullvad.mullvadvpn.lib.model + +import org.joda.time.Duration + +sealed interface Notification { + val actions: List<NotificationAction> + val ongoing: Boolean + val channelId: NotificationChannelId + + data class Tunnel( + override val channelId: NotificationChannelId, + val state: NotificationTunnelState, + override val actions: List<NotificationAction.Tunnel>, + override val ongoing: Boolean, + ) : Notification + + data class AccountExpiry( + override val channelId: NotificationChannelId, + override val actions: List<NotificationAction.AccountExpiry>, + val websiteAuthToken: WebsiteAuthToken?, + val durationUntilExpiry: Duration + ) : Notification { + override val ongoing: Boolean = false + } +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationAction.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationAction.kt new file mode 100644 index 0000000000..ec938a9fbf --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationAction.kt @@ -0,0 +1,20 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface NotificationAction { + + sealed interface AccountExpiry : NotificationAction { + data object Open : AccountExpiry + } + + sealed interface Tunnel : NotificationAction { + data object Connect : Tunnel + + data object Disconnect : Tunnel + + data object Cancel : Tunnel + + data object Dismiss : Tunnel + + data object RequestPermission : Tunnel + } +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationChannel.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationChannel.kt new file mode 100644 index 0000000000..166c20b826 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationChannel.kt @@ -0,0 +1,15 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface NotificationChannel { + val id: NotificationChannelId + + data object TunnelUpdates : NotificationChannel { + private const val CHANNEL_ID = "vpn_tunnel_status" + override val id: NotificationChannelId = NotificationChannelId(CHANNEL_ID) + } + + data object AccountUpdates : NotificationChannel { + private const val CHANNEL_ID = "mullvad_account_time" + override val id: NotificationChannelId = NotificationChannelId(CHANNEL_ID) + } +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationChannelId.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationChannelId.kt new file mode 100644 index 0000000000..c4231deb8c --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationChannelId.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.lib.model + +@JvmInline value class NotificationChannelId(val value: String) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationId.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationId.kt new file mode 100644 index 0000000000..9c20bf9420 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationId.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.lib.model + +@JvmInline value class NotificationId(val value: Int) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationTunnelState.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationTunnelState.kt new file mode 100644 index 0000000000..fffe86c247 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationTunnelState.kt @@ -0,0 +1,25 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface NotificationTunnelState { + data class Disconnected(val hasVpnPermission: Boolean) : NotificationTunnelState + + data object Connecting : NotificationTunnelState + + data object Connected : NotificationTunnelState + + data object Reconnecting : NotificationTunnelState + + data object Disconnecting : NotificationTunnelState + + sealed interface Error : NotificationTunnelState { + data object DeviceOffline : Error + + data object Blocking : Error + + data object VpnPermissionDenied : Error + + data object AlwaysOnVpn : Error + + data object Critical : Error + } +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationUpdate.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationUpdate.kt new file mode 100644 index 0000000000..00d64cbc3e --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationUpdate.kt @@ -0,0 +1,10 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface NotificationUpdate<out D> { + val notificationId: NotificationId + + data class Notify<D>(override val notificationId: NotificationId, val value: D) : + NotificationUpdate<D> + + data class Cancel(override val notificationId: NotificationId) : NotificationUpdate<Nothing> +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ObfuscationEndpoint.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ObfuscationEndpoint.kt new file mode 100644 index 0000000000..020ef8e5c1 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ObfuscationEndpoint.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.lib.model + +data class ObfuscationEndpoint(val endpoint: Endpoint, val obfuscationType: ObfuscationType) 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/lib/model/ObfuscationSettings.kt index 19b5c0e5f2..b8a26973a2 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/ObfuscationSettings.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ObfuscationSettings.kt @@ -1,10 +1,11 @@ -package net.mullvad.mullvadvpn.model +package net.mullvad.mullvadvpn.lib.model -import android.os.Parcelable -import kotlinx.parcelize.Parcelize +import arrow.optics.optics -@Parcelize +@optics data class ObfuscationSettings( val selectedObfuscation: SelectedObfuscation, val udp2tcp: Udp2TcpObfuscationSettings -) : Parcelable +) { + companion object +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ObfuscationType.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ObfuscationType.kt new file mode 100644 index 0000000000..cd71d645af --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ObfuscationType.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +enum class ObfuscationType { + Udp2Tcp +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Ownership.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Ownership.kt new file mode 100644 index 0000000000..5257f944d3 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Ownership.kt @@ -0,0 +1,6 @@ +package net.mullvad.mullvadvpn.lib.model + +enum class Ownership { + MullvadOwned, + Rented +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ParameterGenerationError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ParameterGenerationError.kt new file mode 100644 index 0000000000..476aed1407 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ParameterGenerationError.kt @@ -0,0 +1,8 @@ +package net.mullvad.mullvadvpn.lib.model + +enum class ParameterGenerationError { + NoMatchingRelay, + NoMatchingBridgeRelay, + NoWireguardKey, + CustomTunnelHostResultionError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/PlayPurchase.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/PlayPurchase.kt new file mode 100644 index 0000000000..9384f9f5b8 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/PlayPurchase.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.lib.model + +data class PlayPurchase(val productId: String, val purchaseToken: PlayPurchasePaymentToken) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/PlayPurchaseInitError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/PlayPurchaseInitError.kt new file mode 100644 index 0000000000..6326bab8e8 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/PlayPurchaseInitError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +enum class PlayPurchaseInitError { + OtherError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/PlayPurchasePaymentToken.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/PlayPurchasePaymentToken.kt new file mode 100644 index 0000000000..bfcae64d45 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/PlayPurchasePaymentToken.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.lib.model + +@JvmInline value class PlayPurchasePaymentToken(val value: String) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/PlayPurchaseVerifyError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/PlayPurchaseVerifyError.kt new file mode 100644 index 0000000000..dc06b8ffbf --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/PlayPurchaseVerifyError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +enum class PlayPurchaseVerifyError { + OtherError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Port.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Port.kt new file mode 100644 index 0000000000..bcb5a8dd99 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Port.kt @@ -0,0 +1,6 @@ +package net.mullvad.mullvadvpn.lib.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@JvmInline @Parcelize value class Port(val value: Int) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/PortRange.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/PortRange.kt new file mode 100644 index 0000000000..77767a1011 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/PortRange.kt @@ -0,0 +1,30 @@ +package net.mullvad.mullvadvpn.lib.model + +import android.os.Parcel +import android.os.Parcelable +import kotlinx.parcelize.Parceler +import kotlinx.parcelize.Parcelize +import kotlinx.parcelize.TypeParceler + +@JvmInline +@Parcelize +@TypeParceler<IntRange, IntRangeParceler> +value class PortRange(val value: IntRange) : Parcelable { + operator fun contains(port: Port): Boolean = port.value in value + + fun toFormattedString(): String = + if (value.first == value.last) { + value.first.toString() + } else { + "${value.first}-${value.last}" + } +} + +object IntRangeParceler : Parceler<IntRange> { + override fun create(parcel: Parcel) = IntRange(parcel.readInt(), parcel.readInt()) + + override fun IntRange.write(parcel: Parcel, flags: Int) { + parcel.writeInt(start) + parcel.writeInt(endInclusive) + } +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Provider.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Provider.kt new file mode 100644 index 0000000000..e704e9554d --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Provider.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.lib.model + +data class Provider(val providerId: ProviderId, val ownership: Ownership) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ProviderId.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ProviderId.kt new file mode 100644 index 0000000000..cc23c3e9b6 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ProviderId.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.lib.model + +@JvmInline value class ProviderId(val value: String) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Providers.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Providers.kt new file mode 100644 index 0000000000..73cf9facdb --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Providers.kt @@ -0,0 +1,8 @@ +package net.mullvad.mullvadvpn.lib.model + +import arrow.optics.optics + +@optics +data class Providers(val providers: Set<ProviderId>) { + companion object +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/QuantumResistantState.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/QuantumResistantState.kt new file mode 100644 index 0000000000..c77dab72d3 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/QuantumResistantState.kt @@ -0,0 +1,7 @@ +package net.mullvad.mullvadvpn.lib.model + +enum class QuantumResistantState { + Auto, + On, + Off +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RedeemVoucherError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RedeemVoucherError.kt new file mode 100644 index 0000000000..d14a2f236b --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RedeemVoucherError.kt @@ -0,0 +1,11 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed class RedeemVoucherError { + data object InvalidVoucher : RedeemVoucherError() + + data object VoucherAlreadyUsed : RedeemVoucherError() + + data object RpcError : RedeemVoucherError() + + data class Unknown(val error: Throwable) : RedeemVoucherError() +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RedeemVoucherSuccess.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RedeemVoucherSuccess.kt new file mode 100644 index 0000000000..9c81042b8c --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RedeemVoucherSuccess.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +import org.joda.time.DateTime + +data class RedeemVoucherSuccess(val timeAdded: Long, val newExpiryDate: DateTime) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RelayConstraints.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RelayConstraints.kt new file mode 100644 index 0000000000..f3573933e3 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RelayConstraints.kt @@ -0,0 +1,13 @@ +package net.mullvad.mullvadvpn.lib.model + +import arrow.optics.optics + +@optics +data class RelayConstraints( + val location: Constraint<RelayItemId>, + val providers: Constraint<Providers>, + val ownership: Constraint<Ownership>, + val wireguardConstraints: WireguardConstraints, +) { + companion object +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RelayItem.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RelayItem.kt new file mode 100644 index 0000000000..a31a6f67df --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RelayItem.kt @@ -0,0 +1,88 @@ +package net.mullvad.mullvadvpn.lib.model + +import arrow.optics.optics + +@optics +sealed interface RelayItem { + val id: RelayItemId + val name: String + val active: Boolean + val hasChildren: Boolean + val expanded: Boolean + + @optics + data class CustomList( + override val id: CustomListId, + val customListName: CustomListName, + val locations: List<Location>, + override val expanded: Boolean, + ) : RelayItem { + override val name: String = customListName.value + + override val active + get() = locations.any { location -> location.active } + + override val hasChildren + get() = locations.isNotEmpty() + + companion object + } + + @optics + sealed interface Location : RelayItem { + override val id: GeoLocationId + + @optics + data class Country( + override val id: GeoLocationId.Country, + override val name: String, + override val expanded: Boolean, + val cities: List<City> + ) : Location { + val relays = cities.flatMap { city -> city.relays } + + override val active + get() = cities.any { city -> city.active } + + override val hasChildren + get() = cities.isNotEmpty() + + companion object + } + + @optics + data class City( + override val id: GeoLocationId.City, + override val name: String, + override val expanded: Boolean, + val relays: List<Relay> + ) : Location { + + override val active + get() = relays.any { relay -> relay.active } + + override val hasChildren + get() = relays.isNotEmpty() + + companion object + } + + @optics + data class Relay( + override val id: GeoLocationId.Hostname, + val provider: Provider, + override val active: Boolean, + ) : Location { + override val name: String = id.hostname + + override val hasChildren = false + override val expanded = false + + companion object + } + + companion object + } + + companion object +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RelayItemId.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RelayItemId.kt new file mode 100644 index 0000000000..da59481269 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RelayItemId.kt @@ -0,0 +1,48 @@ +package net.mullvad.mullvadvpn.lib.model + +import android.os.Parcelable +import arrow.optics.optics +import kotlinx.parcelize.Parcelize + +@optics +sealed interface RelayItemId : Parcelable { + companion object +} + +@optics +@Parcelize +@JvmInline +value class CustomListId(val value: String) : RelayItemId, Parcelable { + companion object +} + +@optics +sealed interface GeoLocationId : RelayItemId { + @optics + @Parcelize + data class Country(val countryCode: String) : GeoLocationId { + companion object + } + + @optics + @Parcelize + data class City(val countryCode: Country, val cityCode: String) : GeoLocationId { + companion object + } + + @optics + @Parcelize + data class Hostname(val city: City, val hostname: String) : GeoLocationId { + companion object + } + + val country: Country + get() = + when (this) { + is Country -> this + is City -> this.countryCode + is Hostname -> this.city.countryCode + } + + companion object +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RelayList.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RelayList.kt new file mode 100644 index 0000000000..39e43a713e --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RelayList.kt @@ -0,0 +1,6 @@ +package net.mullvad.mullvadvpn.lib.model + +data class RelayList( + val countries: List<RelayItem.Location.Country>, + val wireguardEndpointData: WireguardEndpointData +) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayOverride.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RelayOverride.kt index f738218ee7..3bd0a2f0a1 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayOverride.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RelayOverride.kt @@ -1,12 +1,13 @@ -package net.mullvad.mullvadvpn.model +package net.mullvad.mullvadvpn.lib.model -import android.os.Parcelable +import arrow.optics.optics import java.net.InetAddress -import kotlinx.parcelize.Parcelize -@Parcelize +@optics data class RelayOverride( val hostname: String, val ipv4AddressIn: InetAddress?, val ipv6AddressIn: InetAddress? -) : Parcelable +) { + companion object +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RelaySettings.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RelaySettings.kt new file mode 100644 index 0000000000..ea40c980d0 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RelaySettings.kt @@ -0,0 +1,8 @@ +package net.mullvad.mullvadvpn.lib.model + +import arrow.optics.optics + +@optics +data class RelaySettings(val relayConstraints: RelayConstraints) { + companion object +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RemoveDeviceError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RemoveDeviceError.kt new file mode 100644 index 0000000000..d00272ec63 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RemoveDeviceError.kt @@ -0,0 +1,9 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface RemoveDeviceError { + data object NotFound : RemoveDeviceError + + data object RpcError : RemoveDeviceError + + data class Unknown(val throwable: Throwable) : RemoveDeviceError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RemoveSplitTunnelingAppError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RemoveSplitTunnelingAppError.kt new file mode 100644 index 0000000000..aa4dcfd8be --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/RemoveSplitTunnelingAppError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +interface RemoveSplitTunnelingAppError { + data class Unknown(val throwable: Throwable) : RemoveSplitTunnelingAppError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SelectedObfuscation.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SelectedObfuscation.kt new file mode 100644 index 0000000000..1651d61db7 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SelectedObfuscation.kt @@ -0,0 +1,7 @@ +package net.mullvad.mullvadvpn.lib.model + +enum class SelectedObfuscation { + Auto, + Off, + Udp2Tcp +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetAllowLanError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetAllowLanError.kt new file mode 100644 index 0000000000..e30eba0d9e --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetAllowLanError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface SetAllowLanError { + data class Unknown(val throwable: Throwable) : SetAllowLanError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetAutoConnectError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetAutoConnectError.kt new file mode 100644 index 0000000000..b2b3b74edf --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetAutoConnectError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface SetAutoConnectError { + data class Unknown(val throwable: Throwable) : SetAutoConnectError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetDnsOptionsError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetDnsOptionsError.kt new file mode 100644 index 0000000000..8d72d8cebe --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetDnsOptionsError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface SetDnsOptionsError { + data class Unknown(val throwable: Throwable) : SetDnsOptionsError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetObfuscationOptionsError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetObfuscationOptionsError.kt new file mode 100644 index 0000000000..d9c5acf650 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetObfuscationOptionsError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface SetObfuscationOptionsError { + data class Unknown(val throwable: Throwable) : SetObfuscationOptionsError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetRelayLocationError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetRelayLocationError.kt new file mode 100644 index 0000000000..4606c46125 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetRelayLocationError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface SetRelayLocationError { + data class Unknown(val throwable: Throwable) : SetRelayLocationError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetWireguardConstraintsError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetWireguardConstraintsError.kt new file mode 100644 index 0000000000..ccf8b4c8dc --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetWireguardConstraintsError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface SetWireguardConstraintsError { + data class Unknown(val throwable: Throwable) : SetWireguardConstraintsError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetWireguardMtuError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetWireguardMtuError.kt new file mode 100644 index 0000000000..ca4f135fb1 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetWireguardMtuError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface SetWireguardMtuError { + data class Unknown(val throwable: Throwable) : SetWireguardMtuError +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetWireguardQuantumResistantError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetWireguardQuantumResistantError.kt new file mode 100644 index 0000000000..8121120c67 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SetWireguardQuantumResistantError.kt @@ -0,0 +1,5 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface SetWireguardQuantumResistantError { + data class Unknown(val throwable: Throwable) : SetWireguardQuantumResistantError +} 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/lib/model/Settings.kt index 847b80cd70..c5191531be 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Settings.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Settings.kt @@ -1,16 +1,18 @@ -package net.mullvad.mullvadvpn.model +package net.mullvad.mullvadvpn.lib.model -import android.os.Parcelable -import kotlinx.parcelize.Parcelize +import arrow.optics.optics -@Parcelize +@optics data class Settings( val relaySettings: RelaySettings, val obfuscationSettings: ObfuscationSettings, - val customLists: CustomListsSettings, + val customLists: List<CustomList>, val allowLan: Boolean, val autoConnect: Boolean, val tunnelOptions: TunnelOptions, - val relayOverrides: ArrayList<RelayOverride>, + val relayOverrides: List<RelayOverride>, val showBetaReleases: Boolean, -) : Parcelable + val splitTunnelSettings: SplitTunnelSettings +) { + companion object +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/SettingsPatchError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SettingsPatchError.kt index 5e3cb29911..1db1dc6f68 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/SettingsPatchError.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SettingsPatchError.kt @@ -1,10 +1,6 @@ -package net.mullvad.mullvadvpn.model +package net.mullvad.mullvadvpn.lib.model -import android.os.Parcelable -import kotlinx.parcelize.Parcelize - -@Parcelize -sealed class SettingsPatchError : Parcelable { +sealed class SettingsPatchError { // E.g hostname is number instead of String data class InvalidOrMissingValue(val value: String) : SettingsPatchError() diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SplitTunnelSettings.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SplitTunnelSettings.kt new file mode 100644 index 0000000000..a937d53bae --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/SplitTunnelSettings.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.lib.model + +data class SplitTunnelSettings(val enabled: Boolean, val excludedApps: Set<AppId>) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TransportProtocol.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TransportProtocol.kt new file mode 100644 index 0000000000..b25e3061be --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TransportProtocol.kt @@ -0,0 +1,10 @@ +package net.mullvad.mullvadvpn.lib.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +enum class TransportProtocol : Parcelable { + Tcp, + Udp +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TunnelEndpoint.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TunnelEndpoint.kt new file mode 100644 index 0000000000..d715f16766 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TunnelEndpoint.kt @@ -0,0 +1,7 @@ +package net.mullvad.mullvadvpn.lib.model + +data class TunnelEndpoint( + val endpoint: Endpoint, + val quantumResistant: Boolean, + val obfuscation: ObfuscationEndpoint? +) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TunnelOptions.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TunnelOptions.kt new file mode 100644 index 0000000000..de1d760d30 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TunnelOptions.kt @@ -0,0 +1,8 @@ +package net.mullvad.mullvadvpn.lib.model + +import arrow.optics.optics + +@optics +data class TunnelOptions(val wireguard: WireguardTunnelOptions, val dnsOptions: DnsOptions) { + companion object +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TunnelState.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TunnelState.kt new file mode 100644 index 0000000000..3fae41802a --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TunnelState.kt @@ -0,0 +1,35 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed class TunnelState { + data class Disconnected(val location: GeoIpLocation? = null) : TunnelState() + + data class Connecting(val endpoint: TunnelEndpoint?, val location: GeoIpLocation?) : + TunnelState() + + data class Connected(val endpoint: TunnelEndpoint, val location: GeoIpLocation?) : + TunnelState() + + data class Disconnecting(val actionAfterDisconnect: ActionAfterDisconnect) : TunnelState() + + data class Error(val errorState: ErrorState) : TunnelState() + + 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, + is Connecting, + is Disconnecting, -> true + is Disconnected -> false + is Error -> this.errorState.isBlocking + } + } +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Udp2TcpObfuscationSettings.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Udp2TcpObfuscationSettings.kt new file mode 100644 index 0000000000..7447f7a4cf --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/Udp2TcpObfuscationSettings.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.lib.model + +data class Udp2TcpObfuscationSettings(val port: Constraint<Port>) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/UpdateCustomListError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/UpdateCustomListError.kt new file mode 100644 index 0000000000..ef49018dca --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/UpdateCustomListError.kt @@ -0,0 +1,35 @@ +package net.mullvad.mullvadvpn.lib.model + +sealed interface UpdateCustomListNameError { + companion object { + fun from(error: UpdateCustomListError): UpdateCustomListNameError = + when (error) { + is NameAlreadyExists -> error + is UnknownCustomListError -> error + } + } +} + +sealed interface UpdateCustomListLocationsError { + companion object { + fun from(error: UpdateCustomListError): UpdateCustomListLocationsError = + when (error) { + is NameAlreadyExists -> error("Not supported error") + is UnknownCustomListError -> error + } + } +} + +sealed interface UpdateCustomListError + +data class NameAlreadyExists(val name: String) : UpdateCustomListError, UpdateCustomListNameError + +data class UnknownCustomListError(val throwable: Throwable) : + UpdateCustomListError, + UpdateCustomListNameError, + UpdateCustomListLocationsError, + CreateCustomListError, + DeleteCustomListError + +data class GetCustomListError(val id: CustomListId) : + UpdateCustomListLocationsError, UpdateCustomListNameError diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/WebsiteAuthToken.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/WebsiteAuthToken.kt new file mode 100644 index 0000000000..8ad9b85787 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/WebsiteAuthToken.kt @@ -0,0 +1,8 @@ +package net.mullvad.mullvadvpn.lib.model + +@JvmInline +value class WebsiteAuthToken private constructor(val value: String) { + companion object { + fun fromString(value: String) = WebsiteAuthToken(value) + } +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/WireguardConstraints.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/WireguardConstraints.kt new file mode 100644 index 0000000000..8affb81077 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/WireguardConstraints.kt @@ -0,0 +1,8 @@ +package net.mullvad.mullvadvpn.lib.model + +import arrow.optics.optics + +@optics +data class WireguardConstraints(val port: Constraint<Port>) { + companion object +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/WireguardEndpointData.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/WireguardEndpointData.kt new file mode 100644 index 0000000000..8aff7d2895 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/WireguardEndpointData.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.lib.model + +data class WireguardEndpointData(val portRanges: List<PortRange>) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/WireguardTunnelOptions.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/WireguardTunnelOptions.kt new file mode 100644 index 0000000000..573f08213e --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/WireguardTunnelOptions.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.lib.model + +data class WireguardTunnelOptions(val mtu: Mtu?, val quantumResistant: QuantumResistantState) diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/extensions/String.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/extensions/String.kt new file mode 100644 index 0000000000..0df57eb057 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/extensions/String.kt @@ -0,0 +1,6 @@ +package net.mullvad.mullvadvpn.lib.model.extensions + +fun String.startCase() = + split(" ").joinToString(" ") { word -> + word.replaceFirstChar { firstChar -> firstChar.uppercase() } + } 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 deleted file mode 100644 index f5137ebbb7..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountAndDevice.kt +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index 4bb4c61384..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountCreationResult.kt +++ /dev/null @@ -1,10 +0,0 @@ -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 deleted file mode 100644 index 6dda6b8352..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountData.kt +++ /dev/null @@ -1,3 +0,0 @@ -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 deleted file mode 100644 index f856ef8c89..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountExpiry.kt +++ /dev/null @@ -1,15 +0,0 @@ -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 data 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 deleted file mode 100644 index f003ee316b..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountHistory.kt +++ /dev/null @@ -1,12 +0,0 @@ -package net.mullvad.mullvadvpn.model - -import android.os.Parcelable -import kotlinx.parcelize.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/AccountToken.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountToken.kt deleted file mode 100644 index 2aeca352d0..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountToken.kt +++ /dev/null @@ -1,3 +0,0 @@ -package net.mullvad.mullvadvpn.model - -@JvmInline value class AccountToken(val value: String) 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 deleted file mode 100644 index bbe99ce656..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/AppVersionInfo.kt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index d9ca22b164..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Constraint.kt +++ /dev/null @@ -1,10 +0,0 @@ -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/CreateCustomListResult.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/CreateCustomListResult.kt deleted file mode 100644 index 73eaa209c8..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/CreateCustomListResult.kt +++ /dev/null @@ -1,10 +0,0 @@ -package net.mullvad.mullvadvpn.model - -import android.os.Parcelable -import kotlinx.parcelize.Parcelize - -sealed class CreateCustomListResult : Parcelable { - @Parcelize data class Ok(val id: String) : CreateCustomListResult() - - @Parcelize data class Error(val error: CustomListsError) : CreateCustomListResult() -} 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 deleted file mode 100644 index bbf029dd4d..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomDnsOptions.kt +++ /dev/null @@ -1,7 +0,0 @@ -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/CustomList.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomList.kt deleted file mode 100644 index cdfa1b9687..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomList.kt +++ /dev/null @@ -1,11 +0,0 @@ -package net.mullvad.mullvadvpn.model - -import android.os.Parcelable -import kotlinx.parcelize.Parcelize - -@Parcelize -data class CustomList( - val id: String, - val name: String, - val locations: ArrayList<GeographicLocationConstraint> -) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomListsError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomListsError.kt deleted file mode 100644 index 83806af4f7..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomListsError.kt +++ /dev/null @@ -1,6 +0,0 @@ -package net.mullvad.mullvadvpn.model - -enum class CustomListsError { - CustomListExists, - OtherError -} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomListsSettings.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomListsSettings.kt deleted file mode 100644 index 8a8c03ef05..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomListsSettings.kt +++ /dev/null @@ -1,6 +0,0 @@ -package net.mullvad.mullvadvpn.model - -import android.os.Parcelable -import kotlinx.parcelize.Parcelize - -@Parcelize data class CustomListsSettings(val customLists: ArrayList<CustomList>) : 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 deleted file mode 100644 index 72276c65e4..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomTunnelEndpoint.kt +++ /dev/null @@ -1,3 +0,0 @@ -package net.mullvad.mullvadvpn.model - -class CustomTunnelEndpoint 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 deleted file mode 100644 index 0f0a55d05d..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Device.kt +++ /dev/null @@ -1,40 +0,0 @@ -package net.mullvad.mullvadvpn.model - -import android.os.Parcelable -import kotlinx.parcelize.Parcelize - -@Parcelize -data class Device( - val id: String, - private val name: String, - val pubkey: ByteArray, - 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 - return pubkey.contentEquals(other.pubkey) - } - - // Generated by Android Studio - override fun hashCode(): Int { - var result = id.hashCode() - result = 31 * result + name.hashCode() - result = 31 * result + pubkey.contentHashCode() - return result - } - - fun displayName(): String = name.capitalizeFirstCharOfEachWord() -} - -private fun String.capitalizeFirstCharOfEachWord(): String { - return split(" ") - .joinToString(" ") { word -> word.replaceFirstChar { firstChar -> firstChar.uppercase() } } - .trimEnd() -} 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 deleted file mode 100644 index 741108612d..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceEvent.kt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index b4c1d21761..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceEventCause.kt +++ /dev/null @@ -1,13 +0,0 @@ -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 deleted file mode 100644 index afe5982ed5..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceList.kt +++ /dev/null @@ -1,9 +0,0 @@ -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 deleted file mode 100644 index 7a2883617b..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceListEvent.kt +++ /dev/null @@ -1,15 +0,0 @@ -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 deleted file mode 100644 index e43eae3e6b..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DevicePort.kt +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index fb34c9e645..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceState.kt +++ /dev/null @@ -1,28 +0,0 @@ -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?.displayName() - } - - fun token(): String? { - return (this as? LoggedIn)?.accountAndDevice?.account_token - } -} 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 deleted file mode 100644 index 386257a72a..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/GeographicLocationConstraint.kt +++ /dev/null @@ -1,28 +0,0 @@ -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, 0.0, 0.0, null) - } - - @Parcelize - data class City(val countryCode: String, val cityCode: String) : - GeographicLocationConstraint() { - override val location: GeoIpLocation - get() = GeoIpLocation(null, null, countryCode, cityCode, 0.0, 0.0, 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, 0.0, 0.0, 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 deleted file mode 100644 index 2e94266e2a..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/GetAccountDataResult.kt +++ /dev/null @@ -1,11 +0,0 @@ -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 deleted file mode 100644 index 0c9d331e3b..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/LocationConstraint.kt +++ /dev/null @@ -1,11 +0,0 @@ -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 deleted file mode 100644 index 29fb68203d..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/LoginResult.kt +++ /dev/null @@ -1,13 +0,0 @@ -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/Ownership.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Ownership.kt deleted file mode 100644 index 43037be676..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Ownership.kt +++ /dev/null @@ -1,10 +0,0 @@ -package net.mullvad.mullvadvpn.model - -import android.os.Parcelable -import kotlinx.parcelize.Parcelize - -@Parcelize -enum class Ownership : Parcelable { - MullvadOwned, - Rented -} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchase.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchase.kt deleted file mode 100644 index 8ae46a07a9..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchase.kt +++ /dev/null @@ -1,6 +0,0 @@ -package net.mullvad.mullvadvpn.model - -import android.os.Parcelable -import kotlinx.parcelize.Parcelize - -@Parcelize data class PlayPurchase(val productId: String, val purchaseToken: String) : Parcelable diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchaseInitError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchaseInitError.kt deleted file mode 100644 index 39aebabbe2..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchaseInitError.kt +++ /dev/null @@ -1,10 +0,0 @@ -package net.mullvad.mullvadvpn.model - -import android.os.Parcelable -import kotlinx.parcelize.Parcelize - -@Parcelize -enum class PlayPurchaseInitError : Parcelable { - // TODO: Add more errors here. - OtherError -} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchaseInitResult.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchaseInitResult.kt deleted file mode 100644 index 41407474af..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchaseInitResult.kt +++ /dev/null @@ -1,10 +0,0 @@ -package net.mullvad.mullvadvpn.model - -import android.os.Parcelable -import kotlinx.parcelize.Parcelize - -sealed class PlayPurchaseInitResult : Parcelable { - @Parcelize data class Ok(val obfuscatedId: String) : PlayPurchaseInitResult() - - @Parcelize data class Error(val error: PlayPurchaseInitError) : PlayPurchaseInitResult() -} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchaseVerifyError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchaseVerifyError.kt deleted file mode 100644 index b0434c22f9..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchaseVerifyError.kt +++ /dev/null @@ -1,10 +0,0 @@ -package net.mullvad.mullvadvpn.model - -import android.os.Parcelable -import kotlinx.parcelize.Parcelize - -@Parcelize -enum class PlayPurchaseVerifyError : Parcelable { - // TODO: Add more errors here. - OtherError -} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchaseVerifyResult.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchaseVerifyResult.kt deleted file mode 100644 index 7c5ee4d953..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchaseVerifyResult.kt +++ /dev/null @@ -1,10 +0,0 @@ -package net.mullvad.mullvadvpn.model - -import android.os.Parcelable -import kotlinx.parcelize.Parcelize - -sealed class PlayPurchaseVerifyResult : Parcelable { - @Parcelize data object Ok : PlayPurchaseVerifyResult() - - @Parcelize data class Error(val error: PlayPurchaseVerifyError) : PlayPurchaseVerifyResult() -} 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 deleted file mode 100644 index 52f495a7a7..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Port.kt +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index 376f5ef7a4..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PortRange.kt +++ /dev/null @@ -1,6 +0,0 @@ -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/Providers.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Providers.kt deleted file mode 100644 index d3c6aacba9..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Providers.kt +++ /dev/null @@ -1,9 +0,0 @@ -package net.mullvad.mullvadvpn.model - -import android.os.Parcelable -import kotlinx.parcelize.Parcelize - -@Suppress("ensure value classes property is named value") -@JvmInline -@Parcelize -value class Providers(val providers: HashSet<String>) : 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 deleted file mode 100644 index 169b6c3856..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PublicKey.kt +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index a19267388a..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/QuantumResistantState.kt +++ /dev/null @@ -1,11 +0,0 @@ -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 deleted file mode 100644 index 461648209c..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Relay.kt +++ /dev/null @@ -1,16 +0,0 @@ -package net.mullvad.mullvadvpn.model - -import android.os.Parcelable -import kotlinx.parcelize.Parcelize - -@Parcelize -data class Relay( - val hostname: String, - val active: Boolean, - val owned: Boolean, - val provider: String, - 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 deleted file mode 100644 index 031b09bace..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayConstraints.kt +++ /dev/null @@ -1,12 +0,0 @@ -package net.mullvad.mullvadvpn.model - -import android.os.Parcelable -import kotlinx.parcelize.Parcelize - -@Parcelize -data class RelayConstraints( - val location: Constraint<LocationConstraint>, - val providers: Constraint<Providers>, - val ownership: Constraint<Ownership>, - val wireguardConstraints: WireguardConstraints, -) : Parcelable 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 deleted file mode 100644 index 86b3f0fa35..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayEndpointData.kt +++ /dev/null @@ -1,14 +0,0 @@ -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 deleted file mode 100644 index 60d8b6dd35..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayList.kt +++ /dev/null @@ -1,10 +0,0 @@ -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 deleted file mode 100644 index 2376609ced..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayListCity.kt +++ /dev/null @@ -1,8 +0,0 @@ -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 deleted file mode 100644 index d6d4b8ec6a..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayListCountry.kt +++ /dev/null @@ -1,11 +0,0 @@ -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 deleted file mode 100644 index 642046f1b8..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelaySettings.kt +++ /dev/null @@ -1,12 +0,0 @@ -package net.mullvad.mullvadvpn.model - -import android.os.Parcelable -import kotlinx.parcelize.Parcelize - -sealed class RelaySettings : Parcelable { - @Parcelize data object CustomTunnelEndpoint : RelaySettings() - - @Parcelize data class Normal(val relayConstraints: RelayConstraints) : RelaySettings() - - fun relayConstraints(): RelayConstraints? = (this as? Normal)?.relayConstraints -} 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 deleted file mode 100644 index cc6e7db2bb..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RemoveDeviceEvent.kt +++ /dev/null @@ -1,8 +0,0 @@ -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 deleted file mode 100644 index 67bf165a37..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RemoveDeviceResult.kt +++ /dev/null @@ -1,12 +0,0 @@ -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 deleted file mode 100644 index 8124bcc6a6..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/SelectedObfuscation.kt +++ /dev/null @@ -1,11 +0,0 @@ -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 deleted file mode 100644 index e597797e5a..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/ServiceResult.kt +++ /dev/null @@ -1,23 +0,0 @@ -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/TunnelOptions.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelOptions.kt deleted file mode 100644 index 108fd32e04..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelOptions.kt +++ /dev/null @@ -1,8 +0,0 @@ -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 deleted file mode 100644 index 4ab925d014..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelState.kt +++ /dev/null @@ -1,46 +0,0 @@ -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 - -sealed class TunnelState : Parcelable { - @Parcelize - data class Disconnected(val location: GeoIpLocation? = null) : 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 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, - is Connecting, - is Disconnecting, -> true - is Disconnected -> false - is Error -> this.errorState.isBlocking - } - } -} 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 deleted file mode 100644 index f01bb35c6f..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Udp2TcpObfuscationSettings.kt +++ /dev/null @@ -1,6 +0,0 @@ -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/UpdateCustomListResult.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/UpdateCustomListResult.kt deleted file mode 100644 index ebfe9e8cd6..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/UpdateCustomListResult.kt +++ /dev/null @@ -1,10 +0,0 @@ -package net.mullvad.mullvadvpn.model - -import android.os.Parcelable -import kotlinx.parcelize.Parcelize - -sealed class UpdateCustomListResult : Parcelable { - @Parcelize data object Ok : UpdateCustomListResult() - - @Parcelize data class Error(val error: CustomListsError) : UpdateCustomListResult() -} 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 deleted file mode 100644 index efe05e2f5c..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmission.kt +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index 1cf778400a..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionError.kt +++ /dev/null @@ -1,12 +0,0 @@ -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 deleted file mode 100644 index 4163b782d4..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionResult.kt +++ /dev/null @@ -1,10 +0,0 @@ -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 deleted file mode 100644 index 1725b01f0f..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/WireguardConstraints.kt +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index 0a21221bb0..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/WireguardEndpointData.kt +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index 4a1930dd43..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/WireguardRelayEndpointData.kt +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index f4a869a4ea..0000000000 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/WireguardTunnelOptions.kt +++ /dev/null @@ -1,8 +0,0 @@ -package net.mullvad.mullvadvpn.model - -import android.os.Parcelable -import kotlinx.parcelize.Parcelize - -@Parcelize -data class WireguardTunnelOptions(val mtu: Int?, val quantumResistant: QuantumResistantState) : - Parcelable diff --git a/android/lib/model/src/test/kotlin/net/mullvad/mullvadvpn/model/LatLongTest.kt b/android/lib/model/src/test/kotlin/net/mullvad/mullvadvpn/lib/model/LatLongTest.kt index b8608ca55c..8abef5d9b3 100644 --- a/android/lib/model/src/test/kotlin/net/mullvad/mullvadvpn/model/LatLongTest.kt +++ b/android/lib/model/src/test/kotlin/net/mullvad/mullvadvpn/lib/model/LatLongTest.kt @@ -1,4 +1,4 @@ -package net.mullvad.mullvadvpn.model +package net.mullvad.mullvadvpn.lib.model import kotlin.math.sqrt import org.junit.jupiter.api.Assertions.assertEquals diff --git a/android/lib/model/src/test/kotlin/net/mullvad/mullvadvpn/model/LatitudeTest.kt b/android/lib/model/src/test/kotlin/net/mullvad/mullvadvpn/lib/model/LatitudeTest.kt index c883f20bfc..214afef127 100644 --- a/android/lib/model/src/test/kotlin/net/mullvad/mullvadvpn/model/LatitudeTest.kt +++ b/android/lib/model/src/test/kotlin/net/mullvad/mullvadvpn/lib/model/LatitudeTest.kt @@ -1,4 +1,4 @@ -package net.mullvad.mullvadvpn.model +package net.mullvad.mullvadvpn.lib.model import kotlin.math.absoluteValue import kotlin.test.assertEquals diff --git a/android/lib/model/src/test/kotlin/net/mullvad/mullvadvpn/model/LongitudeTest.kt b/android/lib/model/src/test/kotlin/net/mullvad/mullvadvpn/lib/model/LongitudeTest.kt index 69d3445417..88017cdcea 100644 --- a/android/lib/model/src/test/kotlin/net/mullvad/mullvadvpn/model/LongitudeTest.kt +++ b/android/lib/model/src/test/kotlin/net/mullvad/mullvadvpn/lib/model/LongitudeTest.kt @@ -1,4 +1,4 @@ -package net.mullvad.mullvadvpn.model +package net.mullvad.mullvadvpn.lib.model import kotlin.math.absoluteValue import kotlin.test.assertEquals |
