From 89225a9f4160d5db9b326fac05a11b9bd187eaee Mon Sep 17 00:00:00 2001 From: Sander van Grieken Date: Fri, 12 May 2023 10:53:02 +0200 Subject: [PATCH] qml: show result dialog after password change --- electrum/gui/qml/components/WalletDetails.qml | 21 +++++++++++-------- electrum/gui/qml/qedaemon.py | 7 +++---- electrum/gui/qml/qewallet.py | 8 ++++--- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/electrum/gui/qml/components/WalletDetails.qml b/electrum/gui/qml/components/WalletDetails.qml index b8d76bfc6..15a277774 100644 --- a/electrum/gui/qml/components/WalletDetails.qml +++ b/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() } diff --git a/electrum/gui/qml/qedaemon.py b/electrum/gui/qml/qedaemon.py index 037d40d57..093d6a124 100644 --- a/electrum/gui/qml/qedaemon.py +++ b/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): diff --git a/electrum/gui/qml/qewallet.py b/electrum/gui/qml/qewallet.py index 6a07ecc27..a52a67a8b 100644 --- a/electrum/gui/qml/qewallet.py +++ b/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):