From 8d5fcf67096827c9839662446720adbb42f05ce8 Mon Sep 17 00:00:00 2001 From: Honza Date: Tue, 17 Dec 2024 20:33:37 +0100 Subject: [PATCH] Fix `importAccountUfvk` account index parameter jlong->u32 AccountId conversion and few more not important changes to the Kotlin side Co-authored-by: Jack Grigg --- .../android/sdk/internal/jni/RustBackend.kt | 18 +++++++++--------- backend-lib/src/main/rust/lib.rs | 7 +++++-- .../sdk/internal/db/derived/TxOutputsView.kt | 2 -- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/backend-lib/src/main/java/cash/z/ecc/android/sdk/internal/jni/RustBackend.kt b/backend-lib/src/main/java/cash/z/ecc/android/sdk/internal/jni/RustBackend.kt index 981d4b596..88ed7d63f 100644 --- a/backend-lib/src/main/java/cash/z/ecc/android/sdk/internal/jni/RustBackend.kt +++ b/backend-lib/src/main/java/cash/z/ecc/android/sdk/internal/jni/RustBackend.kt @@ -140,7 +140,7 @@ class RustBackend private constructor( recoverUntil = recoverUntil ?: -1, purpose = purpose, seedFingerprint = seedFingerprint, - zip32AccountIndex = zip32AccountIndex, + zip32AccountIndex = zip32AccountIndex ?: -1, ) } } @@ -434,16 +434,16 @@ class RustBackend private constructor( ): ByteArray = withContext(SdkDispatchers.DATABASE_IO) { createPcztFromProposal( - dataDbFile.absolutePath, - accountUuid, - proposal.toByteArray(), + dbDataPath = dataDbFile.absolutePath, + accountUuid = accountUuid, + proposal = proposal.toByteArray(), networkId = networkId ) } override suspend fun addProofsToPczt(pczt: ByteArray): ByteArray = addProofsToPczt( - pczt, + pczt = pczt, spendParamsPath = saplingSpendFile.absolutePath, outputParamsPath = saplingOutputFile.absolutePath ) @@ -454,9 +454,9 @@ class RustBackend private constructor( ): ByteArray = withContext(SdkDispatchers.DATABASE_IO) { extractAndStoreTxFromPczt( - dataDbFile.absolutePath, - pcztWithProofs, - pcztWithSignatures, + dbDataPath = dataDbFile.absolutePath, + pcztWithProofs = pcztWithProofs, + pcztWithSignatures = pcztWithSignatures, spendParamsPath = saplingSpendFile.absolutePath, outputParamsPath = saplingOutputFile.absolutePath, networkId = networkId @@ -597,7 +597,7 @@ class RustBackend private constructor( recoverUntil: Long, purpose: Int, seedFingerprint: ByteArray?, - zip32AccountIndex: Long?, + zip32AccountIndex: Long, ): JniAccount @JvmStatic diff --git a/backend-lib/src/main/rust/lib.rs b/backend-lib/src/main/rust/lib.rs index 705c54296..be5d7cffa 100644 --- a/backend-lib/src/main/rust/lib.rs +++ b/backend-lib/src/main/rust/lib.rs @@ -525,7 +525,7 @@ pub extern "C" fn Java_cash_z_ecc_android_sdk_internal_jni_RustBackend_importAcc recover_until: jlong, purpose: jint, seed_fingerprint_bytes: JByteArray<'local>, - hd_account_index_raw: u32, + hd_account_index_raw: jlong, ) -> jobject { let res = catch_unwind(&mut env, |env| { let network = parse_network(network_id as u32)?; @@ -564,7 +564,10 @@ pub extern "C" fn Java_cash_z_ecc_android_sdk_internal_jni_RustBackend_importAcc } else { None }; - let hd_account_index = zip32::AccountId::try_from(hd_account_index_raw).ok(); + + let hd_account_index = u32::try_from(hd_account_index_raw) + .ok() + .and_then(|hd_account_index_non_null| zip32::AccountId::try_from(hd_account_index_non_null).ok()); let derivation = seed_fingerprint .zip(hd_account_index) diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/db/derived/TxOutputsView.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/db/derived/TxOutputsView.kt index 42d4a1e49..e990e3255 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/db/derived/TxOutputsView.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/db/derived/TxOutputsView.kt @@ -87,8 +87,6 @@ internal object TxOutputsViewDefinition { const val COLUMN_INTEGER_OUTPUT_INDEX = "output_index" // $NON-NLS - const val COLUMN_INTEGER_FROM_ACCOUNT = "from_account_id" // $NON-NLS - const val COLUMN_STRING_TO_ADDRESS = "to_address" // $NON-NLS const val COLUMN_BLOB_TO_ACCOUNT = "to_account_uuid" // $NON-NLS