aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorluigi1111 <luigi1111w@gmail.com>2021-02-18 14:55:10 -0500
committerluigi1111 <luigi1111w@gmail.com>2021-02-18 14:55:10 -0500
commit5039de83271e4dd6c4c944630357812de558726c (patch)
tree95aa532e82ecc0d0ccc255b6546f7ddafef8e8f6 /src
parent1f0f21a8e5cb1b4d4e430149078b1b78edb5fa4f (diff)
parent04d5fa51cf547975ea5bba1e82008aacb5df193c (diff)
downloadmonzero-gui-5039de83271e4dd6c4c944630357812de558726c.tar.gz
monzero-gui-5039de83271e4dd6c4c944630357812de558726c.tar.xz
monzero-gui-5039de83271e4dd6c4c944630357812de558726c.zip
Merge pull request #3315
04d5fa5 Wallet: refactor createTransaction (xiphon)
Diffstat (limited to 'src')
-rw-r--r--src/libwalletqt/Wallet.cpp45
-rw-r--r--src/libwalletqt/Wallet.h27
2 files changed, 48 insertions, 24 deletions
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<QString> &destinationAddresses,
+ const QString &payment_id,
+ const QVector<quint64> &amounts,
+ quint32 mixin_count,
+ PendingTransaction::Priority priority)
{
+ std::vector<std::string> destinations;
+ for (const auto &address : destinationAddresses) {
+ destinations.push_back(address.toStdString());
+ }
std::set<uint32_t> subaddr_indices;
- Monero::PendingTransaction * ptImpl = m_walletImpl->createTransaction(
- dst_addr.toStdString(), payment_id.toStdString(), amount, mixin_count,
- static_cast<Monero::PendingTransaction::Priority>(priority), currentSubaddressAccount(), subaddr_indices);
- PendingTransaction * result = new PendingTransaction(ptImpl,0);
+ Monero::PendingTransaction *ptImpl = m_walletImpl->createTransactionMultDest(
+ destinations,
+ payment_id.toStdString(),
+ std::vector<uint64_t>(amounts.begin(), amounts.end()),
+ mixin_count,
+ static_cast<Monero::PendingTransaction::Priority>(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<QString> &destinationAddresses,
+ const QString &payment_id,
+ const QVector<quint64> &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);
});
}
diff --git a/src/libwalletqt/Wallet.h b/src/libwalletqt/Wallet.h
index 0f6d1353..98a47f92 100644
--- a/src/libwalletqt/Wallet.h
+++ b/src/libwalletqt/Wallet.h
@@ -216,15 +216,13 @@ public:
Q_INVOKABLE void startRefresh();
Q_INVOKABLE void pauseRefresh();
- //! creates transaction
- Q_INVOKABLE PendingTransaction * createTransaction(const QString &dst_addr, const QString &payment_id,
- quint64 amount, quint32 mixin_count,
- PendingTransaction::Priority priority);
-
//! creates async transaction
- Q_INVOKABLE void createTransactionAsync(const QString &dst_addr, const QString &payment_id,
- quint64 amount, quint32 mixin_count,
- PendingTransaction::Priority priority);
+ Q_INVOKABLE void createTransactionAsync(
+ const QVector<QString> &destinationAddresses,
+ const QString &payment_id,
+ const QVector<quint64> &amounts,
+ quint32 mixin_count,
+ PendingTransaction::Priority priority);
//! creates transaction with all outputs
Q_INVOKABLE PendingTransaction * createTransactionAll(const QString &dst_addr, const QString &payment_id,
@@ -382,7 +380,11 @@ signals:
void deviceShowAddressShowed();
// emitted when transaction is created async
- void transactionCreated(PendingTransaction * transaction, QString address, QString paymentId, quint32 mixinCount);
+ void transactionCreated(
+ PendingTransaction *transaction,
+ const QVector<QString> &addresses,
+ const QString &paymentId,
+ quint32 mixinCount);
void connectionStatusChanged(int status) const;
void currentSubaddressAccountChanged() const;
@@ -415,6 +417,13 @@ private:
quint64 restoreHeight,
const QString& proxyAddress);
+ PendingTransaction *createTransaction(
+ const QVector<QString> &destinationAddresses,
+ const QString &payment_id,
+ const QVector<quint64> &amounts,
+ quint32 mixin_count,
+ PendingTransaction::Priority priority);
+
bool disconnected() const;
bool refreshing() const;
void refreshingSet(bool value);