From 870283c8eac4bb9282c3145b096202e82f582f42 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Tue, 19 Feb 2019 01:45:38 +0000 Subject: [PATCH] JniConverter.getVerifiedBalance() --- .../cash/z/wallet/sdk/jni/JniConverter.kt | 2 ++ src/main/rust/lib.rs | 27 +++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/main/java/cash/z/wallet/sdk/jni/JniConverter.kt b/src/main/java/cash/z/wallet/sdk/jni/JniConverter.kt index e41af686..e8f38d4f 100644 --- a/src/main/java/cash/z/wallet/sdk/jni/JniConverter.kt +++ b/src/main/java/cash/z/wallet/sdk/jni/JniConverter.kt @@ -19,6 +19,8 @@ class JniConverter { external fun getBalance(dbData: String, account: Int): Long + external fun getVerifiedBalance(dbData: String, account: Int): Long + external fun getReceivedMemoAsUtf8(dbData: String, idNote: Long): String external fun getSentMemoAsUtf8(dbData: String, idNote: Long): String diff --git a/src/main/rust/lib.rs b/src/main/rust/lib.rs index 792e006b..bb035419 100644 --- a/src/main/rust/lib.rs +++ b/src/main/rust/lib.rs @@ -31,8 +31,8 @@ use zip32::ExtendedFullViewingKey; use crate::{ sql::{ - get_address, get_balance, init_accounts_table, init_blocks_table, init_data_database, - scan_cached_blocks, send_to_address, + get_address, get_balance, get_verified_balance, init_accounts_table, init_blocks_table, + init_data_database, scan_cached_blocks, send_to_address, }, utils::exception::unwrap_exc_or, }; @@ -187,6 +187,29 @@ pub unsafe extern "C" fn Java_cash_z_wallet_sdk_jni_JniConverter_getBalance( unwrap_exc_or(&env, res, -1) } +#[no_mangle] +pub unsafe extern "C" fn Java_cash_z_wallet_sdk_jni_JniConverter_getVerifiedBalance( + env: JNIEnv<'_>, + _: JClass<'_>, + db_data: JString<'_>, + account: jint, +) -> jlong { + let res = panic::catch_unwind(|| { + let db_data = utils::java_string_to_rust(&env, db_data); + let account = if account >= 0 { + account as u32 + } else { + return Err(format_err!("account argument must be positive")); + }; + + match get_verified_balance(&db_data, account) { + Ok(balance) => Ok(balance.0), + Err(e) => Err(format_err!("Error while fetching verified balance: {}", e)), + } + }); + unwrap_exc_or(&env, res, -1) +} + #[no_mangle] pub unsafe extern "C" fn Java_cash_z_wallet_sdk_jni_JniConverter_getReceivedMemoAsUtf8( env: JNIEnv<'_>,