diff options
| author | Riccardo Spagni <ric@spagni.net> | 2016-10-24 10:34:29 +0200 |
|---|---|---|
| committer | Riccardo Spagni <ric@spagni.net> | 2016-10-24 10:34:29 +0200 |
| commit | b74cae4168f556a685a064cc465840f04ac70d45 (patch) | |
| tree | 549e3e1a72ff1aa654680ad5c21992d8a57d3607 | |
| parent | 08c7ff2ca4927d8d9edd7028c02376ff0983a5ad (diff) | |
| parent | 628b26c42938172446de44f206ed7c85d3cca4e6 (diff) | |
| download | monzero-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.qml | 15 | ||||
| -rw-r--r-- | src/libwalletqt/WalletManager.cpp | 15 | ||||
| -rw-r--r-- | src/libwalletqt/WalletManager.h | 4 |
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; |
