diff options
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionResult.kt | 9 | ||||
| -rw-r--r-- | mullvad-jni/src/lib.rs | 29 |
2 files changed, 37 insertions, 1 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionResult.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionResult.kt new file mode 100644 index 0000000000..33c57a595a --- /dev/null +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionResult.kt @@ -0,0 +1,9 @@ +package net.mullvad.mullvadvpn.model + +sealed class VoucherSubmissionResult { + class Ok(val submission: VoucherSubmission) : VoucherSubmissionResult() + class InvalidVoucher : VoucherSubmissionResult() + class VoucherAlreadyUsed : VoucherSubmissionResult() + class RpcError : VoucherSubmissionResult() + class OtherError : VoucherSubmissionResult() +} diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs index bedd1fa118..37cf2a16cf 100644 --- a/mullvad-jni/src/lib.rs +++ b/mullvad-jni/src/lib.rs @@ -18,7 +18,7 @@ use jnix::{ }; use mullvad_daemon::{exception_logging, logging, version, Daemon, DaemonCommandChannel}; use mullvad_rpc::{rest::Error as RestError, StatusCode}; -use mullvad_types::account::AccountData; +use mullvad_types::account::{AccountData, VoucherSubmission}; use std::{ path::{Path, PathBuf}, ptr, @@ -75,6 +75,33 @@ impl From<Result<AccountData, daemon_interface::Error>> for GetAccountDataResult } } +#[derive(IntoJava)] +#[jnix(package = "net.mullvad.mullvadvpn.model")] +pub enum VoucherSubmissionResult { + Ok(VoucherSubmission), + InvalidVoucher, + VoucherAlreadyUsed, + RpcError, + OtherError, +} + +impl From<Result<VoucherSubmission, daemon_interface::Error>> for VoucherSubmissionResult { + fn from(result: Result<VoucherSubmission, daemon_interface::Error>) -> Self { + match result { + Ok(submission) => VoucherSubmissionResult::Ok(submission), + Err(daemon_interface::Error::RpcError(RestError::ApiError(_, code))) => { + match code.as_str() { + "INVALID_VOUCHER" => VoucherSubmissionResult::InvalidVoucher, + "VOUCHER_USED" => VoucherSubmissionResult::VoucherAlreadyUsed, + _ => VoucherSubmissionResult::RpcError, + } + } + Err(daemon_interface::Error::RpcError(_)) => VoucherSubmissionResult::RpcError, + _ => VoucherSubmissionResult::OtherError, + } + } +} + #[no_mangle] #[allow(non_snake_case)] pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_initialize( |
