Browse Source

Qml: new receive flow. fixes #8258

master
ThomasV 3 years ago
parent
commit
fed5fe5991
  1. 5
      electrum/gui/qml/components/ReceiveDetailsDialog.qml
  2. 61
      electrum/gui/qml/components/ReceiveDialog.qml
  3. 51
      electrum/gui/qml/components/WalletMainView.qml

5
electrum/gui/qml/components/ReceiveDetailsDialog.qml

@ -11,7 +11,7 @@ import "controls"
ElDialog { ElDialog {
id: dialog id: dialog
title: qsTr('Edit payment request') title: qsTr('Receive payment')
property alias amount: amountBtc.text property alias amount: amountBtc.text
property alias description: message.text property alias description: message.text
@ -19,7 +19,6 @@ ElDialog {
parent: Overlay.overlay parent: Overlay.overlay
modal: true modal: true
iconSource: Qt.resolvedUrl('../../icons/pen.png')
Overlay.modal: Rectangle { Overlay.modal: Rectangle {
color: "#aa000000" color: "#aa000000"
@ -130,7 +129,7 @@ ElDialog {
FlatButton { FlatButton {
Layout.fillWidth: true Layout.fillWidth: true
text: qsTr('Apply') text: qsTr('Create request')
icon.source: '../../icons/confirmed.png' icon.source: '../../icons/confirmed.png'
onClicked: accept() onClicked: accept()
} }

61
electrum/gui/qml/components/ReceiveDialog.qml

@ -22,8 +22,6 @@ ElDialog {
property bool _render_qr: false // delay qr rendering until dialog is shown property bool _render_qr: false // delay qr rendering until dialog is shown
property bool _ispaid: false property bool _ispaid: false
property bool _ignore_gaplimit: false
property bool _reuse_address: false
parent: Overlay.overlay parent: Overlay.overlay
modal: true modal: true
@ -283,14 +281,6 @@ ElDialog {
enabled = true enabled = true
} }
} }
FlatButton {
Layout.fillWidth: true
Layout.preferredWidth: 1
icon.source: '../../icons/pen.png'
text: qsTr('Edit')
onClicked: receiveDetailsDialog.open()
}
} }
} }
@ -334,41 +324,6 @@ ElDialog {
FocusScope { id: parkFocus } FocusScope { id: parkFocus }
} }
function createRequest() {
var qamt = Config.unitsToSats(receiveDetailsDialog.amount)
Daemon.currentWallet.createRequest(qamt, receiveDetailsDialog.description, receiveDetailsDialog.expiry, _ignore_gaplimit, _reuse_address)
}
function createDefaultRequest() {
console.log('Creating default request')
Daemon.currentWallet.createDefaultRequest(_ignore_gaplimit, _reuse_address)
}
Connections {
target: Daemon.currentWallet
function onRequestCreateSuccess(key) {
request.key = key
}
function onRequestCreateError(code, error) {
if (code == 'gaplimit') {
var dialog = app.messageDialog.createObject(app, {text: error, yesno: true})
dialog.yesClicked.connect(function() {
_ignore_gaplimit = true
createDefaultRequest()
})
} else if (code == 'non-deterministic') {
var dialog = app.messageDialog.createObject(app, {text: error, yesno: true})
dialog.yesClicked.connect(function() {
_reuse_address = true
createDefaultRequest()
})
} else {
console.log(error)
var dialog = app.messageDialog.createObject(app, {text: error})
}
dialog.open()
}
}
RequestDetails { RequestDetails {
id: request id: request
@ -396,22 +351,6 @@ ElDialog {
} }
} }
ReceiveDetailsDialog {
id: receiveDetailsDialog
width: parent.width * 0.9
anchors.centerIn: parent
onAccepted: {
console.log('accepted')
Daemon.currentWallet.delete_request(request.key)
createRequest()
}
onRejected: {
console.log('rejected')
}
}
Toaster { Toaster {
id: toaster id: toaster
} }

51
electrum/gui/qml/components/WalletMainView.qml

@ -16,6 +16,9 @@ Item {
property var _sendDialog property var _sendDialog
property string _intentUri property string _intentUri
property bool _ignore_gaplimit: false
property bool _reuse_address: false
function openInvoice(key) { function openInvoice(key) {
var dialog = invoiceDialog.createObject(app, { invoice: invoiceParser, invoice_key: key }) var dialog = invoiceDialog.createObject(app, { invoice: invoiceParser, invoice_key: key })
dialog.open() dialog.open()
@ -168,7 +171,7 @@ Item {
icon.source: '../../icons/tab_receive.png' icon.source: '../../icons/tab_receive.png'
text: qsTr('Receive') text: qsTr('Receive')
onClicked: { onClicked: {
var dialog = receiveDialog.createObject(mainView) var dialog = receiveDetails.createObject(mainView)
dialog.open() dialog.open()
} }
} }
@ -238,6 +241,31 @@ Item {
} }
} }
Connections {
target: Daemon.currentWallet
function onRequestCreateSuccess(key) {
openRequest(key)
}
function onRequestCreateError(code, error) {
if (code == 'gaplimit') {
var dialog = app.messageDialog.createObject(app, {text: error, yesno: true})
dialog.yesClicked.connect(function() {
_ignore_gaplimit = true
createDefaultRequest()
})
} else if (code == 'non-deterministic') {
var dialog = app.messageDialog.createObject(app, {text: error, yesno: true})
dialog.yesClicked.connect(function() {
_reuse_address = true
createDefaultRequest()
})
} else {
console.log(error)
var dialog = app.messageDialog.createObject(app, {text: error})
}
dialog.open()
}
}
Connections { Connections {
target: Daemon.currentWallet target: Daemon.currentWallet
function onOtpRequested() { function onOtpRequested() {
@ -326,6 +354,27 @@ Item {
} }
} }
function createRequest(receiveDetailsDialog) {
var qamt = Config.unitsToSats(receiveDetailsDialog.amount)
Daemon.currentWallet.createRequest(qamt, receiveDetailsDialog.description, receiveDetailsDialog.expiry, _ignore_gaplimit, _reuse_address)
}
Component {
id: receiveDetails
ReceiveDetailsDialog {
id: receiveDetailsDialog
width: parent.width * 0.9
anchors.centerIn: parent
onAccepted: {
console.log('accepted')
createRequest(receiveDetailsDialog)
}
onRejected: {
console.log('rejected')
}
}
}
Component { Component {
id: receiveDialog id: receiveDialog
ReceiveDialog { ReceiveDialog {

Loading…
Cancel
Save