diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp index 62c71110..47f4a06a 100644 --- a/src/libwalletqt/Wallet.cpp +++ b/src/libwalletqt/Wallet.cpp @@ -456,6 +456,23 @@ bool Wallet::verifySignedMessage(const QString &message, const QString &address, return m_walletImpl->verifySignedMessage(message.toStdString(), address.toStdString(), signature.toStdString()); } } +bool Wallet::parse_uri(const QString &uri, QString &address, QString &payment_id, uint64_t &amount, QString &tx_description, QString &recipient_name, QVector &unknown_parameters, QString &error) +{ + std::string s_address, s_payment_id, s_tx_description, s_recipient_name, s_error; + std::vector s_unknown_parameters; + bool res= m_walletImpl->parse_uri(uri.toStdString(), s_address, s_payment_id, amount, s_tx_description, s_recipient_name, s_unknown_parameters, s_error); + if(res) + { + address = QString::fromStdString(s_address); + payment_id = QString::fromStdString(s_payment_id); + tx_description = QString::fromStdString(s_tx_description); + recipient_name = QString::fromStdString(s_recipient_name); + for( const auto &p : s_unknown_parameters ) + unknown_parameters.append(QString::fromStdString(p)); + } + error = QString::fromStdString(s_error); + return res; +} Wallet::Wallet(Monero::Wallet *w, QObject *parent) : QObject(parent) diff --git a/src/libwalletqt/Wallet.h b/src/libwalletqt/Wallet.h index 9f9ed3e1..63d3b1a3 100644 --- a/src/libwalletqt/Wallet.h +++ b/src/libwalletqt/Wallet.h @@ -183,6 +183,8 @@ public: //! verify a signed message Q_INVOKABLE bool verifySignedMessage(const QString &message, const QString &address, const QString &signature, bool filename = false) const; + //! Parse URI + Q_INVOKABLE bool parse_uri(const QString &uri, QString &address, QString &payment_id, uint64_t &amount, QString &tx_description, QString &recipient_name, QVector &unknown_parameters, QString &error); //! saved payment id QString paymentId() const; diff --git a/src/libwalletqt/WalletManager.cpp b/src/libwalletqt/WalletManager.cpp index fafed695..ce37b9bb 100644 --- a/src/libwalletqt/WalletManager.cpp +++ b/src/libwalletqt/WalletManager.cpp @@ -249,6 +249,12 @@ QString WalletManager::resolveOpenAlias(const QString &address) const res = std::string(dnssec_valid ? "true" : "false") + "|" + res; return QString::fromStdString(res); } +bool WalletManager::parse_uri(const QString &uri, QString &address, QString &payment_id, uint64_t &amount, QString &tx_description, QString &recipient_name, QVector &unknown_parameters, QString &error) +{ + if (m_currentWallet) + return m_currentWallet->parse_uri(uri, address, payment_id, amount, tx_description, recipient_name, unknown_parameters, error); + return false; +} void WalletManager::setLogLevel(int logLevel) { diff --git a/src/libwalletqt/WalletManager.h b/src/libwalletqt/WalletManager.h index 5121b8dc..12972efe 100644 --- a/src/libwalletqt/WalletManager.h +++ b/src/libwalletqt/WalletManager.h @@ -121,6 +121,7 @@ public: Q_INVOKABLE double getPasswordStrength(const QString &password) const; Q_INVOKABLE QString resolveOpenAlias(const QString &address) const; + Q_INVOKABLE bool parse_uri(const QString &uri, QString &address, QString &payment_id, uint64_t &amount, QString &tx_description, QString &recipient_name, QVector &unknown_parameters, QString &error); signals: