From f8c004630f56914438fa1b114530f639748e41c1 Mon Sep 17 00:00:00 2001 From: fiaxh Date: Mon, 16 Sep 2024 22:47:49 +0200 Subject: Add change password functionality Co-authored-by: Stanislav Malishevskiy --- libdino/src/service/registration.vala | 6 ++ main/CMakeLists.txt | 2 + main/data/gresource.xml | 1 + .../account_preferences_subpage.ui | 22 ++++++ .../preferences_window/change_password_dialog.ui | 85 ++++++++++++++++++++++ main/data/preferences_window/preferences_window.ui | 4 +- main/meson.build | 1 + main/src/view_model/preferences_window.vala | 20 +++++ .../account_preferences_subpage.vala | 16 +++- .../preferences_window/change_password_dialog.vala | 66 +++++++++++++++++ .../preferences_window/preferences_window.vala | 2 - .../src/module/xep/0077_in_band_registration.vala | 18 +++++ 12 files changed, 235 insertions(+), 8 deletions(-) create mode 100644 main/data/preferences_window/change_password_dialog.ui create mode 100644 main/src/windows/preferences_window/change_password_dialog.vala diff --git a/libdino/src/service/registration.vala b/libdino/src/service/registration.vala index 4255f322..8a8e75b1 100644 --- a/libdino/src/service/registration.vala +++ b/libdino/src/service/registration.vala @@ -71,6 +71,12 @@ public class Register : StreamInteractionModule, Object{ return ret; } + public async string? change_password(Account account, string new_pw){ + XmppStream stream = stream_interactor.get_stream(account); + if (stream == null) return null; + return (yield stream.get_module(Xep.InBandRegistration.Module.IDENTITY).change_password(stream, account.full_jid, new_pw)).condition; + } + public class ServerAvailabilityReturn { public bool available { get; set; } public TlsCertificateFlags? error_flags { get; set; } diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 13111de8..fe7528cf 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -62,6 +62,7 @@ set(RESOURCE_LIST preferences_window/account_preferences_subpage.ui preferences_window/add_account_dialog.ui + preferences_window/change_password_dialog.ui preferences_window/general_preferences_page.ui preferences_window/preferences_window.ui @@ -241,6 +242,7 @@ SOURCES src/windows/preferences_window/account_preferences_subpage.vala src/windows/preferences_window/accounts_preferences_page.vala src/windows/preferences_window/add_account_dialog.vala + src/windows/preferences_window/change_password_dialog.vala src/windows/preferences_window/encryption_preferences_page.vala src/windows/preferences_window/general_preferences_page.vala src/windows/preferences_window/preferences_window.vala diff --git a/main/data/gresource.xml b/main/data/gresource.xml index 304fa7a4..edceea3e 100644 --- a/main/data/gresource.xml +++ b/main/data/gresource.xml @@ -57,6 +57,7 @@ preferences_window/account_preferences_subpage.ui preferences_window/add_account_dialog.ui + preferences_window/change_password_dialog.ui preferences_window/general_preferences_page.ui preferences_window/preferences_window.ui diff --git a/main/data/preferences_window/account_preferences_subpage.ui b/main/data/preferences_window/account_preferences_subpage.ui index fa273053..a4e0b300 100644 --- a/main/data/preferences_window/account_preferences_subpage.ui +++ b/main/data/preferences_window/account_preferences_subpage.ui @@ -79,6 +79,28 @@ Local alias + + + Password + + + 0.7 + 6 + horizontal + + + ••••• + + + + + go-next-symbolic + + + + + + Connection status diff --git a/main/data/preferences_window/change_password_dialog.ui b/main/data/preferences_window/change_password_dialog.ui new file mode 100644 index 00000000..350d2a2d --- /dev/null +++ b/main/data/preferences_window/change_password_dialog.ui @@ -0,0 +1,85 @@ + + + + + \ No newline at end of file diff --git a/main/data/preferences_window/preferences_window.ui b/main/data/preferences_window/preferences_window.ui index d262dd76..3cf08f77 100644 --- a/main/data/preferences_window/preferences_window.ui +++ b/main/data/preferences_window/preferences_window.ui @@ -3,8 +3,8 @@