From 633f61eb3aa1063b918e964da2e263e26698338f Mon Sep 17 00:00:00 2001 From: Milan Cerovsky Date: Fri, 31 Jan 2025 09:21:39 +0100 Subject: [PATCH 1/4] Hotfix for fetching recipients of an account existing in database --- .../z/ecc/android/sdk/internal/db/derived/TxOutputsView.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 e990e325..11d963b8 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 @@ -69,7 +69,9 @@ internal class TxOutputsView(private val sqliteDatabase: SupportSQLiteDatabase) val toAccountIndex = it.getColumnIndex(TxOutputsViewDefinition.COLUMN_BLOB_TO_ACCOUNT) val toAddressIndex = it.getColumnIndex(TxOutputsViewDefinition.COLUMN_STRING_TO_ADDRESS) - if (!it.isNull(toAccountIndex)) { + if (!it.isNull(toAddressIndex)) { + TransactionRecipient.RecipientAddress(addressValue = it.getString(toAddressIndex)) + } else if (!it.isNull(toAccountIndex)) { TransactionRecipient.RecipientAccount(accountUuid = it.getBlob(toAccountIndex)) } else { TransactionRecipient.RecipientAddress(addressValue = it.getString(toAddressIndex)) From 286047273fd23b40310df81eac66df7689c798d8 Mon Sep 17 00:00:00 2001 From: Milan Cerovsky Date: Fri, 31 Jan 2025 09:22:52 +0100 Subject: [PATCH 2/4] Documentation update --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c1cd97b5..1eece7a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ and this library adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed +- `Synchronizer.getRecipients` will correctly return an address for an account existing in database + ## [2.2.7] - 2024-12-18 ### Added From 22123adc6f769f7b8f65c4cb4e753d6b9f987e6e Mon Sep 17 00:00:00 2001 From: Milan Cerovsky Date: Mon, 17 Feb 2025 12:18:50 +0100 Subject: [PATCH 3/4] Synchronizer.getRecipients refactor --- CHANGELOG.md | 6 ++---- .../sdk/internal/db/derived/TxOutputsView.kt | 11 ++++------- .../z/ecc/android/sdk/model/PendingTransaction.kt | 15 ++++----------- 3 files changed, 10 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 366ec69d..70e5b501 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,9 +6,6 @@ and this library adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -### Fixed -- `Synchronizer.getRecipients` will correctly return an address for an account existing in database - ### Added - `Synchronizer.getTransactionsByMemoSubstring()` has been added - `TransactionId` object has been added and used instead of `FirstClassByteArray` in `TransactionOverview` and @@ -18,7 +15,8 @@ and this library adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `Synchronizer.getTransactions(accountUuid)` and `Synchronizer.transactions` now internally fill in `TransactionOverview.blockTimeEpochSeconds` based on the related block time - `Synchronizer.transactions` has been renamed to `Synchronizer.allTransactions` to emphasize the fact the API - returns transactions for all the wallet accounts + returns transactions for all the wallet accounts +- `Synchronizer.getRecipients` now returns both address and an account existing in database ## [2.2.7] - 2024-12-18 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 eb8989e6..6c517485 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 @@ -103,13 +103,10 @@ internal class TxOutputsView(private val sqliteDatabase: SupportSQLiteDatabase) val toAccountIndex = it.getColumnIndex(TxOutputsViewDefinition.COLUMN_BLOB_TO_ACCOUNT) val toAddressIndex = it.getColumnIndex(TxOutputsViewDefinition.COLUMN_STRING_TO_ADDRESS) - if (!it.isNull(toAddressIndex)) { - TransactionRecipient.RecipientAddress(addressValue = it.getString(toAddressIndex)) - } else if (!it.isNull(toAccountIndex)) { - TransactionRecipient.RecipientAccount(accountUuid = it.getBlob(toAccountIndex)) - } else { - TransactionRecipient.RecipientAddress(addressValue = it.getString(toAddressIndex)) - } + TransactionRecipient( + addressValue = if (!it.isNull(toAddressIndex)) it.getString(toAddressIndex) else null, + accountUuid = if (!it.isNull(toAccountIndex)) it.getBlob(toAccountIndex) else null + ) } ) } diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/model/PendingTransaction.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/model/PendingTransaction.kt index db416b98..59abe4e4 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/model/PendingTransaction.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/model/PendingTransaction.kt @@ -26,17 +26,10 @@ data class PendingTransaction internal constructor( override fun toString() = "PendingTransaction" } -sealed class TransactionRecipient { - data class RecipientAddress(val addressValue: String) : TransactionRecipient() { - override fun toString() = "TransactionRecipient.RecipientAddress" - } - - data class RecipientAccount(val accountUuid: ByteArray) : TransactionRecipient() { - override fun toString() = "TransactionRecipient.RecipientAccount" - } - - companion object -} +data class TransactionRecipient( + val addressValue: String?, + val accountUuid: ByteArray? +) // Note there are some commented out methods which aren't being removed yet, as they might be needed before the // Roomoval draft PR is completed From 5c62a49dae925776029bc3b1b594c95b6f9307e9 Mon Sep 17 00:00:00 2001 From: Milan Cerovsky Date: Mon, 17 Feb 2025 12:26:03 +0100 Subject: [PATCH 4/4] Code cleanup --- .../z/ecc/android/sdk/internal/db/derived/TxOutputsView.kt | 3 ++- .../java/cash/z/ecc/android/sdk/model/PendingTransaction.kt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) 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 6c517485..1ca43abb 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 @@ -3,6 +3,7 @@ package cash.z.ecc.android.sdk.internal.db.derived import androidx.sqlite.db.SupportSQLiteDatabase import cash.z.ecc.android.sdk.internal.db.queryAndMap import cash.z.ecc.android.sdk.internal.model.OutputProperties +import cash.z.ecc.android.sdk.model.AccountUuid import cash.z.ecc.android.sdk.model.FirstClassByteArray import cash.z.ecc.android.sdk.model.TransactionRecipient import kotlinx.coroutines.flow.Flow @@ -105,7 +106,7 @@ internal class TxOutputsView(private val sqliteDatabase: SupportSQLiteDatabase) TransactionRecipient( addressValue = if (!it.isNull(toAddressIndex)) it.getString(toAddressIndex) else null, - accountUuid = if (!it.isNull(toAccountIndex)) it.getBlob(toAccountIndex) else null + accountUuid = if (!it.isNull(toAccountIndex)) AccountUuid(it.getBlob(toAccountIndex)) else null ) } ) diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/model/PendingTransaction.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/model/PendingTransaction.kt index 59abe4e4..7bf8573d 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/model/PendingTransaction.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/model/PendingTransaction.kt @@ -28,7 +28,7 @@ data class PendingTransaction internal constructor( data class TransactionRecipient( val addressValue: String?, - val accountUuid: ByteArray? + val accountUuid: AccountUuid? ) // Note there are some commented out methods which aren't being removed yet, as they might be needed before the