RustBackend.isValid[Shielded|Transparent]Address()
This commit is contained in:
parent
54dbf8e0ff
commit
1acf472d33
|
@ -25,6 +25,10 @@ class RustBackend : RustBackendWelding {
|
|||
|
||||
external override fun getAddress(dbData: String, account: Int): String
|
||||
|
||||
external override fun isValidShieldedAddress(addr: String): Boolean
|
||||
|
||||
external override fun isValidTransparentAddress(addr: String): Boolean
|
||||
|
||||
external override fun getBalance(dbData: String, account: Int): Long
|
||||
|
||||
external override fun getVerifiedBalance(dbData: String, account: Int): Long
|
||||
|
|
|
@ -22,6 +22,10 @@ interface RustBackendWelding {
|
|||
|
||||
fun getAddress(dbData: String, account: Int): String
|
||||
|
||||
fun isValidShieldedAddress(addr: String): Boolean
|
||||
|
||||
fun isValidTransparentAddress(addr: String): Boolean
|
||||
|
||||
fun getBalance(dbData: String, account: Int): Long
|
||||
|
||||
fun getVerifiedBalance(dbData: String, account: Int): Long
|
||||
|
|
|
@ -174,6 +174,56 @@ pub unsafe extern "C" fn Java_cash_z_wallet_sdk_jni_RustBackend_getAddress(
|
|||
unwrap_exc_or(&env, res, ptr::null_mut())
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn Java_cash_z_wallet_sdk_jni_RustBackend_isValidShieldedAddress(
|
||||
env: JNIEnv<'_>,
|
||||
_: JClass<'_>,
|
||||
addr: JString<'_>,
|
||||
) -> jboolean {
|
||||
let res = panic::catch_unwind(|| {
|
||||
let addr = utils::java_string_to_rust(&env, addr);
|
||||
|
||||
match RecipientAddress::from_str(&addr) {
|
||||
Ok(Some(addr)) => match addr {
|
||||
RecipientAddress::Shielded(_) => Ok(JNI_TRUE),
|
||||
RecipientAddress::Transparent(_) => Ok(JNI_FALSE),
|
||||
}
|
||||
Ok(None) => {
|
||||
Err(format_err!("Address is for the wrong network"))
|
||||
}
|
||||
Err(e) => {
|
||||
Err(format_err!("Invalid address: {}", e))
|
||||
}
|
||||
}
|
||||
});
|
||||
unwrap_exc_or(&env, res, JNI_FALSE)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn Java_cash_z_wallet_sdk_jni_RustBackend_isValidTransparentAddress(
|
||||
env: JNIEnv<'_>,
|
||||
_: JClass<'_>,
|
||||
addr: JString<'_>,
|
||||
) -> jboolean {
|
||||
let res = panic::catch_unwind(|| {
|
||||
let addr = utils::java_string_to_rust(&env, addr);
|
||||
|
||||
match RecipientAddress::from_str(&addr) {
|
||||
Ok(Some(addr)) => match addr {
|
||||
RecipientAddress::Shielded(_) => Ok(JNI_FALSE),
|
||||
RecipientAddress::Transparent(_) => Ok(JNI_TRUE),
|
||||
}
|
||||
Ok(None) => {
|
||||
Err(format_err!("Address is for the wrong network"))
|
||||
}
|
||||
Err(e) => {
|
||||
Err(format_err!("Invalid address: {}", e))
|
||||
}
|
||||
}
|
||||
});
|
||||
unwrap_exc_or(&env, res, JNI_FALSE)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn Java_cash_z_wallet_sdk_jni_RustBackend_getBalance(
|
||||
env: JNIEnv<'_>,
|
||||
|
|
Loading…
Reference in New Issue