summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-04-23 12:30:57 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-04-23 14:30:48 +0000
commit25b42f53fef77502e1beb9bebfa574873f5f77a1 (patch)
tree2f13856148c1856d188f26f4775b983432331ccd
parentc9b2417d606315f3a73f25456166c38e8070251d (diff)
downloadmullvadvpn-25b42f53fef77502e1beb9bebfa574873f5f77a1.tar.xz
mullvadvpn-25b42f53fef77502e1beb9bebfa574873f5f77a1.zip
Create `VoucherSubmissionError` enumeration
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionError.kt12
-rw-r--r--mullvad-jni/src/lib.rs25
2 files changed, 37 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionError.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionError.kt
new file mode 100644
index 0000000000..1cf778400a
--- /dev/null
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionError.kt
@@ -0,0 +1,12 @@
+package net.mullvad.mullvadvpn.model
+
+import android.os.Parcelable
+import kotlinx.parcelize.Parcelize
+
+@Parcelize
+enum class VoucherSubmissionError : Parcelable {
+ InvalidVoucher,
+ VoucherAlreadyUsed,
+ RpcError,
+ OtherError,
+}
diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs
index 35fe78dd01..bd23edb769 100644
--- a/mullvad-jni/src/lib.rs
+++ b/mullvad-jni/src/lib.rs
@@ -100,6 +100,15 @@ pub enum VoucherSubmissionResult {
OtherError,
}
+#[derive(IntoJava)]
+#[jnix(package = "net.mullvad.mullvadvpn.model")]
+pub enum VoucherSubmissionError {
+ InvalidVoucher,
+ VoucherAlreadyUsed,
+ RpcError,
+ OtherError,
+}
+
impl From<Result<VoucherSubmission, daemon_interface::Error>> for VoucherSubmissionResult {
fn from(result: Result<VoucherSubmission, daemon_interface::Error>) -> Self {
match result {
@@ -117,6 +126,22 @@ impl From<Result<VoucherSubmission, daemon_interface::Error>> for VoucherSubmiss
}
}
+impl From<daemon_interface::Error> for VoucherSubmissionError {
+ fn from(error: daemon_interface::Error) -> Self {
+ match error {
+ daemon_interface::Error::RpcError(RestError::ApiError(_, code)) => {
+ match code.as_str() {
+ mullvad_rpc::INVALID_VOUCHER => VoucherSubmissionError::InvalidVoucher,
+ mullvad_rpc::VOUCHER_USED => VoucherSubmissionError::VoucherAlreadyUsed,
+ _ => VoucherSubmissionError::RpcError,
+ }
+ }
+ daemon_interface::Error::RpcError(_) => VoucherSubmissionError::RpcError,
+ _ => VoucherSubmissionError::OtherError,
+ }
+ }
+}
+
#[no_mangle]
#[allow(non_snake_case)]
pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_initialize(