aboutsummaryrefslogtreecommitdiff
path: root/src/libwalletqt
diff options
context:
space:
mode:
authorluigi1111 <luigi1111w@gmail.com>2021-02-18 15:01:14 -0500
committerluigi1111 <luigi1111w@gmail.com>2021-02-18 15:01:14 -0500
commit8b8948954daa31064659b0793c13350dac6346e5 (patch)
treee9f247681bf5d097839f05d5e03527409f3f509a /src/libwalletqt
parent2c763f50148b1d476f76fe69a369167e57890eda (diff)
parentb20b956e15184d39925ac415020ea886c7d47e87 (diff)
downloadmonzero-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.cpp35
-rw-r--r--src/libwalletqt/Wallet.h9
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;