From 8448b2d697d7de0dcd46d2e52649de15db3a336d Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Sun, 7 Dec 2025 10:47:38 +0100 Subject: [PATCH] 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: