From a3b58cc63143e77a3d35ac5194c20ebac4ba856a Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Sat, 6 Dec 2025 19:05:21 +0100 Subject: [PATCH 1/2] Fix(qml): emit balanceChanged on tx height change for real-time updates --- electrum/gui/qml/components/controls/BalanceSummary.qml | 1 + electrum/gui/qml/qewallet.py | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/electrum/gui/qml/components/controls/BalanceSummary.qml b/electrum/gui/qml/components/controls/BalanceSummary.qml index 103159405..075e46eff 100644 --- a/electrum/gui/qml/components/controls/BalanceSummary.qml +++ b/electrum/gui/qml/components/controls/BalanceSummary.qml @@ -175,6 +175,7 @@ Item { Connections { target: Daemon.currentWallet function onBalanceChanged() { + console.log("BalanceSummary: balanceChanged signal received - updating balances") setBalances() } } diff --git a/electrum/gui/qml/qewallet.py b/electrum/gui/qml/qewallet.py index b9c593db6..4c4240c3f 100644 --- a/electrum/gui/qml/qewallet.py +++ b/electrum/gui/qml/qewallet.py @@ -207,7 +207,8 @@ class QEWallet(AuthMixin, QObject, QtEventListener): def on_event_adb_tx_height_changed(self, adb, txid, old_height, new_height): if adb == self.wallet.adb: self._logger.info(f'tx_height_changed {txid}. {old_height} -> {new_height}') - self.historyModel.setDirty() # assuming wallet.is_up_to_date triggers after + self.historyModel.setDirty() + self.balanceChanged.emit() # Update balance when transaction height changes (confirmations) @qt_event_listener def on_event_removed_transaction(self, wallet, tx): From 8448b2d697d7de0dcd46d2e52649de15db3a336d Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Sun, 7 Dec 2025 10:47:38 +0100 Subject: [PATCH 2/2] Fix(qml): Real-time balance updates for confirmations and coinbase maturity MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit fixes two critical balance update issues in the Android app: 1. Added balanceChanged.emit() on blockchain_updated event - Fixes coinbase outputs not showing when they mature (120 blocks) - Ensures balance updates when new blocks arrive - Resolves issue where only partial mining rewards were displayed 2. Fixed typo: satInt → satsInt in BalanceDetails.qml - Lightning swap button now works correctly Related to previous fix on tx_height_changed event handler. --- electrum/gui/qml/components/BalanceDetails.qml | 2 +- electrum/gui/qml/qewallet.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/electrum/gui/qml/components/BalanceDetails.qml b/electrum/gui/qml/components/BalanceDetails.qml index 4edebbba4..de141d9c6 100644 --- a/electrum/gui/qml/components/BalanceDetails.qml +++ b/electrum/gui/qml/components/BalanceDetails.qml @@ -214,7 +214,7 @@ Pane { Layout.preferredWidth: 1 text: qsTr('Lightning swap'); visible: Daemon.currentWallet.isLightning - enabled: Daemon.currentWallet.lightningCanSend.satsInt > 0 || Daemon.currentWallet.lightningCanReceive.satInt > 0 + enabled: Daemon.currentWallet.lightningCanSend.satsInt > 0 || Daemon.currentWallet.lightningCanReceive.satsInt > 0 icon.source: Qt.resolvedUrl('../../icons/update.png') onClicked: app.startSwap() } diff --git a/electrum/gui/qml/qewallet.py b/electrum/gui/qml/qewallet.py index 4c4240c3f..373d5dd67 100644 --- a/electrum/gui/qml/qewallet.py +++ b/electrum/gui/qml/qewallet.py @@ -242,6 +242,13 @@ class QEWallet(AuthMixin, QObject, QtEventListener): self.balanceChanged.emit() self.peersUpdated.emit() + @event_listener + def on_event_blockchain_updated(self): + # Emit balanceChanged when new block arrives because: + # 1. Coinbase outputs might have matured (COINBASE_MATURITY = 120 blocks) + # 2. Transaction confirmations increased + self.balanceChanged.emit() + @qt_event_listener def on_event_payment_succeeded(self, wallet, key): if wallet == self.wallet: