diff --git a/src/dialog/TxImportDialog.cpp b/src/dialog/TxImportDialog.cpp index 27cf3f5..1ffdd92 100644 --- a/src/dialog/TxImportDialog.cpp +++ b/src/dialog/TxImportDialog.cpp @@ -12,28 +12,15 @@ TxImportDialog::TxImportDialog(QWidget *parent, QSharedPointer ctx) : WindowModalDialog(parent) , ui(new Ui::TxImportDialog) , m_ctx(std::move(ctx)) - , m_loadTimer(new QTimer(this)) { ui->setupUi(this); - ui->resp->hide(); - ui->label_loading->hide(); - auto node = m_ctx->nodes->connection(); - m_rpc = new DaemonRpc(this, getNetworkTor(), node.toAddress()); - - connect(ui->btn_load, &QPushButton::clicked, this, &TxImportDialog::loadTx); connect(ui->btn_import, &QPushButton::clicked, this, &TxImportDialog::onImport); - connect(m_rpc, &DaemonRpc::ApiResponse, this, &TxImportDialog::onApiResponse); - - connect(m_loadTimer, &QTimer::timeout, [this]{ - ui->label_loading->setText(ui->label_loading->text() + "."); - }); - this->adjustSize(); } -void TxImportDialog::loadTx() { +void TxImportDialog::onImport() { QString txid = ui->line_txid->text(); if (m_ctx->wallet->haveTransaction(txid)) { @@ -43,65 +30,7 @@ void TxImportDialog::loadTx() { return; } - FeatherNode node = m_ctx->nodes->connection(); - - if (node.isLocal()) { - m_rpc->setNetwork(getNetworkClearnet()); - } else { - m_rpc->setNetwork(getNetworkTor()); - } - - qDebug() << node.toURL(); - m_rpc->setDaemonAddress(node.toURL()); - m_rpc->getTransactions(QStringList() << txid, false, true); - - ui->label_loading->setText("Loading transaction"); - ui->label_loading->setHidden(false); - m_loadTimer->start(1000); -} - -void TxImportDialog::onApiResponse(const DaemonRpc::DaemonResponse &resp) { - m_loadTimer->stop(); - ui->label_loading->setHidden(true); - if (!resp.ok) { - QMessageBox::warning(this, "Import transaction", resp.status); - return; - } - - if (resp.endpoint == DaemonRpc::Endpoint::GET_TRANSACTIONS) { - ui->resp->setVisible(true); - ui->resp->setPlainText(QJsonDocument(resp.obj).toJson(QJsonDocument::Indented)); - this->adjustSize(); - - if (resp.obj.contains("missed_tx")) { - ui->btn_import->setEnabled(false); - QMessageBox::warning(this, "Load transaction", "Transaction could not be found. Make sure the txid is correct, or try connecting to a different node."); - return; - } - - QMessageBox::information(this, "Load transaction", "Transaction loaded successfully.\n\nAfter closing this message box click the Import button to import the transaction into your wallet."); - m_transaction = resp.obj; - ui->btn_import->setEnabled(true); - } -} - -void TxImportDialog::onImport() { - QJsonObject tx = m_transaction.value("txs").toArray().first().toObject(); - - QString txid = tx.value("tx_hash").toString(); - - QVector output_indices; - for (const auto &o: tx.value("output_indices").toArray()) { - output_indices.push_back(o.toInt()); - } - - quint64 height = tx.value("block_height").toInt(); - quint64 timestamp = tx.value("block_timestamp").toInt(); - - bool pool = tx.value("in_pool").toBool(); - bool double_spend_seen = tx.value("double_spend_seen").toBool(); - - if (m_ctx->wallet->importTransaction(tx.value("tx_hash").toString(), output_indices, height, timestamp, false, pool, double_spend_seen)) { + if (m_ctx->wallet->importTransaction(txid)) { if (!m_ctx->wallet->haveTransaction(txid)) { QMessageBox::warning(this, "Import transaction", "This transaction does not belong to this wallet."); return; diff --git a/src/dialog/TxImportDialog.h b/src/dialog/TxImportDialog.h index f9061fe..ad1af0a 100644 --- a/src/dialog/TxImportDialog.h +++ b/src/dialog/TxImportDialog.h @@ -23,18 +23,11 @@ public: ~TxImportDialog() override; private slots: - void loadTx(); void onImport(); - void onApiResponse(const DaemonRpc::DaemonResponse &resp); private: QScopedPointer ui; QSharedPointer m_ctx; - - DaemonRpc *m_rpc; - QTimer *m_loadTimer; - - QJsonObject m_transaction; }; diff --git a/src/dialog/TxImportDialog.ui b/src/dialog/TxImportDialog.ui index 90704e3..50eec65 100644 --- a/src/dialog/TxImportDialog.ui +++ b/src/dialog/TxImportDialog.ui @@ -7,7 +7,7 @@ 0 0 700 - 442 + 88 @@ -27,42 +27,15 @@ - - - - true - - - Debug info.. - - - - - - - Load - - - - - false - Import - - - - Loading transaction - - - diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp index 61ea1ff..4d398f5 100644 --- a/src/libwalletqt/Wallet.cpp +++ b/src/libwalletqt/Wallet.cpp @@ -495,21 +495,9 @@ bool Wallet::importOutputs(const QString& path) { return m_walletImpl->importOutputs(path.toStdString()); } -bool Wallet::importTransaction(const QString& txid, const QVector& output_indeces, quint64 height, quint64 timestamp, bool miner_tx, bool pool, bool double_spend_seen) { - std::vector o_indeces; - for (const auto &o : output_indeces) { - o_indeces.push_back(o); - } - - return m_walletImpl->importTransaction( - txid.toStdString(), - o_indeces, - height, - 17, // todo: get actual block_version - timestamp, - miner_tx, - pool, - double_spend_seen); +bool Wallet::importTransaction(const QString& txid) { + std::vector txids = {txid.toStdString()}; + return m_walletImpl->scanTransactions(txids); } QString Wallet::printBlockchain() diff --git a/src/libwalletqt/Wallet.h b/src/libwalletqt/Wallet.h index 64294bc..9129f12 100644 --- a/src/libwalletqt/Wallet.h +++ b/src/libwalletqt/Wallet.h @@ -231,7 +231,7 @@ public: bool importOutputs(const QString& path); //! import a transaction - bool importTransaction(const QString& txid, const QVector& output_indeces, quint64 height, quint64 timestamp, bool miner_tx, bool pool, bool double_spend_seen); + bool importTransaction(const QString& txid); QString printBlockchain(); QString printTransfers();