qml: run tx broadcast in thread, re-enable broadcast button in TxDetails when broadcast fails
show notification when broadcast fails
This commit is contained in:
@@ -62,7 +62,7 @@ class QEWallet(AuthMixin, QObject, QtEventListener):
|
||||
paymentFailed = pyqtSignal([str,str], arguments=['key','reason'])
|
||||
requestNewPassword = pyqtSignal()
|
||||
transactionSigned = pyqtSignal([str], arguments=['txid'])
|
||||
#broadcastSucceeded = pyqtSignal([str], arguments=['txid'])
|
||||
broadcastSucceeded = pyqtSignal([str], arguments=['txid'])
|
||||
broadcastFailed = pyqtSignal([str,str,str], arguments=['txid','code','reason'])
|
||||
labelsUpdated = pyqtSignal()
|
||||
otpRequested = pyqtSignal()
|
||||
@@ -476,21 +476,25 @@ class QEWallet(AuthMixin, QObject, QtEventListener):
|
||||
def broadcast(self, tx):
|
||||
assert tx.is_complete()
|
||||
|
||||
self.network = self.wallet.network # TODO not always defined?
|
||||
network = self.wallet.network # TODO not always defined?
|
||||
|
||||
try:
|
||||
self._logger.info('running broadcast in thread')
|
||||
self.network.run_from_another_thread(self.network.broadcast_transaction(tx))
|
||||
self._logger.info('broadcast submit done')
|
||||
except TxBroadcastError as e:
|
||||
self.broadcastFailed.emit(tx.txid(),'',repr(e))
|
||||
self._logger.error(e)
|
||||
except BestEffortRequestFailed as e:
|
||||
self.broadcastFailed.emit(tx.txid(),'',repr(e))
|
||||
self._logger.error(e)
|
||||
def broadcast_thread():
|
||||
try:
|
||||
self._logger.info('running broadcast in thread')
|
||||
result = network.run_from_another_thread(network.broadcast_transaction(tx))
|
||||
self._logger.info(repr(result))
|
||||
except TxBroadcastError as e:
|
||||
self._logger.error(repr(e))
|
||||
self.broadcastFailed.emit(tx.txid(),'',repr(e))
|
||||
except BestEffortRequestFailed as e:
|
||||
self._logger.error(repr(e))
|
||||
self.broadcastFailed.emit(tx.txid(),'',repr(e))
|
||||
else:
|
||||
self.broadcastSucceeded.emit(tx.txid())
|
||||
|
||||
threading.Thread(target=broadcast_thread).start()
|
||||
|
||||
#TODO: properly catch server side errors, e.g. bad-txns-inputs-missingorspent
|
||||
#might need callback from network.py
|
||||
|
||||
paymentAuthRejected = pyqtSignal()
|
||||
def ln_auth_rejected(self):
|
||||
|
||||
Reference in New Issue
Block a user