diff --git a/src/interfaces/wallet.h b/src/interfaces/wallet.h index 48d68c4e6b6..ecba717b45d 100644 --- a/src/interfaces/wallet.h +++ b/src/interfaces/wallet.h @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -300,7 +301,7 @@ public: virtual std::unique_ptr handleAddressBookChanged(AddressBookChangedFn fn) = 0; //! Register handler for transaction changed messages. - using TransactionChangedFn = std::function; + using TransactionChangedFn = std::function; virtual std::unique_ptr handleTransactionChanged(TransactionChangedFn fn) = 0; //! Register handler for watchonly changed messages. diff --git a/src/qt/sendcoinsdialog.h b/src/qt/sendcoinsdialog.h index 6ab26df1778..adb8e7fc196 100644 --- a/src/qt/sendcoinsdialog.h +++ b/src/qt/sendcoinsdialog.h @@ -7,6 +7,7 @@ #include #include +#include #include #include @@ -61,7 +62,7 @@ public Q_SLOTS: void setBalance(const interfaces::WalletBalances& balances); Q_SIGNALS: - void coinsSent(const uint256& txid); + void coinsSent(const Txid& txid); private: Ui::SendCoinsDialog *ui; diff --git a/src/qt/transactionrecord.cpp b/src/qt/transactionrecord.cpp index 8a2ec4cd593..073e78144f9 100644 --- a/src/qt/transactionrecord.cpp +++ b/src/qt/transactionrecord.cpp @@ -37,7 +37,7 @@ QList TransactionRecord::decomposeTransaction(const interface CAmount nCredit = wtx.credit; CAmount nDebit = wtx.debit; CAmount nNet = nCredit - nDebit; - uint256 hash = wtx.tx->GetHash(); + Txid hash = wtx.tx->GetHash(); std::map mapValue = wtx.value_map; bool involvesWatchAddress = false; diff --git a/src/qt/transactionrecord.h b/src/qt/transactionrecord.h index 21b1bc0e018..df09b231e21 100644 --- a/src/qt/transactionrecord.h +++ b/src/qt/transactionrecord.h @@ -7,6 +7,7 @@ #include #include +#include #include #include @@ -79,13 +80,13 @@ public: { } - TransactionRecord(uint256 _hash, qint64 _time): + TransactionRecord(Txid _hash, qint64 _time): hash(_hash), time(_time), type(Other), debit(0), credit(0), idx(0) { } - TransactionRecord(uint256 _hash, qint64 _time, + TransactionRecord(Txid _hash, qint64 _time, Type _type, const std::string &_address, const CAmount& _debit, const CAmount& _credit): hash(_hash), time(_time), type(_type), address(_address), debit(_debit), credit(_credit), @@ -100,7 +101,7 @@ public: /** @name Immutable transaction attributes @{*/ - uint256 hash; + Txid hash; qint64 time; Type type; std::string address; diff --git a/src/qt/transactiontablemodel.cpp b/src/qt/transactiontablemodel.cpp index 9a79a08df9f..ff4816079cc 100644 --- a/src/qt/transactiontablemodel.cpp +++ b/src/qt/transactiontablemodel.cpp @@ -49,11 +49,11 @@ struct TxLessThan { return a.hash < b.hash; } - bool operator()(const TransactionRecord &a, const uint256 &b) const + bool operator()(const TransactionRecord &a, const Txid &b) const { return a.hash < b; } - bool operator()(const uint256 &a, const TransactionRecord &b) const + bool operator()(const Txid &a, const TransactionRecord &b) const { return a < b.hash; } @@ -64,7 +64,7 @@ struct TransactionNotification { public: TransactionNotification() = default; - TransactionNotification(uint256 _hash, ChangeType _status, bool _showTransaction): + TransactionNotification(Txid _hash, ChangeType _status, bool _showTransaction): hash(_hash), status(_status), showTransaction(_showTransaction) {} void invoke(QObject *ttm) @@ -78,7 +78,7 @@ public: assert(invoked); } private: - uint256 hash; + Txid hash; ChangeType status; bool showTransaction; }; @@ -103,7 +103,7 @@ public: bool m_loading = false; std::vector< TransactionNotification > vQueueNotifications; - void NotifyTransactionChanged(const uint256 &hash, ChangeType status); + void NotifyTransactionChanged(const Txid& hash, ChangeType status); void DispatchNotifications(); /* Query entire wallet anew from core. @@ -127,7 +127,7 @@ public: Call with transaction that was added, removed or changed. */ - void updateWallet(interfaces::Wallet& wallet, const uint256 &hash, int status, bool showTransaction) + void updateWallet(interfaces::Wallet& wallet, const Txid& hash, int status, bool showTransaction) { qDebug() << "TransactionTablePriv::updateWallet: " + QString::fromStdString(hash.ToString()) + " " + QString::number(status); @@ -699,7 +699,7 @@ void TransactionTableModel::updateDisplayUnit() Q_EMIT dataChanged(index(0, Amount), index(priv->size()-1, Amount)); } -void TransactionTablePriv::NotifyTransactionChanged(const uint256 &hash, ChangeType status) +void TransactionTablePriv::NotifyTransactionChanged(const Txid& hash, ChangeType status) { // Find transaction in wallet // Determine whether to show transaction or not (determine this here so that no relocking is needed in GUI thread) diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp index b4a60b427e1..93520d4869c 100644 --- a/src/qt/transactionview.cpp +++ b/src/qt/transactionview.cpp @@ -193,7 +193,7 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa // Double-clicking on a transaction on the transaction history page shows details connect(this, &TransactionView::doubleClicked, this, &TransactionView::showDetails); // Highlight transaction after fee bump - connect(this, &TransactionView::bumpedFee, [this](const uint256& txid) { + connect(this, &TransactionView::bumpedFee, [this](const Txid& txid) { focusTransaction(txid); }); } @@ -434,7 +434,7 @@ void TransactionView::bumpFee([[maybe_unused]] bool checked) Txid hash = Txid::FromHex(hashQStr.toStdString()).value(); // Bump tx fee over the walletModel - uint256 newHash; + Txid newHash; if (model->bumpFee(hash, newHash)) { // Update the table transactionView->selectionModel()->clearSelection(); @@ -602,7 +602,7 @@ void TransactionView::focusTransaction(const QModelIndex &idx) transactionView->setFocus(); } -void TransactionView::focusTransaction(const uint256& txid) +void TransactionView::focusTransaction(const Txid& txid) { if (!transactionProxyModel) return; diff --git a/src/qt/transactionview.h b/src/qt/transactionview.h index 29fb722afea..c7e06344167 100644 --- a/src/qt/transactionview.h +++ b/src/qt/transactionview.h @@ -8,6 +8,7 @@ #include #include +#include #include #include @@ -115,7 +116,7 @@ Q_SIGNALS: /** Fired when a message should be reported to the user */ void message(const QString &title, const QString &message, unsigned int style); - void bumpedFee(const uint256& txid); + void bumpedFee(const Txid& txid); public Q_SLOTS: void chooseDate(int idx); @@ -126,7 +127,7 @@ public Q_SLOTS: void exportClicked(); void closeOpenedDialogs(); void focusTransaction(const QModelIndex&); - void focusTransaction(const uint256& txid); + void focusTransaction(const Txid& txid); }; #endif // BITCOIN_QT_TRANSACTIONVIEW_H diff --git a/src/qt/walletmodel.cpp b/src/qt/walletmodel.cpp index 455f9f469ed..42a0479576c 100644 --- a/src/qt/walletmodel.cpp +++ b/src/qt/walletmodel.cpp @@ -388,7 +388,7 @@ static void NotifyAddressBookChanged(WalletModel *walletmodel, assert(invoked); } -static void NotifyTransactionChanged(WalletModel *walletmodel, const uint256 &hash, ChangeType status) +static void NotifyTransactionChanged(WalletModel *walletmodel, const Txid& hash, ChangeType status) { Q_UNUSED(hash); Q_UNUSED(status); @@ -479,7 +479,7 @@ WalletModel::UnlockContext::~UnlockContext() } } -bool WalletModel::bumpFee(uint256 hash, uint256& new_hash) +bool WalletModel::bumpFee(Txid hash, Txid& new_hash) { CCoinControl coin_control; coin_control.m_signal_bip125_rbf = true; @@ -561,11 +561,15 @@ bool WalletModel::bumpFee(uint256 hash, uint256& new_hash) return false; } // commit the bumped transaction - if(!m_wallet->commitBumpTransaction(hash, std::move(mtx), errors, new_hash)) { + // Temporary uint256 variable needed for commitBumpTransaction out parameter. + uint256 bumped_txid_result; + if(!m_wallet->commitBumpTransaction(hash, std::move(mtx), errors, bumped_txid_result)) { QMessageBox::critical(nullptr, tr("Fee bump error"), tr("Could not commit transaction") + "
(" + QString::fromStdString(errors[0].translated)+")"); return false; } + // Assign the received txid back to the new_hash. + new_hash = Txid::FromUint256(bumped_txid_result); return true; } diff --git a/src/qt/walletmodel.h b/src/qt/walletmodel.h index ab2096c1fef..efc8734b1ec 100644 --- a/src/qt/walletmodel.h +++ b/src/qt/walletmodel.h @@ -11,6 +11,7 @@ #include #include +#include #include @@ -129,7 +130,7 @@ public: UnlockContext requestUnlock(); - bool bumpFee(uint256 hash, uint256& new_hash); + bool bumpFee(Txid hash, Txid& new_hash); void displayAddress(std::string sAddress) const; static bool isWalletEnabled(); diff --git a/src/qt/walletview.cpp b/src/qt/walletview.cpp index 4926d1e80b8..39e9dcadeed 100644 --- a/src/qt/walletview.cpp +++ b/src/qt/walletview.cpp @@ -82,7 +82,7 @@ WalletView::WalletView(WalletModel* wallet_model, const PlatformStyle* _platform connect(sendCoinsPage, &SendCoinsDialog::coinsSent, this, &WalletView::coinsSent); // Highlight transaction after send - connect(sendCoinsPage, &SendCoinsDialog::coinsSent, transactionView, qOverload(&TransactionView::focusTransaction)); + connect(sendCoinsPage, &SendCoinsDialog::coinsSent, transactionView, qOverload(&TransactionView::focusTransaction)); // Clicking on "Export" allows to export the transaction list connect(exportButton, &QPushButton::clicked, transactionView, &TransactionView::exportClicked); diff --git a/src/wallet/interfaces.cpp b/src/wallet/interfaces.cpp index 9ce7b5b24f3..08daba3d2e8 100644 --- a/src/wallet/interfaces.cpp +++ b/src/wallet/interfaces.cpp @@ -533,7 +533,7 @@ public: std::unique_ptr handleTransactionChanged(TransactionChangedFn fn) override { return MakeSignalHandler(m_wallet->NotifyTransactionChanged.connect( - [fn](const uint256& txid, ChangeType status) { fn(txid, status); })); + [fn](const uint256& txid, ChangeType status) { fn(Txid::FromUint256(txid), status); })); } std::unique_ptr handleWatchOnlyChanged(WatchOnlyChangedFn fn) override {