From 97afb4e01a83881a8836dd1f42cea1252d8776e6 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Fri, 17 Jan 2025 17:55:22 +0300 Subject: [PATCH] Added shortcut to section of public photo settings to self userpic. --- .../settings/settings_privacy_security.cpp | 3 +-- .../ui/controls/userpic_button.cpp | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/Telegram/SourceFiles/settings/settings_privacy_security.cpp b/Telegram/SourceFiles/settings/settings_privacy_security.cpp index 05fe9a236..09ae65ad8 100644 --- a/Telegram/SourceFiles/settings/settings_privacy_security.cpp +++ b/Telegram/SourceFiles/settings/settings_privacy_security.cpp @@ -1022,8 +1022,7 @@ not_null AddPrivacyButton( std::move(label), PrivacyString(session, key), stOverride ? *stOverride : st::settingsButtonNoIcon, - std::move(descriptor) - ); + std::move(descriptor)); button->addClickHandler([=] { *shower = session->api().userPrivacy().value( key diff --git a/Telegram/SourceFiles/ui/controls/userpic_button.cpp b/Telegram/SourceFiles/ui/controls/userpic_button.cpp index cfa9ef02b..c1d2d2187 100644 --- a/Telegram/SourceFiles/ui/controls/userpic_button.cpp +++ b/Telegram/SourceFiles/ui/controls/userpic_button.cpp @@ -7,7 +7,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "ui/controls/userpic_button.h" +#include "apiwrap.h" +#include "api/api_user_privacy.h" #include "base/call_delayed.h" +#include "boxes/edit_privacy_box.h" #include "boxes/peers/edit_peer_info_box.h" // EditPeerInfoBox::Available. #include "ui/effects/ripple_animation.h" #include "ui/empty_userpic.h" @@ -36,6 +39,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "media/streaming/media_streaming_player.h" #include "media/streaming/media_streaming_document.h" #include "settings/settings_calls.h" // Calls::AddCameraSubsection. +#include "settings/settings_privacy_controllers.h" #include "webrtc/webrtc_environment.h" #include "webrtc/webrtc_video_track.h" #include "ui/widgets/popup_menu.h" @@ -405,6 +409,26 @@ void UserpicButton::choosePhotoLocally() { } else { chooseFile(ChosenType::Set); } + if (user && user->isSelf()) { + const auto key = Api::UserPrivacy::Key::ProfilePhoto; + const auto text = tr::lng_edit_privacy_profile_photo_public_set( + tr::now); + user->session().api().userPrivacy().reload(key); + _menu->addAction(std::move(text), [=] { + using namespace Api; + user->session().api().userPrivacy().value( + key + ) | rpl::take( + 1 + ) | rpl::start_with_next([=](const UserPrivacy::Rule &value) { + using namespace Settings; + _window->show(Box( + _window->sessionController(), + std::make_unique(), + value)); + }, _menu->lifetime()); + }, &st::menuIconProfile); + } } _menu->popup(QCursor::pos()); }