From 0a7620b3403b31ff26e73a7a3c870603a8d762d5 Mon Sep 17 00:00:00 2001 From: Honza Date: Mon, 4 Sep 2023 11:39:09 +0200 Subject: [PATCH] [#1170] Regular transaction flow emitting Although zcash/librustzcash#918 will provide information on when to trigger transaction polling, this partly solve the issue as well --- .../{Transactions.kt => TransactionsView.kt} | 4 +-- .../block/processor/CompactBlockProcessor.kt | 27 +++++++++++++++++-- 2 files changed, 27 insertions(+), 4 deletions(-) rename demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/ui/screen/transactions/view/{Transactions.kt => TransactionsView.kt} (98%) diff --git a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/ui/screen/transactions/view/Transactions.kt b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/ui/screen/transactions/view/TransactionsView.kt similarity index 98% rename from demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/ui/screen/transactions/view/Transactions.kt rename to demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/ui/screen/transactions/view/TransactionsView.kt index 24ced1b10..e7fccfd04 100644 --- a/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/ui/screen/transactions/view/Transactions.kt +++ b/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/ui/screen/transactions/view/TransactionsView.kt @@ -41,7 +41,7 @@ private fun ComposablePreview() { MaterialTheme { // TODO [#1090]: Demo: Add Addresses and Transactions Compose Previews // TODO [#1090]: https://github.com/zcash/zcash-android-wallet-sdk/issues/1090 - // Transactions() + // TransactionsView() } } @@ -127,7 +127,7 @@ private fun TransactionsMainContent( val memos = synchronizer.getMemos(it) queryScope.launch { memos.toList().run { - Twig.debug { + Twig.info { "Transaction memos: count: $size, contains: ${joinToString().ifEmpty { "-" }}" } } diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/processor/CompactBlockProcessor.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/processor/CompactBlockProcessor.kt index 591e83153..065647a0c 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/processor/CompactBlockProcessor.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/processor/CompactBlockProcessor.kt @@ -475,6 +475,11 @@ class CompactBlockProcessor internal constructor( SyncingResult.UpdateBirthday -> { updateBirthdayHeight() } + SyncingResult.EnhanceSuccess -> { + Twig.info { "Triggering transaction refresh now" } + // Invalidate transaction data + refreshTransactions(transactionStorage = repository) + } is SyncingResult.Failure -> { syncingResult = rangeSyncProgress.resultState return@collect @@ -553,6 +558,12 @@ class CompactBlockProcessor internal constructor( updateBirthdayHeight() SyncingResult.AllSuccess } + SyncingResult.EnhanceSuccess -> { + Twig.info { "Triggering transaction refresh now" } + // Invalidate transaction data and return the common batch syncing success result to the caller + refreshTransactions(transactionStorage = repository) + SyncingResult.AllSuccess + } is SyncingResult.Failure -> { rangeSyncProgress.resultState } else -> { @@ -598,6 +609,13 @@ class CompactBlockProcessor internal constructor( return BlockProcessingResult.Success } + /** + * This invalidates transaction storage to trigger data refreshing for its subscribers. + */ + private fun refreshTransactions(transactionStorage: DerivedDataRepository) { + transactionStorage.invalidate() + } + @Suppress("ReturnCount") internal suspend fun runSbSSyncingPreparation( backend: TypesafeBackend, @@ -701,6 +719,11 @@ class CompactBlockProcessor internal constructor( SyncingResult.UpdateBirthday -> { updateBirthdayHeight() } + SyncingResult.EnhanceSuccess -> { + Twig.info { "Triggering transaction refresh now" } + // Invalidate transaction data + refreshTransactions(transactionStorage = repository) + } is SyncingResult.Failure -> { syncingResult = rangeSyncProgress.resultState return@collect @@ -1418,8 +1441,8 @@ class CompactBlockProcessor internal constructor( enhancingResult } else -> { - // Transactions enhanced correctly. Now we return common sync success state. - SyncingResult.AllSuccess + // Transactions enhanced correctly. Let's continue with block processing. + enhancingResult } } emit(