From 148c1b9816b43805c1053d8cb20960af708b8e11 Mon Sep 17 00:00:00 2001 From: xiphon Date: Wed, 15 Jan 2020 13:37:45 +0000 Subject: [PATCH] Transfer: fix Send button state not being updated properly --- pages/Transfer.qml | 78 +++++++++++++++++----------------------------- 1 file changed, 28 insertions(+), 50 deletions(-) diff --git a/pages/Transfer.qml b/pages/Transfer.qml index 21d44ed9..7b078076 100644 --- a/pages/Transfer.qml +++ b/pages/Transfer.qml @@ -51,7 +51,33 @@ Rectangle { property alias transferHeight2: advancedLayout.height property int mixin: 10 // (ring size 11) property string warningContent: "" - property string sendButtonWarning: "" + property string sendButtonWarning: { + // Currently opened wallet is not view-only + if (appWindow.viewOnly) { + return qsTr("Wallet is view-only and sends are not possible. Unless key images are imported, " + + "the balance reflects only incoming but not outgoing transactions.") + translationManager.emptyString; + } + + // There are sufficient unlocked funds available + if (walletManager.amountFromString(amountLine.text) > appWindow.getUnlockedBalance()) { + return qsTr("Amount is more than unlocked balance.") + translationManager.emptyString; + } + + if (addressLine.text) + { + // Address is valid + if (!TxUtils.checkAddress(addressLine.text, appWindow.persistentSettings.nettype)) { + return qsTr("Address is invalid.") + translationManager.emptyString; + } + + // Amount is nonzero + if (!amountLine.text || parseFloat(amountLine.text) <= 0) { + return qsTr("Enter an amount.") + translationManager.emptyString; + } + } + + return ""; + } property string startLinkText: qsTr(" (Start daemon)") + translationManager.emptyString property bool warningLongPidDescription: descriptionLine.text.match(/^[0-9a-f]{64}$/i) @@ -88,7 +114,6 @@ Rectangle { addressLine.text = "" setPaymentId(""); amountLine.text = "" - root.sendButtonWarning = "" setDescription(""); priorityDropdown.currentIndex = 0 updatePriorityDropdown() @@ -414,9 +439,7 @@ Rectangle { rightIconInactive: "qrc:///images/rightArrowInactive.png" Layout.topMargin: 4 text: qsTr("Send") + translationManager.emptyString - enabled: { - updateSendButton() - } + enabled: !sendButtonWarningBox.visible && !warningContent && addressLine.text && !paymentIdWarningBox.visible onClicked: { console.log("Transfer: paymentClicked") var priority = priorityModelV5.get(priorityDropdown.currentIndex).priority @@ -730,49 +753,4 @@ Rectangle { if(typeof amount !== 'undefined') amountLine.text = amount; } - - function updateSendButton(){ - // reset message - root.sendButtonWarning = ""; - - // Currently opened wallet is not view-only - if(appWindow.viewOnly){ - root.sendButtonWarning = qsTr("Wallet is view-only and sends are not possible. Unless key images are imported, " + - "the balance reflects only incoming but not outgoing transactions.") + translationManager.emptyString; - return false; - } - - // There are sufficient unlocked funds available - if(walletManager.amountFromString(amountLine.text) > appWindow.getUnlockedBalance()){ - root.sendButtonWarning = qsTr("Amount is more than unlocked balance.") + translationManager.emptyString; - return false; - } - - // There is no warning box displayed - if(root.warningContent !== ""){ - return false; - } - - if (addressLine.text == "") { - return false; - } - - // Address is valid - if(!TxUtils.checkAddress(addressLine.text, appWindow.persistentSettings.nettype)){ - root.sendButtonWarning = qsTr("Address is invalid.") + translationManager.emptyString; - return false; - } - - // Amount is nonzero - if (!amountLine.text || parseFloat(amountLine.text) <= 0) { - root.sendButtonWarning = qsTr("Enter an amount.") + translationManager.emptyString; - return false; - } - - if (paymentIdWarningBox.visible) { - return false; - } - - return true; - } }