1
0

Add an extra state for invoices where our tx has been broadcast

successfully, but it is not in our history yet.

(follow-up 159646fe54)
This commit is contained in:
ThomasV
2023-04-04 19:31:19 +02:00
parent 159646fe54
commit f04e2e2e6f
6 changed files with 34 additions and 16 deletions

View File

@@ -9,7 +9,7 @@ from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject, QTimer, QM
from electrum import bitcoin
from electrum.i18n import _
from electrum.invoices import InvoiceError, PR_DEFAULT_EXPIRATION_WHEN_CREATING, PR_PAID
from electrum.invoices import InvoiceError, PR_DEFAULT_EXPIRATION_WHEN_CREATING, PR_PAID, PR_BROADCASTING, PR_BROADCAST
from electrum.logging import get_logger
from electrum.network import TxBroadcastError, BestEffortRequestFailed
from electrum.transaction import PartialTxOutput, PartialTransaction
@@ -549,21 +549,23 @@ class QEWallet(AuthMixin, QObject, QtEventListener):
assert tx.is_complete()
def broadcast_thread():
self.wallet.set_broadcasting(tx, True)
self.wallet.set_broadcasting(tx, PR_BROADCASTING)
try:
self._logger.info('running broadcast in thread')
self.wallet.network.run_from_another_thread(self.wallet.network.broadcast_transaction(tx))
except TxBroadcastError as e:
self._logger.error(repr(e))
self.broadcastFailed.emit(tx.txid(), '', e.get_message_for_gui())
self.wallet.set_broadcasting(tx, None)
except BestEffortRequestFailed as e:
self._logger.error(repr(e))
self.broadcastFailed.emit(tx.txid(), '', repr(e))
self.wallet.set_broadcasting(tx, None)
else:
self._logger.info('broadcast success')
self.broadcastSucceeded.emit(tx.txid())
self.historyModel.requestRefresh.emit() # via qt thread
self.wallet.set_broadcasting(tx, False)
self.wallet.set_broadcasting(tx, PR_BROADCAST)
threading.Thread(target=broadcast_thread, daemon=True).start()