Refactor wallet password dialog

This commit is contained in:
stoffu 2017-11-17 10:16:35 +09:00
parent ac509ed798
commit cec206ec8d
No known key found for this signature in database
GPG Key ID: 41DAB8343A9EC012
2 changed files with 69 additions and 79 deletions

146
main.qml
View File

@ -53,7 +53,7 @@ ApplicationWindow {
property var currentWallet; property var currentWallet;
property var transaction; property var transaction;
property var transactionDescription; property var transactionDescription;
property alias password : passwordDialog.password property var walletPassword
property bool isNewWallet: false property bool isNewWallet: false
property int restoreHeight:0 property int restoreHeight:0
property bool daemonSynced: false property bool daemonSynced: false
@ -166,7 +166,7 @@ ApplicationWindow {
persistentSettings.restore_height = 0 persistentSettings.restore_height = 0
restoreHeight = 0; restoreHeight = 0;
persistentSettings.is_recovering = false persistentSettings.is_recovering = false
appWindow.password = "" walletPassword = ""
fileDialog.open(); fileDialog.open();
} }
@ -226,7 +226,7 @@ ApplicationWindow {
wallet_path = moneroAccountsDir + wallet_path; wallet_path = moneroAccountsDir + wallet_path;
// console.log("opening wallet at: ", wallet_path, "with password: ", appWindow.password); // console.log("opening wallet at: ", wallet_path, "with password: ", appWindow.password);
console.log("opening wallet at: ", wallet_path, ", testnet: ", persistentSettings.testnet); console.log("opening wallet at: ", wallet_path, ", testnet: ", persistentSettings.testnet);
walletManager.openWalletAsync(wallet_path, appWindow.password, walletManager.openWalletAsync(wallet_path, walletPassword,
persistentSettings.testnet); persistentSettings.testnet);
} }
@ -338,25 +338,25 @@ ApplicationWindow {
walletName = usefulName(wallet.path) walletName = usefulName(wallet.path)
console.log(">>> wallet opened: " + wallet) console.log(">>> wallet opened: " + wallet)
if (wallet.status !== Wallet.Status_Ok) { if (wallet.status !== Wallet.Status_Ok) {
if (appWindow.password === '') { passwordDialog.onAcceptedCallback = function() {
console.error("Error opening wallet with empty password: ", wallet.errorString); walletPassword = passwordDialog.password;
console.log("closing wallet async : " + wallet.address) appWindow.initialize();
closeWallet(); }
// try to open wallet with password; passwordDialog.onRejectedCallback = function() {
passwordDialog.open(walletName); walletPassword = "";
} else { //appWindow.enableUI(false)
// opening with password but password doesn't match rootItem.state = "wizard";
console.error("Error opening wallet with password: ", wallet.errorString); }
// opening with password but password doesn't match
informationPopup.title = qsTr("Error") + translationManager.emptyString; console.error("Error opening wallet with password: ", wallet.errorString);
informationPopup.text = qsTr("Couldn't open wallet: ") + wallet.errorString; informationPopup.title = qsTr("Error") + translationManager.emptyString;
informationPopup.icon = StandardIcon.Critical informationPopup.text = qsTr("Couldn't open wallet: ") + wallet.errorString;
console.log("closing wallet async : " + wallet.address) informationPopup.icon = StandardIcon.Critical
closeWallet(); console.log("closing wallet async : " + wallet.address)
informationPopup.open() closeWallet();
informationPopup.onCloseCallback = function() { informationPopup.open()
passwordDialog.open(walletName) informationPopup.onCloseCallback = function() {
} passwordDialog.open(walletName)
} }
return; return;
} }
@ -951,7 +951,14 @@ ApplicationWindow {
rootItem.state = "wizard" rootItem.state = "wizard"
} else { } else {
rootItem.state = "normal" rootItem.state = "normal"
passwordDialog.onAcceptedCallback = function() {
walletPassword = passwordDialog.password;
initialize(persistentSettings); initialize(persistentSettings);
}
passwordDialog.onRejectedCallback = function() {
rootItem.state = "wizard"
}
passwordDialog.open(usefulName(walletPath()))
} }
checkUpdates(); checkUpdates();
@ -1013,8 +1020,8 @@ ApplicationWindow {
id: transactionConfirmationPopup id: transactionConfirmationPopup
onAccepted: { onAccepted: {
close(); close();
transactionConfirmationPasswordDialog.onAcceptedCallback = function() { passwordDialog.onAcceptedCallback = function() {
if(appWindow.password === transactionConfirmationPasswordDialog.password){ if(walletPassword === passwordDialog.password){
// Save transaction to file if view only wallet // Save transaction to file if view only wallet
if(viewOnly) { if(viewOnly) {
saveTxDialog.open(); saveTxDialog.open();
@ -1026,15 +1033,12 @@ ApplicationWindow {
informationPopup.text = qsTr("Wrong password"); informationPopup.text = qsTr("Wrong password");
informationPopup.open() informationPopup.open()
informationPopup.onCloseCallback = function() { informationPopup.onCloseCallback = function() {
transactionConfirmationPasswordDialog.open() passwordDialog.open()
} }
} }
transactionConfirmationPasswordDialog.password = ""
} }
transactionConfirmationPasswordDialog.onRejectedCallback = function() { passwordDialog.onRejectedCallback = null;
transactionConfirmationPasswordDialog.password = "" passwordDialog.open()
}
transactionConfirmationPasswordDialog.open()
} }
} }
@ -1072,7 +1076,15 @@ ApplicationWindow {
console.log(moneroAccountsDir) console.log(moneroAccountsDir)
console.log(fileDialog.fileUrl) console.log(fileDialog.fileUrl)
console.log(persistentSettings.wallet_path) console.log(persistentSettings.wallet_path)
initialize(); passwordDialog.onAcceptedCallback = function() {
walletPassword = passwordDialog.password;
initialize();
}
passwordDialog.onRejectedCallback = function() {
console.log("Canceled")
rootItem.state = "wizard";
}
passwordDialog.open(usefulName(walletPath()));
} }
onRejected: { onRejected: {
console.log("Canceled") console.log("Canceled")
@ -1138,21 +1150,6 @@ ApplicationWindow {
visible: false visible: false
z: parent.z + 1 z: parent.z + 1
anchors.fill: parent anchors.fill: parent
onAccepted: {
appWindow.initialize();
}
onRejected: {
//appWindow.enableUI(false)
rootItem.state = "wizard"
}
}
PasswordDialog {
id: transactionConfirmationPasswordDialog
z: parent.z + 1
visible:false
anchors.fill: parent
property var onAcceptedCallback property var onAcceptedCallback
property var onRejectedCallback property var onRejectedCallback
onAccepted: { onAccepted: {
@ -1165,37 +1162,6 @@ ApplicationWindow {
} }
} }
PasswordDialog {
id: settingsPasswordDialog
z: parent.z + 1
visible:false
anchors.fill: parent
onAccepted: {
if(appWindow.password === settingsPasswordDialog.password){
if(currentWallet.seedLanguage == "") {
console.log("No seed language set. Using English as default");
currentWallet.setSeedLanguage("English");
}
// Load keys page
middlePanel.state = "Keys"
} else {
informationPopup.title = qsTr("Error") + translationManager.emptyString;
informationPopup.text = qsTr("Wrong password");
informationPopup.open()
informationPopup.onCloseCallback = function() {
settingsPasswordDialog.open()
}
}
settingsPasswordDialog.password = ""
}
onRejected: {
appWindow.showPageRequest("Settings");
}
}
DaemonManagerDialog { DaemonManagerDialog {
id: daemonManagerDialog id: daemonManagerDialog
onRejected: { onRejected: {
@ -1278,7 +1244,31 @@ ApplicationWindow {
onMiningClicked: { middlePanel.state = "Mining"; if(isMobile) hideMenu(); updateBalance(); } onMiningClicked: { middlePanel.state = "Mining"; if(isMobile) hideMenu(); updateBalance(); }
onSignClicked: { middlePanel.state = "Sign"; if(isMobile) hideMenu(); updateBalance(); } onSignClicked: { middlePanel.state = "Sign"; if(isMobile) hideMenu(); updateBalance(); }
onSettingsClicked: { middlePanel.state = "Settings"; if(isMobile) hideMenu(); updateBalance(); } onSettingsClicked: { middlePanel.state = "Settings"; if(isMobile) hideMenu(); updateBalance(); }
onKeysClicked: { settingsPasswordDialog.open(); if(isMobile) hideMenu(); updateBalance(); } onKeysClicked: {
passwordDialog.onAcceptedCallback = function() {
if(walletPassword === passwordDialog.password){
if(currentWallet.seedLanguage == "") {
console.log("No seed language set. Using English as default");
currentWallet.setSeedLanguage("English");
}
// Load keys page
middlePanel.state = "Keys"
} else {
informationPopup.title = qsTr("Error") + translationManager.emptyString;
informationPopup.text = qsTr("Wrong password");
informationPopup.open()
informationPopup.onCloseCallback = function() {
passwordDialog.open()
}
}
}
passwordDialog.onRejectedCallback = function() {
appWindow.showPageRequest("Settings");
}
passwordDialog.open();
if(isMobile) hideMenu();
updateBalance();
}
} }
RightPanel { RightPanel {

View File

@ -226,7 +226,7 @@ ColumnLayout {
m_wallet.setPassword(settings.wallet_password); m_wallet.setPassword(settings.wallet_password);
// Store password in session to be able to use password protected functions (e.g show seed) // Store password in session to be able to use password protected functions (e.g show seed)
appWindow.password = settings.wallet_password appWindow.walletPassword = settings.wallet_password
// saving wallet_filename; // saving wallet_filename;
settings['wallet_filename'] = new_wallet_filename; settings['wallet_filename'] = new_wallet_filename;