1
0

qml: enable send for watch-only wallets, show raw tx dialog after finalizing

also use QEAMount setters in qetxfinalizer instead of re-instantiating
This commit is contained in:
Sander van Grieken
2022-08-15 13:40:20 +02:00
parent 6190498dfc
commit 46d3aa4515
6 changed files with 35 additions and 9 deletions

View File

@@ -224,7 +224,7 @@ ElDialog {
}
}
}
Rectangle {
height: 1
Layout.fillWidth: true
@@ -248,11 +248,13 @@ ElDialog {
Button {
id: sendButton
text: qsTr('Pay')
text: Daemon.currentWallet.isWatchOnly ? qsTr('Finalize') : qsTr('Pay')
enabled: finalizer.valid
onClicked: {
txaccepted()
finalizer.send_onchain()
if (!Daemon.currentWallet.isWatchOnly) {
finalizer.send_onchain()
}
dialog.close()
}
}

View File

@@ -13,7 +13,7 @@ ElDialog {
title: ''
parent: Overlay.overlay
modal: true
standardButtons: Dialog.Ok
standardButtons: Dialog.Close
width: parent.width
height: parent.height
@@ -86,7 +86,6 @@ ElDialog {
onClicked: AppController.textToClipboard(dialog.text)
}
Button {
//enabled: false
text: qsTr('Share')
icon.source: '../../icons/share.png'
onClicked: {

View File

@@ -18,6 +18,13 @@ Pane {
is_max.checked = false
}
function showUnsignedTx(tx) {
var dialog = app.genericShareDialog.createObject(rootItem,
{ title: qsTr('Raw Transaction'), text: tx }
)
dialog.open()
}
GridLayout {
id: form
width: parent.width
@@ -162,6 +169,9 @@ Pane {
dialog.txaccepted.connect(function() {
userEnteredPayment.clear()
rootItem.clear()
if (Daemon.currentWallet.isWatchOnly) {
showUnsignedTx(dialog.finalizer.serializedTx())
}
})
dialog.open()
}
@@ -268,6 +278,11 @@ Pane {
'satoshis': invoice.amount,
'message': invoice.message
})
dialog.txaccepted.connect(function() {
if (Daemon.currentWallet.isWatchOnly) {
showUnsignedTx(dialog.finalizer.serializedTx())
}
})
dialog.open()
} else if (invoice.invoiceType == Invoice.LightningInvoice) {
console.log('About to pay lightning invoice')

View File

@@ -123,7 +123,6 @@ Item {
Item {
enabled: !Daemon.currentWallet.isWatchOnly
Loader {
anchors.fill: parent
Send {
@@ -148,7 +147,6 @@ Item {
font.pixelSize: constants.fontSizeLarge
}
TabButton {
enabled: !Daemon.currentWallet.isWatchOnly
text: qsTr('Send')
font.pixelSize: constants.fontSizeLarge
}

View File

@@ -186,6 +186,14 @@ ApplicationWindow
}
}
property alias genericShareDialog: _genericShareDialog
Component {
id: _genericShareDialog
GenericShareDialog {
onClosed: destroy()
}
}
property alias channelOpenProgressDialog: _channelOpenProgressDialog
ChannelOpenProgressDialog {
id: _channelOpenProgressDialog

View File

@@ -273,14 +273,14 @@ class QETxFinalizer(QObject):
amount = self._amount.satsInt if not self._amount.isMax else tx.output_value()
self._effectiveAmount = QEAmount(amount_sat=amount)
self._effectiveAmount.satsInt = amount
self.effectiveAmountChanged.emit()
tx_size = tx.estimated_size()
fee = tx.get_fee()
feerate = Decimal(fee) / tx_size # sat/byte
self.fee = QEAmount(amount_sat=fee)
self.fee.satsInt = fee
self.feeRate = f'{feerate:.1f}'
#TODO
@@ -310,3 +310,7 @@ class QETxFinalizer(QObject):
return
self._wallet.sign_and_broadcast(self._tx)
@pyqtSlot(result=str)
def serializedTx(self):
return str(self._tx)