Browse Source

Start adding GUI for z_mergetoaddress

pull/67/head
Duke Leto 3 years ago
parent
commit
b15444cbdb
  1. 18
      src/mainwindow.cpp
  2. 18
      src/rpc.cpp
  3. 1
      src/rpc.h

18
src/mainwindow.cpp

@ -1071,12 +1071,30 @@ void MainWindow::setupBalancesTab() {
}
*/
if(addr.startsWith("zs1")) {
menu.addAction(tr("Shield all non-mining taddr funds to this zaddr"), [=] () {
QJsonArray params = QJsonArray { QJsonArray { "ANY_TADDR" } , addr };
qDebug() << "Calling mergeToAddress with params=" << params;
// TODO: call mergeToAddress and parse reply
rpc->mergeToAddress(params, [=](const QJsonValue& reply) {
qDebug() << "mergeToAddress reply=" << reply;
}, [=](QString errStr) {
qDebug() << "z_mergetoaddress pooped:" << errStr;
if(errStr == "Could not find any funds to merge.") {
ui->statusBar->showMessage("No funds found to shield!");
}
});
});
}
if(addr.startsWith("zs1")) {
menu.addAction(tr("Shield all mining funds to this zaddr"), [=] () {
//QJsonArray params = QJsonArray {addr, zaddresses->first() };
// We shield all coinbase funds to the selected zaddr
QJsonArray params = QJsonArray {"*", addr };
qDebug() << "Calling shieldCoinbase with params=" << params;
rpc->shieldCoinbase(params, [=](const QJsonValue& reply) {
QString shieldingValue = reply.toObject()["shieldingValue"].toString();
QString opid = reply.toObject()["opid"].toString();

18
src/rpc.cpp

@ -265,6 +265,24 @@ void RPC::getTransactions(const std::function<void(QJsonValue)>& cb) {
conn->doRPCWithDefaultErrorHandling(makePayload(method), cb);
}
void RPC::mergeToAddress(QJsonArray &params, const std::function<void(QJsonValue)>& cb,
const std::function<void(QString)>& err) {
QJsonObject payload = {
{"jsonrpc", "1.0"},
{"id", "42"},
{"method", "z_mergetoaddress"},
{"params", params}
};
conn->doRPC(payload, cb, [=] (QNetworkReply *reply, const QJsonValue &parsed) {
if (!parsed.isUndefined() && !parsed["error"].toObject()["message"].isNull()) {
err(parsed["error"].toObject()["message"].toString());
} else {
err(reply->errorString());
}
});
}
void RPC::shieldCoinbase(QJsonArray &params, const std::function<void(QJsonValue)>& cb,
const std::function<void(QString)>& err) {
QJsonObject payload = {

1
src/rpc.h

@ -80,6 +80,7 @@ public:
void fillTxJsonParams(QJsonArray& params, Tx tx);
void sendZTransaction(QJsonValue params, const std::function<void(QJsonValue)>& cb, const std::function<void(QString)>& err);
void shieldCoinbase(QJsonArray& params, const std::function<void(QJsonValue)>& cb, const std::function<void(QString)>& err);
void mergeToAddress(QJsonArray& params, const std::function<void(QJsonValue)>& cb, const std::function<void(QString)>& err);
void watchTxStatus();
const QMap<QString, WatchedTx> getWatchingTxns() { return watchingOps; }

Loading…
Cancel
Save