aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRiccardo Spagni <ric@spagni.net>2016-10-24 10:34:29 +0200
committerRiccardo Spagni <ric@spagni.net>2016-10-24 10:34:29 +0200
commitb74cae4168f556a685a064cc465840f04ac70d45 (patch)
tree549e3e1a72ff1aa654680ad5c21992d8a57d3607
parent08c7ff2ca4927d8d9edd7028c02376ff0983a5ad (diff)
parent628b26c42938172446de44f206ed7c85d3cca4e6 (diff)
downloadmonzero-gui-b74cae4168f556a685a064cc465840f04ac70d45.tar.gz
monzero-gui-b74cae4168f556a685a064cc465840f04ac70d45.tar.xz
monzero-gui-b74cae4168f556a685a064cc465840f04ac70d45.zip
Merge pull request #66
628b26c Transfer: validate destination address (moneromooo.monero) 51f89a8 Transfer: disable Send button if the payment id is invalid (moneromooo.monero)
-rw-r--r--pages/Transfer.qml15
-rw-r--r--src/libwalletqt/WalletManager.cpp15
-rw-r--r--src/libwalletqt/WalletManager.h4
3 files changed, 33 insertions, 1 deletions
diff --git a/pages/Transfer.qml b/pages/Transfer.qml
index 3921b1ef..88ab5a92 100644
--- a/pages/Transfer.qml
+++ b/pages/Transfer.qml
@@ -239,6 +239,19 @@ Rectangle {
anchors.topMargin: 5
}
+ function checkAddressAndPaymentID(address, payment_id, testnet) {
+ print ("testing")
+ if (!walletManager.addressValid(address, testnet))
+ return false
+ print ("address is valid")
+ var ipid = walletManager.paymentIdFromAddress(address, testnet)
+ print ("ipid: [" + ipid + "]")
+ if (ipid.length > 0)
+ return payment_id === ""
+ print ("payment_id: [" + payment_id + "]")
+ return payment_id === "" || walletManager.paymentIdValid(payment_id)
+ }
+
StandardButton {
id: sendButton
anchors.left: parent.left
@@ -251,7 +264,7 @@ Rectangle {
shadowPressedColor: "#B32D00"
releasedColor: "#FF6C3C"
pressedColor: "#FF4304"
- enabled : addressLine.text.length > 0 && amountLine.text.length > 0
+ enabled : amountLine.text.length > 0 && checkAddressAndPaymentID(addressLine.text.trim(), paymentIdLine.text.trim(), appWindow.persistentSettings.testnet)
onClicked: {
console.log("Transfer: paymentClicked")
var priority = priorityModel.get(priorityDropdown.currentIndex).priority
diff --git a/src/libwalletqt/WalletManager.cpp b/src/libwalletqt/WalletManager.cpp
index 2e1fe57b..7b60c528 100644
--- a/src/libwalletqt/WalletManager.cpp
+++ b/src/libwalletqt/WalletManager.cpp
@@ -149,6 +149,21 @@ quint64 WalletManager::amountFromDouble(double amount) const
return Bitmonero::Wallet::amountFromDouble(amount);
}
+bool WalletManager::paymentIdValid(const QString &payment_id) const
+{
+ return Bitmonero::Wallet::paymentIdValid(payment_id.toStdString());
+}
+
+bool WalletManager::addressValid(const QString &address, bool testnet) const
+{
+ return Bitmonero::Wallet::addressValid(address.toStdString(), testnet);
+}
+
+QString WalletManager::paymentIdFromAddress(const QString &address, bool testnet) const
+{
+ return QString::fromStdString(Bitmonero::Wallet::paymentIdFromAddress(address.toStdString(), testnet));
+}
+
void WalletManager::setLogLevel(int logLevel)
{
Bitmonero::WalletManagerFactory::setLogLevel(logLevel);
diff --git a/src/libwalletqt/WalletManager.h b/src/libwalletqt/WalletManager.h
index 24fb60fc..51ad0dbf 100644
--- a/src/libwalletqt/WalletManager.h
+++ b/src/libwalletqt/WalletManager.h
@@ -89,6 +89,10 @@ public:
// QML JS engine doesn't support unsigned integers
Q_INVOKABLE QString maximumAllowedAmountAsSting() const;
+ Q_INVOKABLE bool paymentIdValid(const QString &payment_id) const;
+ Q_INVOKABLE bool addressValid(const QString &address, bool testnet) const;
+ Q_INVOKABLE QString paymentIdFromAddress(const QString &address, bool testnet) const;
+
// QML missing such functionality, implementing these helpers here
Q_INVOKABLE QString urlToLocalPath(const QUrl &url) const;
Q_INVOKABLE QUrl localPathToUrl(const QString &path) const;