diff --git a/electrum/gui/qml/qewallet.py b/electrum/gui/qml/qewallet.py index a279d21f8..26f06dc49 100644 --- a/electrum/gui/qml/qewallet.py +++ b/electrum/gui/qml/qewallet.py @@ -224,6 +224,7 @@ class QEWallet(AuthMixin, QObject, QtEventListener): if wallet == self.wallet: self._logger.debug('wallet_updated') self.balanceChanged.emit() + self.historyModel.setDirty() self.synchronizing = not wallet.is_up_to_date() if not self.synchronizing: self.historyModel.initModel() # refresh if dirty diff --git a/electrum/lnwatcher.py b/electrum/lnwatcher.py index 455016163..4895c7bba 100644 --- a/electrum/lnwatcher.py +++ b/electrum/lnwatcher.py @@ -4,6 +4,7 @@ from typing import TYPE_CHECKING +from . import util from .util import TxMinedInfo, BelowDustLimit from .util import EventListener, event_listener, log_exceptions, ignore_exceptions from .transaction import Transaction, TxOutpoint @@ -54,13 +55,15 @@ class LNWatcher(Logger, EventListener): return for address, callback in list(self.callbacks.items()): await callback() + # send callback to GUI + util.trigger_callback('wallet_updated', self.lnworker.wallet) @event_listener async def on_event_blockchain_updated(self, *args): await self.trigger_callbacks() @event_listener - async def on_event_wallet_updated(self, wallet): + async def on_event_adb_added_tx(self, wallet): # called if we add local tx if wallet.adb != self.adb: return diff --git a/electrum/util.py b/electrum/util.py index c80b50f68..4a8fc32bb 100644 --- a/electrum/util.py +++ b/electrum/util.py @@ -1897,6 +1897,10 @@ class CallbackManager(Logger): # callbacks set by the GUI or any thread # guarantee: the callbacks will always get triggered from the asyncio thread. + # FIXME: There should be a way to prevent circular callbacks. + # At the very least, we need a distinction between callbacks that + # are for the GUI and callbacks between wallet components + def __init__(self): Logger.__init__(self) self.callback_lock = threading.Lock()