diff --git a/monero b/monero index 9df7f6b..3f9cbd8 160000 --- a/monero +++ b/monero @@ -1 +1 @@ -Subproject commit 9df7f6b7eff0a4e1c0e33539c5d9849a0e374c14 +Subproject commit 3f9cbd8c5f08e2944f5aba87ee29917821b99b8c diff --git a/src/HistoryWidget.cpp b/src/HistoryWidget.cpp index 15a3d81..d5e5939 100644 --- a/src/HistoryWidget.cpp +++ b/src/HistoryWidget.cpp @@ -90,6 +90,10 @@ void HistoryWidget::showContextMenu(const QPoint &point) { menu.addAction("Resend transaction", this, &HistoryWidget::onResendTransaction); } + if (tx->isFailed()) { + menu.addAction("Remove from history", this, &HistoryWidget::onRemoveFromHistory); + } + menu.addMenu(m_copyMenu); menu.addAction("Show details", this, &HistoryWidget::showTxDetails); menu.addAction("View on block explorer", this, &HistoryWidget::onViewOnBlockExplorer); @@ -106,6 +110,16 @@ void HistoryWidget::onResendTransaction() { } } +void HistoryWidget::onRemoveFromHistory() { + auto *tx = ui->history->currentEntry(); + if (!tx) return; + + auto result = QMessageBox::question(this, "Remove transaction from history", "Are you sure you want to remove this transaction from the history?"); + if (result == QMessageBox::Yes) { + m_wallet->removeFailedTx(tx->hash()); + } +} + void HistoryWidget::resetModel() { // Save view state diff --git a/src/HistoryWidget.h b/src/HistoryWidget.h index 3cbe144..f387b07 100644 --- a/src/HistoryWidget.h +++ b/src/HistoryWidget.h @@ -42,6 +42,7 @@ private slots: void onViewOnBlockExplorer(); void setSearchFilter(const QString &filter); void onResendTransaction(); + void onRemoveFromHistory(); void createTxProof(); private: diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp index f3bb3d1..507b734 100644 --- a/src/libwalletqt/Wallet.cpp +++ b/src/libwalletqt/Wallet.cpp @@ -1032,6 +1032,20 @@ bool Wallet::submitTxFile(const QString &fileName) const return m_walletImpl->importKeyImages(fileName.toStdString() + "_keyImages"); } +bool Wallet::removeFailedTx(const QString &txid) +{ + crypto::hash txid_; + if(!epee::string_tools::hex_to_pod(txid.toStdString(), txid_)) + { + return false; + } + + bool r = m_wallet2->remove_failed_tx(txid_); + m_history->refresh(); + + return r; +} + // #################### Models #################### TransactionHistory *Wallet::history() const { diff --git a/src/libwalletqt/Wallet.h b/src/libwalletqt/Wallet.h index 03decd5..7dbc038 100644 --- a/src/libwalletqt/Wallet.h +++ b/src/libwalletqt/Wallet.h @@ -345,6 +345,8 @@ public: //! Submit a transfer from file bool submitTxFile(const QString &fileName) const; + bool removeFailedTx(const QString &txid); + // ##### Models ##### TransactionHistory* history() const; TransactionHistoryProxyModel* historyModel();