diff --git a/src/HistoryWidget.cpp b/src/HistoryWidget.cpp index 41191b5b..e31390de 100644 --- a/src/HistoryWidget.cpp +++ b/src/HistoryWidget.cpp @@ -83,7 +83,7 @@ void HistoryWidget::showContextMenu(const QPoint &point) { if (!tx) return; bool unconfirmed = tx->isFailed() || tx->isPending(); - if (m_ctx->txCache.contains(tx->hash()) && unconfirmed && tx->direction() != TransactionInfo::Direction_In) { + if (unconfirmed && tx->direction() != TransactionInfo::Direction_In) { menu.addAction(icons()->icon("info2.svg"), "Resend transaction", this, &HistoryWidget::onResendTransaction); } diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 6847887e..c552aa72 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -909,7 +909,8 @@ void MainWindow::onViewOnBlockExplorer(const QString &txid) { } void MainWindow::onResendTransaction(const QString &txid) { - if (!m_ctx->txCache.contains(txid)) { + QString txHex = m_ctx->getCacheTransaction(txid); + if (txHex.isEmpty()) { QMessageBox::warning(this, "Unable to resend transaction", "Transaction was not found in transaction cache. Unable to resend."); return; } @@ -917,7 +918,7 @@ void MainWindow::onResendTransaction(const QString &txid) { // Connect to a different node so chances of successful relay are higher m_ctx->nodes->autoConnect(true); - TxBroadcastDialog dialog{this, m_ctx, m_ctx->txCache[txid]}; + TxBroadcastDialog dialog{this, m_ctx, txHex}; dialog.exec(); } diff --git a/src/appcontext.cpp b/src/appcontext.cpp index bed01014..2714b125 100644 --- a/src/appcontext.cpp +++ b/src/appcontext.cpp @@ -158,6 +158,15 @@ void AppContext::onMultiBroadcast(PendingTransaction *tx) { } } +void AppContext::addCacheTransaction(const QString &txid, const QString &txHex) const { + this->wallet->setCacheAttribute(QString("tx:%1").arg(txid), txHex); +} + +QString AppContext::getCacheTransaction(const QString &txid) const { + QString txHex = this->wallet->getCacheAttribute(QString("tx:%1").arg(txid)); + return txHex; +} + // ################## Models ################## void AppContext::onPreferredFiatCurrencyChanged(const QString &symbol) { diff --git a/src/appcontext.h b/src/appcontext.h index 62b2a69d..46fd215c 100644 --- a/src/appcontext.h +++ b/src/appcontext.h @@ -34,7 +34,6 @@ public: NetworkType::Type networkType; PendingTransaction::Priority tx_priority = PendingTransaction::Priority::Priority_Low; - QMap txCache; // libwalletqt bool refreshed = false; @@ -48,6 +47,9 @@ public: void stopTimers(); + void addCacheTransaction(const QString &txid, const QString &txHex) const; + QString getCacheTransaction(const QString &txid) const; + public slots: void onCreateTransaction(const QString &address, quint64 amount, const QString &description, bool all); void onCreateTransactionMultiDest(const QVector &addresses, const QVector &amounts, const QString &description); diff --git a/src/dialog/TxConfDialog.cpp b/src/dialog/TxConfDialog.cpp index 0cef511d..2d1c4b29 100644 --- a/src/dialog/TxConfDialog.cpp +++ b/src/dialog/TxConfDialog.cpp @@ -77,7 +77,7 @@ TxConfDialog::TxConfDialog(QSharedPointer ctx, PendingTransaction *t connect(ui->btn_Advanced, &QPushButton::clicked, this, &TxConfDialog::setShowAdvanced); - m_ctx->txCache[tx->txid()[0]] = tx->signedTxToHex(0); + m_ctx->addCacheTransaction(tx->txid()[0], tx->signedTxToHex(0)); // Todo: Iterate over all txs this->adjustSize(); } diff --git a/src/dialog/TxInfoDialog.cpp b/src/dialog/TxInfoDialog.cpp index f1df9888..8abcea4f 100644 --- a/src/dialog/TxInfoDialog.cpp +++ b/src/dialog/TxInfoDialog.cpp @@ -34,7 +34,7 @@ TxInfoDialog::TxInfoDialog(QSharedPointer ctx, TransactionInfo *txIn this->setData(txInfo); - if (m_ctx->txCache.contains(txInfo->hash()) && (txInfo->isFailed() || txInfo->isPending()) && txInfo->direction() != TransactionInfo::Direction_In) { + if ((txInfo->isFailed() || txInfo->isPending()) && txInfo->direction() != TransactionInfo::Direction_In) { connect(ui->btn_rebroadcastTx, &QPushButton::pressed, [this]{ emit resendTranscation(m_txid); });