diff options
| author | luigi1111 <luigi1111w@gmail.com> | 2021-02-18 15:01:14 -0500 |
|---|---|---|
| committer | luigi1111 <luigi1111w@gmail.com> | 2021-02-18 15:01:14 -0500 |
| commit | 8b8948954daa31064659b0793c13350dac6346e5 (patch) | |
| tree | e9f247681bf5d097839f05d5e03527409f3f509a /src/libwalletqt | |
| parent | 2c763f50148b1d476f76fe69a369167e57890eda (diff) | |
| parent | b20b956e15184d39925ac415020ea886c7d47e87 (diff) | |
| download | monzero-gui-8b8948954daa31064659b0793c13350dac6346e5.tar.gz monzero-gui-8b8948954daa31064659b0793c13350dac6346e5.tar.xz monzero-gui-8b8948954daa31064659b0793c13350dac6346e5.zip | |
Merge pull request #3327
b20b956 Wallet: estimateTransactionFeeAsync - multi dest support (xiphon)
Diffstat (limited to 'src/libwalletqt')
| -rw-r--r-- | src/libwalletqt/Wallet.cpp | 35 | ||||
| -rw-r--r-- | src/libwalletqt/Wallet.h | 9 |
2 files changed, 30 insertions, 14 deletions
diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp index ae0f2367..e9700143 100644 --- a/src/libwalletqt/Wallet.cpp +++ b/src/libwalletqt/Wallet.cpp @@ -641,17 +641,32 @@ void Wallet::disposeTransaction(UnsignedTransaction *t) delete t; } -void Wallet::estimateTransactionFeeAsync(const QString &destination, - quint64 amount, - PendingTransaction::Priority priority, - const QJSValue &callback) +void Wallet::estimateTransactionFeeAsync( + const QVector<QString> &destinationAddresses, + const QVector<quint64> &amounts, + PendingTransaction::Priority priority, + const QJSValue &callback) { - m_scheduler.run([this, destination, amount, priority] { - const uint64_t fee = m_walletImpl->estimateTransactionFee( - {std::make_pair(destination.toStdString(), amount)}, - static_cast<Monero::PendingTransaction::Priority>(priority)); - return QJSValueList({QString::fromStdString(Monero::Wallet::displayAmount(fee))}); - }, callback); + m_scheduler.run( + [this, destinationAddresses, amounts, priority] { + if (destinationAddresses.size() != amounts.size()) + { + return QJSValueList({""}); + } + + std::vector<std::pair<std::string, uint64_t>> destinations; + destinations.reserve(destinationAddresses.size()); + for (size_t index = 0; index < destinationAddresses.size(); ++index) + { + destinations.emplace_back(std::make_pair(destinationAddresses[index].toStdString(), amounts[index])); + } + + const uint64_t fee = m_walletImpl->estimateTransactionFee( + destinations, + static_cast<Monero::PendingTransaction::Priority>(priority)); + return QJSValueList({QString::fromStdString(Monero::Wallet::displayAmount(fee))}); + }, + callback); } TransactionHistory *Wallet::history() const diff --git a/src/libwalletqt/Wallet.h b/src/libwalletqt/Wallet.h index 98a47f92..237ef853 100644 --- a/src/libwalletqt/Wallet.h +++ b/src/libwalletqt/Wallet.h @@ -253,10 +253,11 @@ public: //! deletes unsigned transaction and frees memory Q_INVOKABLE void disposeTransaction(UnsignedTransaction * t); - Q_INVOKABLE void estimateTransactionFeeAsync(const QString &destination, - quint64 amount, - PendingTransaction::Priority priority, - const QJSValue &callback); + Q_INVOKABLE void estimateTransactionFeeAsync( + const QVector<QString> &destinationAddresses, + const QVector<quint64> &amounts, + PendingTransaction::Priority priority, + const QJSValue &callback); //! returns transaction history TransactionHistory * history() const; |
