aboutsummaryrefslogtreecommitdiff
path: root/src/libwalletqt
diff options
context:
space:
mode:
authorxiphon <xiphon@protonmail.com>2021-02-04 11:32:30 +0000
committerxiphon <xiphon@protonmail.com>2021-02-04 11:32:30 +0000
commitb20b956e15184d39925ac415020ea886c7d47e87 (patch)
treef19bbcd1fe149cc41e13304c2b98a3f748734554 /src/libwalletqt
parentc1573c2c2acb0025ef3cec19e56061aa582b0d32 (diff)
downloadmonzero-gui-b20b956e15184d39925ac415020ea886c7d47e87.tar.gz
monzero-gui-b20b956e15184d39925ac415020ea886c7d47e87.tar.xz
monzero-gui-b20b956e15184d39925ac415020ea886c7d47e87.zip
Wallet: estimateTransactionFeeAsync - multi dest support
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 010bb487..66df9077 100644
--- a/src/libwalletqt/Wallet.cpp
+++ b/src/libwalletqt/Wallet.cpp
@@ -626,17 +626,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 0f6d1353..03c3fede 100644
--- a/src/libwalletqt/Wallet.h
+++ b/src/libwalletqt/Wallet.h
@@ -255,10 +255,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;