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') 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() { dialog.accepted.connect(function() {
Daemon.setPassword(dialog.password) var success = Daemon.setPassword(dialog.password)
}) var done_dialog = app.messageDialog.createObject(app, {
dialog.open() title: success ? qsTr('Success') : qsTr('Error'),
} text: success ? qsTr('Password changed') : qsTr('Password change failed')
function onPasswordChangeFailed() { })
var dialog = app.messageDialog.createObject(app, { done_dialog.open()
title: qsTr('Error'),
text: qsTr('Password change failed')
}) })
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') 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() { 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() dialog.open()
} }

7
electrum/gui/qml/qedaemon.py

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

8
electrum/gui/qml/qewallet.py

@ -673,7 +673,7 @@ class QEWallet(AuthMixin, QObject, QtEventListener):
except InvalidPassword as e: except InvalidPassword as e:
return False return False
@pyqtSlot(str) @pyqtSlot(str, result=bool)
def setPassword(self, password): def setPassword(self, password):
if password == '': if password == '':
password = None password = None
@ -682,16 +682,18 @@ class QEWallet(AuthMixin, QObject, QtEventListener):
# HW wallet not supported yet # HW wallet not supported yet
if storage.is_encrypted_with_hw_device(): if storage.is_encrypted_with_hw_device():
return return False
current_password = self.password if self.password != '' else None current_password = self.password if self.password != '' else None
try: 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.wallet.update_password(current_password, password, encrypt_storage=True)
self.password = password self.password = password
return True
except InvalidPassword as e: except InvalidPassword as e:
self._logger.exception(repr(e)) self._logger.exception(repr(e))
return False
@pyqtSlot(str) @pyqtSlot(str)
def importAddresses(self, addresslist): def importAddresses(self, addresslist):

Loading…
Cancel
Save