wowlet/src/dialog/broadcasttxdialog.cpp

68 lines
2.1 KiB
C++
Raw Normal View History

2020-10-16 03:05:05 +00:00
// SPDX-License-Identifier: BSD-3-Clause
2020-12-26 19:56:06 +00:00
// Copyright (c) 2020-2021, The Monero Project.
2020-10-16 03:05:05 +00:00
#include "broadcasttxdialog.h"
#include "ui_broadcasttxdialog.h"
2020-12-14 22:07:23 +00:00
#include "utils/nodes.h"
2020-10-16 03:05:05 +00:00
#include <QMessageBox>
2020-12-14 22:07:23 +00:00
BroadcastTxDialog::BroadcastTxDialog(QWidget *parent, AppContext *ctx, const QString &transactionHex)
2020-10-16 03:05:05 +00:00
: QDialog(parent)
, m_ctx(ctx)
, ui(new Ui::BroadcastTxDialog)
{
ui->setupUi(this);
m_network = new UtilsNetworking(m_ctx->network, this);
auto node = ctx->nodes->connection();
m_rpc = new DaemonRpc(this, m_network, node.full);
connect(ui->btn_Broadcast, &QPushButton::clicked, this, &BroadcastTxDialog::broadcastTx);
connect(ui->btn_Close, &QPushButton::clicked, this, &BroadcastTxDialog::reject);
connect(m_rpc, &DaemonRpc::ApiResponse, this, &BroadcastTxDialog::onApiResponse);
2020-12-14 22:07:23 +00:00
if (!transactionHex.isEmpty()) {
ui->transaction->setPlainText(transactionHex);
}
2020-10-16 03:05:05 +00:00
this->adjustSize();
}
void BroadcastTxDialog::broadcastTx() {
QString tx = ui->transaction->toPlainText();
QString node = [this]{
QString node;
if (ui->radio_useCustom->isChecked())
node = ui->customNode->text();
2020-12-14 22:07:23 +00:00
else if (ui->radio_useDefault->isChecked())
2020-10-16 03:05:05 +00:00
node = m_ctx->nodes->connection().full;
if (!node.startsWith("http://"))
node = QString("http://%1").arg(node);
return node;
}();
m_rpc->setDaemonAddress(node);
m_rpc->sendRawTransaction(tx);
}
void BroadcastTxDialog::onApiResponse(const DaemonRpc::DaemonResponse &resp) {
if (!resp.ok) {
QMessageBox::warning(this, "Transaction broadcast", resp.status);
return;
}
if (resp.endpoint == DaemonRpc::Endpoint::SEND_RAW_TRANSACTION) {
QMessageBox::information(this, "Transaction broadcast", "Transaction submitted successfully.\n\n"
"If the transaction belongs to this wallet it may take several minutes before it shows up in the history tab.");
}
}
BroadcastTxDialog::~BroadcastTxDialog() {
delete ui;
}