Skip to content

Commit c68f3b3

Browse files
committed
Emit balance after rescan
1 parent e4b1289 commit c68f3b3

File tree

2 files changed

+25
-12
lines changed

2 files changed

+25
-12
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
## Unreleased
44

5+
- changed: iOS - Emit balance after rescan
56
- fixed: iOS - get UUID after starting synchronizer
67

78
## 0.10.0 (2025-11-18)

ios/RNZcash.swift

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,14 @@ class RNZcash: RCTEventEmitter {
383383
wallet.subscribe()
384384
let txs = try await wallet.synchronizer.allTransactions()
385385
wallet.emitTxs(transactions: txs)
386+
let balances = try await wallet.synchronizer.getAccountsBalances()
387+
if let accountUUID = wallet.accountUUID,
388+
let accountBalance = balances[accountUUID]
389+
{
390+
let data = wallet.createBalanceEventData(from: accountBalance)
391+
wallet.emit("BalanceEvent", data)
392+
}
393+
386394
resolve(nil)
387395
case .failure:
388396
reject("RescanError", "Failed to rescan wallet", genericError)
@@ -630,16 +638,7 @@ class WalletSynchronizer: NSObject {
630638
)
631639
}
632640

633-
func updateBalanceState(event: SynchronizerState) {
634-
guard let accountUUID = self.accountUUID else {
635-
return
636-
}
637-
638-
// Safely check if the account exists in the balances dictionary
639-
guard let accountBalance = event.accountsBalances[accountUUID] else {
640-
return
641-
}
642-
641+
func createBalanceEventData(from accountBalance: AccountBalance) -> NSDictionary {
643642
// Account exists, safely access the balance properties
644643
let transparentBalance = accountBalance.unshielded
645644
let shieldedBalance = accountBalance.saplingBalance
@@ -654,15 +653,28 @@ class WalletSynchronizer: NSObject {
654653
let orchardAvailableZatoshi = orchardBalance.spendableValue
655654
let orchardTotalZatoshi = orchardBalance.total()
656655

657-
let data: NSDictionary = [
656+
return [
658657
"alias": self.alias,
659658
"transparentAvailableZatoshi": String(transparentAvailableZatoshi.amount),
660659
"transparentTotalZatoshi": String(transparentTotalZatoshi.amount),
661660
"saplingAvailableZatoshi": String(saplingAvailableZatoshi.amount),
662661
"saplingTotalZatoshi": String(saplingTotalZatoshi.amount),
663662
"orchardAvailableZatoshi": String(orchardAvailableZatoshi.amount),
664663
"orchardTotalZatoshi": String(orchardTotalZatoshi.amount),
665-
]
664+
] as NSDictionary
665+
}
666+
667+
func updateBalanceState(event: SynchronizerState) {
668+
guard let accountUUID = self.accountUUID else {
669+
return
670+
}
671+
672+
// Safely check if the account exists in the balances dictionary
673+
guard let accountBalance = event.accountsBalances[accountUUID] else {
674+
return
675+
}
676+
677+
let data = createBalanceEventData(from: accountBalance)
666678
emit("BalanceEvent", data)
667679
}
668680

0 commit comments

Comments
 (0)