Handle restore from phrase

This commit is contained in:
Aditya Kulkarni
2019-10-24 11:52:10 -07:00
parent 87c19c8fa0
commit bd289466b5
5 changed files with 75 additions and 6 deletions

View File

@@ -67,7 +67,7 @@ NewOrRestorePage::NewOrRestorePage(FirstTimeWizard *parent) : QWizardPage(parent
NewSeedPage::NewSeedPage(FirstTimeWizard *parent) : QWizardPage(parent) {
this->parent = parent;
setTitle("Your new wallet");
QWidget* pageWidget = new QWidget();
@@ -102,7 +102,7 @@ bool NewSeedPage::validatePage() {
auto parsed = json::parse(reply.toStdString().c_str(), nullptr, false);
if (parsed.is_discarded() || parsed.is_null() || parsed.find("result") == parsed.end()) {
QMessageBox::warning(this, tr("Failed to save wallet"),
tr("Couldn't save the wallet. Error") + "\n" + reply,
tr("Couldn't save the wallet") + "\n" + reply,
QMessageBox::Ok);
return false;
} else {
@@ -112,6 +112,8 @@ bool NewSeedPage::validatePage() {
RestoreSeedPage::RestoreSeedPage(FirstTimeWizard *parent) : QWizardPage(parent) {
this->parent = parent;
setTitle("Restore wallet from seed");
QWidget* pageWidget = new QWidget();
@@ -125,11 +127,25 @@ RestoreSeedPage::RestoreSeedPage(FirstTimeWizard *parent) : QWizardPage(parent)
bool RestoreSeedPage::validatePage() {
// 1. Validate that we do have 24 words
QString seed = form.txtSeed->toPlainText();
if (seed.trimmed().split(QRegExp("[ \n\r]+")).length() != 24) {
QString seed = form.txtSeed->toPlainText().replace(QRegExp("[ \n\r]+"), " ");
if (seed.trimmed().split(" ").length() != 24) {
QMessageBox::warning(this, tr("Failed to restore wallet"),
tr("Zecwallet needs 24 words to restore wallet"),
QMessageBox::Ok);
return false;
}
// 2. Attempt to restore wallet with the seed phrase
char* resp = litelib_initialize_new_from_phrase(parent->dangerous, parent->server.toStdString().c_str(),
seed.toStdString().c_str(), 0);
QString reply = litelib_process_response(resp);
if (reply.toUpper().trimmed() != "OK") {
QMessageBox::warning(this, tr("Failed to restore wallet"),
tr("Couldn't restore the wallet") + "\n" + reply,
QMessageBox::Ok);
return false;
} else {
return true;
}
}