1
0

qml: first part of partially signing tx while not having txid yet

This commit is contained in:
Sander van Grieken
2023-04-20 18:38:32 +02:00
parent 1b5c7d46d7
commit 1aa14e749a
4 changed files with 51 additions and 54 deletions

View File

@@ -310,7 +310,7 @@ class QETxDetails(QObject, QtEventListener):
self._short_id = tx_mined_info.short_id() or ""
@pyqtSlot()
def sign_and_broadcast(self):
def signAndBroadcast(self):
self._sign(broadcast=True)
@pyqtSlot()
@@ -320,20 +320,24 @@ class QETxDetails(QObject, QtEventListener):
def _sign(self, broadcast):
# TODO: connecting/disconnecting signal handlers here is hmm
try:
self._wallet.transactionSigned.disconnect(self.onSigned)
self._wallet.broadcastSucceeded.disconnect(self.onBroadcastSucceeded)
if broadcast:
self._wallet.broadcastSucceeded.disconnect(self.onBroadcastSucceeded)
self._wallet.broadcastfailed.disconnect(self.onBroadcastFailed)
except:
pass
self._wallet.transactionSigned.connect(self.onSigned)
self._wallet.broadcastSucceeded.connect(self.onBroadcastSucceeded)
if broadcast:
self._wallet.broadcastSucceeded.connect(self.onBroadcastSucceeded)
self._wallet.broadcastFailed.connect(self.onBroadcastFailed)
self._wallet.sign(self._tx, broadcast=broadcast)
self._wallet.sign(self._tx, broadcast=broadcast, on_success=self.on_signed_tx)
# side-effect: signing updates self._tx
# we rely on this for broadcast
def on_signed_tx(self, tx: Transaction):
self._logger.debug('on_signed_tx')
self.update()
@pyqtSlot()
def broadcast(self):
assert self._tx.is_complete()
@@ -349,15 +353,6 @@ class QETxDetails(QObject, QtEventListener):
self._wallet.broadcast(self._tx)
@pyqtSlot(str)
def onSigned(self, txid):
if txid != self._txid:
return
self._logger.debug('onSigned')
self._wallet.transactionSigned.disconnect(self.onSigned)
self.update()
@pyqtSlot(str)
def onBroadcastSucceeded(self, txid):
if txid != self._txid: