Browse Source

optimize import rescanning

recurring
Aditya Kulkarni 6 years ago
parent
commit
c523ecf3a3
  1. 21
      src/mainwindow.cpp
  2. 8
      src/rpc.cpp
  3. 4
      src/rpc.h

21
src/mainwindow.cpp

@ -393,23 +393,30 @@ void MainWindow::importPrivKey() {
pui.helpLbl->setText(QString() %
"Please paste your private keys (z-Addr or t-Addr) here, one per line.\n" %
"The keys will be imported into your connected zcashd node");
"The keys will be imported into your connected zcashd node");
if (d.exec() == QDialog::Accepted && !pui.privKeyTxt->toPlainText().trimmed().isEmpty()) {
auto keys = pui.privKeyTxt->toPlainText().trimmed().split("\n");
auto fnFinished = [=] (auto) {
qDebug() << "finished";
ui->statusBar->showMessage("Key import rescan finished");
};
for (int i=0; i < keys.length(); i++) {
auto key = keys[i].trimmed();
if (key.startsWith("S") ||
key.startsWith("secret")) { // Z key
rpc->importZPrivKey(key, [=] (auto) {} );
rpc->importZPrivKey(key, i == key.length() -1, fnFinished);
} else { // T Key
rpc->importTPrivKey(key, [=] (auto) {} );
rpc->importTPrivKey(key, i == key.length() -1, fnFinished);
}
}
}
QMessageBox::information(this,
"Imported", "The keys were imported. It may be a while to rescan the blockchain with the new keys.",
QMessageBox::Ok);
QMessageBox::information(this,
"Imported", "The keys were imported. It may take several minutes to rescan the blockchain with the new keys for your balance to be shown accurately.",
QMessageBox::Ok);
}
}
void MainWindow::setupBalancesTab() {

8
src/rpc.cpp

@ -184,24 +184,24 @@ void RPC::getTPrivKey(QString addr, const std::function<void(json)>& cb) {
doRPC(payload, cb);
}
void RPC::importZPrivKey(QString addr, const std::function<void(json)>& cb) {
void RPC::importZPrivKey(QString addr, bool rescan, const std::function<void(json)>& cb) {
json payload = {
{"jsonrpc", "1.0"},
{"id", "someid"},
{"method", "z_importkey"},
{"params", { addr.toStdString() }},
{"params", { addr.toStdString(), (rescan? "yes" : "no") }},
};
doRPC(payload, cb);
}
void RPC::importTPrivKey(QString addr, const std::function<void(json)>& cb) {
void RPC::importTPrivKey(QString addr, bool rescan, const std::function<void(json)>& cb) {
json payload = {
{"jsonrpc", "1.0"},
{"id", "someid"},
{"method", "importprivkey"},
{"params", { addr.toStdString() }},
{"params", { addr.toStdString(), (rescan? "yes" : "no") }},
};
doRPC(payload, cb);

4
src/rpc.h

@ -53,8 +53,8 @@ public:
void getZPrivKey(QString addr, const std::function<void(json)>& cb);
void getTPrivKey(QString addr, const std::function<void(json)>& cb);
void importZPrivKey(QString addr, const std::function<void(json)>& cb);
void importTPrivKey(QString addr, const std::function<void(json)>& cb);
void importZPrivKey(QString addr, bool rescan, const std::function<void(json)>& cb);
void importTPrivKey(QString addr, bool rescan, const std::function<void(json)>& cb);
Turnstile* getTurnstile() { return turnstile; }

Loading…
Cancel
Save