From 3d180d00958c30e9e560a9aacf09bf43a4d057da Mon Sep 17 00:00:00 2001 From: Melvin Keskin Date: Fri, 11 Sep 2020 21:22:54 +0200 Subject: [PATCH] Refactor password changing * Move showing passive notifications out of RegistrationManager * RegistrationManager: Move signal calls --- src/Kaidan.h | 6 ++++-- src/RegistrationManager.cpp | 14 +++----------- src/qml/settings/ChangePassword.qml | 25 +++++++++++++------------ 3 files changed, 20 insertions(+), 25 deletions(-) diff --git a/src/Kaidan.h b/src/Kaidan.h index 074442da..6f8f3b72 100644 --- a/src/Kaidan.h +++ b/src/Kaidan.h @@ -419,9 +419,11 @@ signals: void passwordChangeSucceeded(); /** - * Emitted, when changing the password has failed. + * Emitted when changing the user's password failed. + * + * @param errorMessage message describing the error */ - void passwordChangeFailed(); + void passwordChangeFailed(const QString &errorMessage); /** * Emitted, when a contact was muted/unmuted. diff --git a/src/RegistrationManager.cpp b/src/RegistrationManager.cpp index a16b4e89..f14a6104 100644 --- a/src/RegistrationManager.cpp +++ b/src/RegistrationManager.cpp @@ -69,12 +69,7 @@ RegistrationManager::RegistrationManager(ClientWorker *clientWorker, QXmppClient connect(m_manager, &QXmppRegistrationManager::accountDeletionFailed, m_clientWorker, &ClientWorker::handleAccountDeletionFromServerFailed); connect(m_manager, &QXmppRegistrationManager::accountDeleted, m_clientWorker, &ClientWorker::handleAccountDeletedFromServer); - connect(m_manager, &QXmppRegistrationManager::passwordChanged, Kaidan::instance(), &Kaidan::setPassword); - - connect(m_manager, &QXmppRegistrationManager::passwordChanged, Kaidan::instance(), &Kaidan::passwordChangeSucceeded); connect(m_manager, &QXmppRegistrationManager::passwordChanged, this, &RegistrationManager::handlePasswordChangeSucceeded); - - connect(m_manager, &QXmppRegistrationManager::passwordChangeFailed, Kaidan::instance(), &Kaidan::passwordChangeFailed); connect(m_manager, &QXmppRegistrationManager::passwordChangeFailed, this, &RegistrationManager::handlePasswordChangeFailed); } @@ -123,16 +118,13 @@ void RegistrationManager::handlePasswordChangeSucceeded(const QString &newPasswo QString::fromUtf8(newPassword.toUtf8().toBase64()) ); - emit Kaidan::instance()->passiveNotificationRequested( - tr("Password changed successfully.") - ); + QMetaObject::invokeMethod(Kaidan::instance(), "setPassword", Q_ARG(QString, newPassword)); + emit Kaidan::instance()->passwordChangeSucceeded(); } void RegistrationManager::handlePasswordChangeFailed(const QXmppStanza::Error &error) { - emit Kaidan::instance()->passiveNotificationRequested( - tr("Failed to change password: %1").arg(error.text()) - ); + emit Kaidan::instance()->passwordChangeFailed(error.text()); } void RegistrationManager::handleRegistrationFormReceived(const QXmppRegisterIq &iq) diff --git a/src/qml/settings/ChangePassword.qml b/src/qml/settings/ChangePassword.qml index ae701e14..c42b4be5 100644 --- a/src/qml/settings/ChangePassword.qml +++ b/src/qml/settings/ChangePassword.qml @@ -50,6 +50,7 @@ Kirigami.Page { ColumnLayout { id: content + visible: !busyIndicator.visible anchors.fill: parent spacing: 0 @@ -140,24 +141,24 @@ Kirigami.Page { } Kaidan.changePassword(password1.text) - content.visible = false busyIndicator.visible = true } } } } - function handleChangeResult() { - busyIndicator.visible = false - stack.pop() - } + Connections { + target: Kaidan - Component.onCompleted: { - Kaidan.passwordChangeSucceeded.connect(handleChangeResult) - Kaidan.passwordChangeFailed.connect(handleChangeResult) - } - Component.onDestruction: { - Kaidan.passwordChangeSucceeded.disconnect(handleChangeResult) - Kaidan.passwordChangeFailed.disconnect(handleChangeResult) + onPasswordChangeSucceeded: { + busyIndicator.visible = false + passiveNotification(qsTr("Password changed successfully")) + stack.pop() + } + + onPasswordChangeFailed: { + busyIndicator.visible = false + passiveNotification(qsTr("Failed to change password: %1").arg(errorMessage)) + } } } -- GitLab