qml: fix lifecycle issues with swap helper.
previously tied to Channels view, now dynamically created and parented to app
This commit is contained in:
@@ -110,8 +110,13 @@ Pane {
|
||||
Layout.preferredWidth: 1
|
||||
text: qsTr('Swap');
|
||||
visible: Daemon.currentWallet.lightningCanSend.satsInt > 0 || Daemon.currentWallet.lightningCanReceive.satInt > 0
|
||||
icon.source: '../../icons/status_waiting.png'
|
||||
icon.source: Qt.resolvedUrl('../../icons/update.png')
|
||||
onClicked: {
|
||||
var swaphelper = app.swaphelper.createObject(app)
|
||||
swaphelper.swapStarted.connect(function() {
|
||||
var dialog = swapProgressDialog.createObject(app, { swaphelper: swaphelper })
|
||||
dialog.open()
|
||||
})
|
||||
var dialog = swapDialog.createObject(root, { swaphelper: swaphelper })
|
||||
dialog.open()
|
||||
}
|
||||
@@ -141,26 +146,6 @@ Pane {
|
||||
|
||||
}
|
||||
|
||||
SwapHelper {
|
||||
id: swaphelper
|
||||
wallet: Daemon.currentWallet
|
||||
onConfirm: {
|
||||
var dialog = app.messageDialog.createObject(app, {text: message, yesno: true})
|
||||
dialog.yesClicked.connect(function() {
|
||||
dialog.close()
|
||||
swaphelper.executeSwap(true)
|
||||
})
|
||||
dialog.open()
|
||||
}
|
||||
onAuthRequired: {
|
||||
app.handleAuthRequired(swaphelper, method)
|
||||
}
|
||||
onSwapStarted: {
|
||||
var dialog = swapProgressDialog.createObject(app, { swaphelper: swaphelper })
|
||||
dialog.open()
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: swapDialog
|
||||
SwapDialog {
|
||||
|
||||
@@ -50,7 +50,9 @@ ElDialog {
|
||||
Image {
|
||||
Layout.preferredWidth: constants.iconSizeSmall
|
||||
Layout.preferredHeight: constants.iconSizeSmall
|
||||
source: swaphelper.isReverse ? '../../icons/lightning.png' : '../../icons/bitcoin.png'
|
||||
source: swaphelper.isReverse
|
||||
? '../../icons/lightning.png'
|
||||
: '../../icons/bitcoin.png'
|
||||
visible: swaphelper.valid
|
||||
}
|
||||
}
|
||||
@@ -83,7 +85,9 @@ ElDialog {
|
||||
Image {
|
||||
Layout.preferredWidth: constants.iconSizeSmall
|
||||
Layout.preferredHeight: constants.iconSizeSmall
|
||||
source: swaphelper.isReverse ? '../../icons/bitcoin.png' : '../../icons/lightning.png'
|
||||
source: swaphelper.isReverse
|
||||
? '../../icons/bitcoin.png'
|
||||
: '../../icons/lightning.png'
|
||||
visible: swaphelper.valid
|
||||
}
|
||||
}
|
||||
@@ -123,7 +127,9 @@ ElDialog {
|
||||
color: Material.accentColor
|
||||
}
|
||||
Label {
|
||||
text: '(' + swaphelper.serverfeeperc + ')'
|
||||
text: swaphelper.serverfeeperc
|
||||
? '(' + swaphelper.serverfeeperc + ')'
|
||||
: ''
|
||||
}
|
||||
}
|
||||
|
||||
@@ -164,15 +170,6 @@ ElDialog {
|
||||
if (activeFocus)
|
||||
swaphelper.sliderPos = value
|
||||
}
|
||||
Component.onCompleted: {
|
||||
value = swaphelper.sliderPos
|
||||
}
|
||||
Connections {
|
||||
target: swaphelper
|
||||
function onSliderPosChanged() {
|
||||
swapslider.value = swaphelper.sliderPos
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
InfoTextArea {
|
||||
@@ -190,7 +187,7 @@ ElDialog {
|
||||
Layout.columnSpan: 2
|
||||
Layout.fillWidth: true
|
||||
text: qsTr('Swap')
|
||||
icon.source: '../../icons/status_waiting.png'
|
||||
icon.source: Qt.resolvedUrl('../../icons/update.png')
|
||||
enabled: swaphelper.valid
|
||||
onClicked: swaphelper.executeSwap()
|
||||
}
|
||||
@@ -198,8 +195,16 @@ ElDialog {
|
||||
|
||||
Connections {
|
||||
target: swaphelper
|
||||
function onSwapStarted() {
|
||||
function onSliderPosChanged() {
|
||||
swapslider.value = swaphelper.sliderPos
|
||||
}
|
||||
function onSwapSuccess() {
|
||||
root.close()
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
swapslider.value = swaphelper.sliderPos
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ ElDialog {
|
||||
width: parent.width
|
||||
height: parent.height
|
||||
|
||||
iconSource: Qt.resolvedUrl('../../icons/update.png')
|
||||
title: swaphelper.isReverse
|
||||
? qsTr('Reverse swap...')
|
||||
: qsTr('Swap...')
|
||||
|
||||
@@ -7,6 +7,8 @@ import QtQuick.Controls.Material.impl 2.12
|
||||
import QtQml 2.6
|
||||
import QtMultimedia 5.6
|
||||
|
||||
import org.electrum 1.0
|
||||
|
||||
import "controls"
|
||||
|
||||
ApplicationWindow
|
||||
@@ -274,6 +276,30 @@ ApplicationWindow
|
||||
}
|
||||
}
|
||||
|
||||
property alias swaphelper: _swaphelper
|
||||
Component {
|
||||
id: _swaphelper
|
||||
SwapHelper {
|
||||
id: __swaphelper
|
||||
wallet: Daemon.currentWallet
|
||||
onConfirm: {
|
||||
var dialog = app.messageDialog.createObject(app, {text: message, yesno: true})
|
||||
dialog.yesClicked.connect(function() {
|
||||
dialog.close()
|
||||
__swaphelper.executeSwap(true)
|
||||
})
|
||||
dialog.open()
|
||||
}
|
||||
onAuthRequired: {
|
||||
app.handleAuthRequired(__swaphelper, method)
|
||||
}
|
||||
onError: {
|
||||
var dialog = app.messageDialog.createObject(app, { text: message })
|
||||
dialog.open()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
coverTimer.start()
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ class QESwapHelper(AuthMixin, QObject):
|
||||
_logger = get_logger(__name__)
|
||||
|
||||
confirm = pyqtSignal([str], arguments=['message'])
|
||||
error = pyqtSignal([str], arguments=['message'])
|
||||
swapStarted = pyqtSignal()
|
||||
swapSuccess = pyqtSignal()
|
||||
swapFailed = pyqtSignal([str], arguments=['message'])
|
||||
|
||||
Reference in New Issue
Block a user