summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchase.kt6
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchaseInitError.kt10
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchaseInitResult.kt12
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchaseVerifyError.kt10
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchaseVerifyResult.kt11
-rw-r--r--mullvad-daemon/src/lib.rs12
-rw-r--r--mullvad-jni/src/classes.rs5
7 files changed, 58 insertions, 8 deletions
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
new file mode 100644
index 0000000000..8ae46a07a9
--- /dev/null
+++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchase.kt
@@ -0,0 +1,6 @@
+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
new file mode 100644
index 0000000000..39aebabbe2
--- /dev/null
+++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchaseInitError.kt
@@ -0,0 +1,10 @@
+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
new file mode 100644
index 0000000000..d380a5932d
--- /dev/null
+++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchaseInitResult.kt
@@ -0,0 +1,12 @@
+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
new file mode 100644
index 0000000000..b0434c22f9
--- /dev/null
+++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchaseVerifyError.kt
@@ -0,0 +1,10 @@
+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
new file mode 100644
index 0000000000..7fd3997112
--- /dev/null
+++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/PlayPurchaseVerifyResult.kt
@@ -0,0 +1,11 @@
+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/mullvad-daemon/src/lib.rs b/mullvad-daemon/src/lib.rs
index ceb50ca2b2..8f661d981a 100644
--- a/mullvad-daemon/src/lib.rs
+++ b/mullvad-daemon/src/lib.rs
@@ -179,13 +179,11 @@ pub enum Error {
#[error(display = "Failed to set exclusion group")]
GroupIdError(#[error(source)] io::Error),
- // TODO
- //#[cfg(target_os = "android")]
+ #[cfg(target_os = "android")]
#[error(display = "Failed to initialize play purchase")]
InitPlayPurchase(#[error(source)] device::Error),
- // TODO
- //#[cfg(target_os = "android")]
+ #[cfg(target_os = "android")]
#[error(display = "Failed to verify play purchase")]
VerifyPlayPurchase(#[error(source)] device::Error),
}
@@ -338,12 +336,10 @@ pub enum DaemonCommand {
#[cfg(target_os = "android")]
BypassSocket(RawFd, oneshot::Sender<()>),
/// Initialize a google play purchase through the API.
- ///TODO
- //#[cfg(target_os = "android")]
+ #[cfg(target_os = "android")]
InitPlayPurchase(ResponseTx<PlayPurchasePaymentToken, Error>),
/// Verify that a google play payment was successful through the API.
- ///TODO
- //#[cfg(target_os = "android")]
+ #[cfg(target_os = "android")]
VerifyPlayPurchase(ResponseTx<(), Error>, PlayPurchase),
}
diff --git a/mullvad-jni/src/classes.rs b/mullvad-jni/src/classes.rs
index 88b5f6d938..56de8919db 100644
--- a/mullvad-jni/src/classes.rs
+++ b/mullvad-jni/src/classes.rs
@@ -33,6 +33,11 @@ pub const CLASSES: &[&str] = &[
"net/mullvad/mullvadvpn/model/LocationConstraint$Location",
"net/mullvad/mullvadvpn/model/LocationConstraint$CustomList",
"net/mullvad/mullvadvpn/model/ObfuscationSettings",
+ "net/mullvad/mullvadvpn/model/PlayPurchase",
+ "net/mullvad/mullvadvpn/model/PlayPurchaseInitError",
+ "net/mullvad/mullvadvpn/model/PlayPurchaseInitResult",
+ "net/mullvad/mullvadvpn/model/PlayPurchaseVerifyError",
+ "net/mullvad/mullvadvpn/model/PlayPurchaseVerifyResult",
"net/mullvad/mullvadvpn/model/PublicKey",
"net/mullvad/mullvadvpn/model/QuantumResistantState",
"net/mullvad/mullvadvpn/model/Port",