aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRiccardo Spagni <ric@spagni.net>2016-10-10 22:19:35 +0200
committerRiccardo Spagni <ric@spagni.net>2016-10-10 22:19:35 +0200
commitac2d0ba3b2274a9313c08a3dde6605f87ab2ce5c (patch)
tree5c2b6c6578a276804ecc4d8916c848e3a6cf55d0
parent0e1f224f51970d6a3a18d966662649c1261cb798 (diff)
parenta7e4e341e9eaa06a46480a2494726ff5d03d85a3 (diff)
downloadmonzero-gui-ac2d0ba3b2274a9313c08a3dde6605f87ab2ce5c.tar.gz
monzero-gui-ac2d0ba3b2274a9313c08a3dde6605f87ab2ce5c.tar.xz
monzero-gui-ac2d0ba3b2274a9313c08a3dde6605f87ab2ce5c.zip
Merge pull request #43
a7e4e34 make sure wallet is closed on app close (Jacob Brydolf) a88c031 continue recovering from seed on open if not finished (Jacob Brydolf) 625ae77 wizard: save recovering state (Jacob Brydolf) 06d628b libwalletqt: added isRecovering state (Jacob Brydolf) 1ca4fd2 one more variable fix (Jacob Brydolf)
-rw-r--r--main.qml18
-rw-r--r--src/libwalletqt/Wallet.cpp10
-rw-r--r--src/libwalletqt/Wallet.h4
-rw-r--r--wizard/WizardMain.qml1
-rw-r--r--wizard/WizardRecoveryWallet.qml5
5 files changed, 27 insertions, 11 deletions
diff --git a/main.qml b/main.qml
index bba92f88..5a6bcabb 100644
--- a/main.qml
+++ b/main.qml
@@ -158,7 +158,6 @@ ApplicationWindow {
}
console.log("using wizard wallet")
-
connectWallet(wizard.settings['wallet'])
isNewWallet = true
@@ -183,7 +182,9 @@ ApplicationWindow {
currentWallet.moneySpent.connect(onWalletMoneySent)
currentWallet.moneyReceived.connect(onWalletMoneyReceived)
console.log("initializing with daemon address: ", persistentSettings.daemon_address)
- currentWallet.initAsync(persistentSettings.daemon_address, 0);
+ console.log("Recovering from seed: ", persistentSettings.is_recovering)
+ console.log("restore Height", persistentSettings.restore_height)
+ currentWallet.initAsync(persistentSettings.daemon_address, 0, persistentSettings.is_recovering, persistentSettings.restore_height);
}
function walletPath() {
@@ -244,7 +245,6 @@ ApplicationWindow {
leftPanel.daemonProgress.updateProgress(dCurrentBlock,dTargetBlock);
// Store wallet after first refresh. To prevent broken wallet after a crash
- // TODO: Move this to libwallet?
if(isNewWallet && currentWallet.blockChainHeight() > 0){
currentWallet.store(persistentSettings.wallet_path)
isNewWallet = false
@@ -257,6 +257,11 @@ ApplicationWindow {
walletInitialized = true
}
+ // recovering from seed is finished after first refresh
+ if(persistentSettings.is_recovering) {
+ persistentSettings.is_recovering = false
+ }
+
leftPanel.networkStatus.connected = currentWallet.connected
onWalletUpdate();
@@ -445,7 +450,8 @@ ApplicationWindow {
property bool testnet: true
property string daemon_address: "localhost:38081"
property string payment_id
- property int restore_height:0
+ property int restore_height : 0
+ property bool is_recovering : false
}
// TODO: replace with customized popups
@@ -788,4 +794,8 @@ ApplicationWindow {
}
}
}
+ onClosing: {
+ walletManager.closeWallet(currentWallet);
+ console.log("onClosing called");
+ }
}
diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp
index b52963bc..3c8858b5 100644
--- a/src/libwalletqt/Wallet.cpp
+++ b/src/libwalletqt/Wallet.cpp
@@ -115,13 +115,18 @@ bool Wallet::store(const QString &path)
return m_walletImpl->store(path.toStdString());
}
-bool Wallet::init(const QString &daemonAddress, quint64 upperTransactionLimit)
+bool Wallet::init(const QString &daemonAddress, quint64 upperTransactionLimit, bool isRecovering, quint64 restoreHeight)
{
return m_walletImpl->init(daemonAddress.toStdString(), upperTransactionLimit);
}
-void Wallet::initAsync(const QString &daemonAddress, quint64 upperTransactionLimit)
+void Wallet::initAsync(const QString &daemonAddress, quint64 upperTransactionLimit, bool isRecovering, quint64 restoreHeight)
{
+ if (isRecovering){
+ qDebug() << "RESTORING";
+ m_walletImpl->setRecoveringFromSeed(true);
+ m_walletImpl->setRefreshFromBlockHeight(restoreHeight);
+ }
m_walletImpl->initAsync(daemonAddress.toStdString(), upperTransactionLimit);
}
@@ -263,6 +268,5 @@ Wallet::Wallet(Bitmonero::Wallet *w, QObject *parent)
Wallet::~Wallet()
{
-
Bitmonero::WalletManagerFactory::getWalletManager()->closeWallet(m_walletImpl);
}
diff --git a/src/libwalletqt/Wallet.h b/src/libwalletqt/Wallet.h
index d794550a..6267f411 100644
--- a/src/libwalletqt/Wallet.h
+++ b/src/libwalletqt/Wallet.h
@@ -74,10 +74,10 @@ public:
Q_INVOKABLE bool store(const QString &path);
//! initializes wallet
- Q_INVOKABLE bool init(const QString &daemonAddress, quint64 upperTransactionLimit);
+ Q_INVOKABLE bool init(const QString &daemonAddress, quint64 upperTransactionLimit, bool isRecovering = false, quint64 restoreHeight = 0);
//! initializes wallet asynchronously
- Q_INVOKABLE void initAsync(const QString &daemonAddress, quint64 upperTransactionLimit);
+ Q_INVOKABLE void initAsync(const QString &daemonAddress, quint64 upperTransactionLimit, bool isRecovering = false, quint64 restoreHeight = 0);
//! connects to daemon
Q_INVOKABLE bool connectToDaemon();
diff --git a/wizard/WizardMain.qml b/wizard/WizardMain.qml
index 3168733b..78a8ea06 100644
--- a/wizard/WizardMain.qml
+++ b/wizard/WizardMain.qml
@@ -138,6 +138,7 @@ Rectangle {
appWindow.persistentSettings.daemon_address = settings.daemon_address
appWindow.persistentSettings.testnet = settings.testnet
appWindow.persistentSettings.restore_height = parseInt(settings.restore_height)
+ appWindow.persistentSettings.is_recovering = (settings.is_recovering === undefined)? false : settings.is_recovering
}
diff --git a/wizard/WizardRecoveryWallet.qml b/wizard/WizardRecoveryWallet.qml
index 7f6d87f4..f4c5091e 100644
--- a/wizard/WizardRecoveryWallet.qml
+++ b/wizard/WizardRecoveryWallet.qml
@@ -54,17 +54,18 @@ Item {
settingsObject['account_name'] = uiItem.accountNameText
settingsObject['words'] = Utils.lineBreaksToSpaces(uiItem.wordsTextItem.memoText)
settingsObject['wallet_path'] = uiItem.walletPath
- settingsObject['restoreHeight'] = parseInt(uiItem.restoreHeight)
+ settingsObject['restore_height'] = parseInt(uiItem.restoreHeight)
return recoveryWallet(settingsObject)
}
function recoveryWallet(settingsObject) {
var testnet = appWindow.persistentSettings.testnet;
- var restoreHeight = settingsObject.restoreHeight;
+ var restoreHeight = settingsObject.restore_height;
var wallet = walletManager.recoveryWallet(oshelper.temporaryFilename(), settingsObject.words, testnet, restoreHeight);
var success = wallet.status === Wallet.Status_Ok;
if (success) {
settingsObject['wallet'] = wallet;
+ settingsObject['is_recovering'] = true;
} else {
walletManager.closeWallet(wallet);
}