Browse Source

qml: show result dialog after password change

master
Sander van Grieken 3 years ago
parent
commit
89225a9f41
  1. 21
      electrum/gui/qml/components/WalletDetails.qml
  2. 7
      electrum/gui/qml/qedaemon.py
  3. 8
      electrum/gui/qml/qewallet.py

21
electrum/gui/qml/components/WalletDetails.qml

@ -450,14 +450,12 @@ Pane {
infotext: qsTr('If you forget your password, you\'ll need to restore from seed. Please make sure you have your seed stored safely')
})
dialog.accepted.connect(function() {
Daemon.setPassword(dialog.password)
})
dialog.open()
}
function onPasswordChangeFailed() {
var dialog = app.messageDialog.createObject(app, {
title: qsTr('Error'),
text: qsTr('Password change failed')
var success = Daemon.setPassword(dialog.password)
var done_dialog = app.messageDialog.createObject(app, {
title: success ? qsTr('Success') : qsTr('Error'),
text: success ? qsTr('Password changed') : qsTr('Password change failed')
})
done_dialog.open()
})
dialog.open()
}
@ -501,7 +499,12 @@ Pane {
infotext: qsTr('If you forget your password, you\'ll need to restore from seed. Please make sure you have your seed stored safely')
})
dialog.accepted.connect(function() {
Daemon.currentWallet.setPassword(dialog.password)
var success = Daemon.currentWallet.setPassword(dialog.password)
var done_dialog = app.messageDialog.createObject(app, {
title: success ? qsTr('Success') : qsTr('Error'),
text: success ? qsTr('Password changed') : qsTr('Password change failed')
})
done_dialog.open()
})
dialog.open()
}

7
electrum/gui/qml/qedaemon.py

@ -128,7 +128,6 @@ class QEDaemon(AuthMixin, QObject):
newWalletWizardChanged = pyqtSignal()
serverConnectWizardChanged = pyqtSignal()
loadingChanged = pyqtSignal()
passwordChangeFailed = pyqtSignal()
requestNewPassword = pyqtSignal()
walletLoaded = pyqtSignal([str,str], arguments=['name','path'])
@ -322,14 +321,14 @@ class QEDaemon(AuthMixin, QObject):
else:
self.currentWallet.requestNewPassword.emit()
@pyqtSlot(str)
@pyqtSlot(str, result=bool)
def setPassword(self, password):
assert self._use_single_password
assert password
if not self.daemon.update_password_for_directory(old_password=self._password, new_password=password):
self.passwordChangeFailed.emit()
return
return False
self._password = password
return True
@pyqtProperty(QENewWalletWizard, notify=newWalletWizardChanged)
def newWalletWizard(self):

8
electrum/gui/qml/qewallet.py

@ -673,7 +673,7 @@ class QEWallet(AuthMixin, QObject, QtEventListener):
except InvalidPassword as e:
return False
@pyqtSlot(str)
@pyqtSlot(str, result=bool)
def setPassword(self, password):
if password == '':
password = None
@ -682,16 +682,18 @@ class QEWallet(AuthMixin, QObject, QtEventListener):
# HW wallet not supported yet
if storage.is_encrypted_with_hw_device():
return
return False
current_password = self.password if self.password != '' else None
try:
self._logger.info(f'PW change from {current_password} to {password}')
self._logger.info('setting new password')
self.wallet.update_password(current_password, password, encrypt_storage=True)
self.password = password
return True
except InvalidPassword as e:
self._logger.exception(repr(e))
return False
@pyqtSlot(str)
def importAddresses(self, addresslist):

Loading…
Cancel
Save