From 04d5fa51cf547975ea5bba1e82008aacb5df193c Mon Sep 17 00:00:00 2001 From: xiphon Date: Mon, 25 Jan 2021 11:57:49 +0000 Subject: Wallet: refactor createTransaction --- src/libwalletqt/Wallet.cpp | 47 ++++++++++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 16 deletions(-) (limited to 'src/libwalletqt/Wallet.cpp') diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp index 010bb487..ae0f2367 100644 --- a/src/libwalletqt/Wallet.cpp +++ b/src/libwalletqt/Wallet.cpp @@ -532,25 +532,40 @@ void Wallet::pauseRefresh() m_refreshEnabled = false; } -PendingTransaction *Wallet::createTransaction(const QString &dst_addr, const QString &payment_id, - quint64 amount, quint32 mixin_count, - PendingTransaction::Priority priority) -{ +PendingTransaction *Wallet::createTransaction( + const QVector &destinationAddresses, + const QString &payment_id, + const QVector &amounts, + quint32 mixin_count, + PendingTransaction::Priority priority) +{ + std::vector destinations; + for (const auto &address : destinationAddresses) { + destinations.push_back(address.toStdString()); + } std::set subaddr_indices; - Monero::PendingTransaction * ptImpl = m_walletImpl->createTransaction( - dst_addr.toStdString(), payment_id.toStdString(), amount, mixin_count, - static_cast(priority), currentSubaddressAccount(), subaddr_indices); - PendingTransaction * result = new PendingTransaction(ptImpl,0); + Monero::PendingTransaction *ptImpl = m_walletImpl->createTransactionMultDest( + destinations, + payment_id.toStdString(), + std::vector(amounts.begin(), amounts.end()), + mixin_count, + static_cast(priority), + currentSubaddressAccount(), + subaddr_indices); + PendingTransaction *result = new PendingTransaction(ptImpl, 0); return result; } -void Wallet::createTransactionAsync(const QString &dst_addr, const QString &payment_id, - quint64 amount, quint32 mixin_count, - PendingTransaction::Priority priority) +void Wallet::createTransactionAsync( + const QVector &destinationAddresses, + const QString &payment_id, + const QVector &amounts, + quint32 mixin_count, + PendingTransaction::Priority priority) { - m_scheduler.run([this, dst_addr, payment_id, amount, mixin_count, priority] { - PendingTransaction *tx = createTransaction(dst_addr, payment_id, amount, mixin_count, priority); - emit transactionCreated(tx, dst_addr, payment_id, mixin_count); + m_scheduler.run([this, destinationAddresses, payment_id, amounts, mixin_count, priority] { + PendingTransaction *tx = createTransaction(destinationAddresses, payment_id, amounts, mixin_count, priority); + emit transactionCreated(tx, destinationAddresses, payment_id, mixin_count); }); } @@ -571,7 +586,7 @@ void Wallet::createTransactionAllAsync(const QString &dst_addr, const QString &p { m_scheduler.run([this, dst_addr, payment_id, mixin_count, priority] { PendingTransaction *tx = createTransactionAll(dst_addr, payment_id, mixin_count, priority); - emit transactionCreated(tx, dst_addr, payment_id, mixin_count); + emit transactionCreated(tx, {dst_addr}, payment_id, mixin_count); }); } @@ -586,7 +601,7 @@ void Wallet::createSweepUnmixableTransactionAsync() { m_scheduler.run([this] { PendingTransaction *tx = createSweepUnmixableTransaction(); - emit transactionCreated(tx, "", "", 0); + emit transactionCreated(tx, {""}, "", 0); }); } -- cgit v1.2.3