From e90642f3a0785f14f3e60a73531ccf8636e124ba Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 30 May 2023 18:41:02 +0400 Subject: [PATCH] Add bio privacy section. --- Telegram/Resources/langs/lang.strings | 9 +++++ .../settings/settings_privacy_controllers.cpp | 35 +++++++++++++++++++ .../settings/settings_privacy_controllers.h | 17 +++++++++ .../settings/settings_privacy_security.cpp | 5 +++ 4 files changed, 66 insertions(+) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 7fa025d38..460d20418 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -584,6 +584,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_settings_forwards_privacy" = "Forwarded messages"; "lng_settings_profile_photo_privacy" = "Profile photo"; "lng_settings_voices_privacy" = "Voice messages"; +"lng_settings_bio_privacy" = "Bio"; "lng_settings_privacy_premium" = "Only subscribers of {link} can restrict receiving voice messages."; "lng_settings_privacy_premium_link" = "Telegram Premium"; "lng_settings_passcode_disable" = "Disable Passcode"; @@ -999,6 +1000,14 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_edit_privacy_groups_always_title" = "Always allow"; "lng_edit_privacy_groups_never_title" = "Never allow"; +"lng_edit_privacy_about_title" = "Bio privacy settings"; +"lng_edit_privacy_about_header" = "Who can see my bio"; +"lng_edit_privacy_about_always_empty" = "Always allow"; +"lng_edit_privacy_about_never_empty" = "Never allow"; +"lng_edit_privacy_about_exceptions" = "These users will or will not be able to see your profile bio regardless of the settings above."; +"lng_edit_privacy_about_always_title" = "Always allow"; +"lng_edit_privacy_about_never_title" = "Never allow"; + "lng_edit_privacy_calls_title" = "Voice calls privacy"; "lng_edit_privacy_calls_header" = "Who can call you"; "lng_edit_privacy_calls_always_empty" = "Always allow"; diff --git a/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp b/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp index 9468c13f2..8f6b00900 100644 --- a/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp +++ b/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp @@ -1284,4 +1284,39 @@ auto VoicesPrivacyController::exceptionsDescription() const return tr::lng_edit_privacy_voices_exceptions(); } +UserPrivacy::Key AboutPrivacyController::key() const { + return Key::About; +} + +rpl::producer AboutPrivacyController::title() const { + return tr::lng_edit_privacy_about_title(); +} + +rpl::producer AboutPrivacyController::optionsTitleKey() const { + return tr::lng_edit_privacy_about_header(); +} + +rpl::producer AboutPrivacyController::exceptionButtonTextKey( + Exception exception) const { + switch (exception) { + case Exception::Always: return tr::lng_edit_privacy_about_always_empty(); + case Exception::Never: return tr::lng_edit_privacy_about_never_empty(); + } + Unexpected("Invalid exception value."); +} + +rpl::producer AboutPrivacyController::exceptionBoxTitle( + Exception exception) const { + switch (exception) { + case Exception::Always: return tr::lng_edit_privacy_about_always_title(); + case Exception::Never: return tr::lng_edit_privacy_about_never_title(); + } + Unexpected("Invalid exception value."); +} + +auto AboutPrivacyController::exceptionsDescription() const +-> rpl::producer { + return tr::lng_edit_privacy_about_exceptions(); +} + } // namespace Settings diff --git a/Telegram/SourceFiles/settings/settings_privacy_controllers.h b/Telegram/SourceFiles/settings/settings_privacy_controllers.h index 3aa1e36d2..d6f57b9db 100644 --- a/Telegram/SourceFiles/settings/settings_privacy_controllers.h +++ b/Telegram/SourceFiles/settings/settings_privacy_controllers.h @@ -270,4 +270,21 @@ private: }; +class AboutPrivacyController final : public EditPrivacyController { +public: + using Option = EditPrivacyBox::Option; + using Exception = EditPrivacyBox::Exception; + + Key key() const override; + + rpl::producer title() const override; + rpl::producer optionsTitleKey() const override; + rpl::producer exceptionButtonTextKey( + Exception exception) const override; + rpl::producer exceptionBoxTitle( + Exception exception) const override; + rpl::producer exceptionsDescription() const override; + +}; + } // namespace Settings diff --git a/Telegram/SourceFiles/settings/settings_privacy_security.cpp b/Telegram/SourceFiles/settings/settings_privacy_security.cpp index 164bb4443..7b8b3e73c 100644 --- a/Telegram/SourceFiles/settings/settings_privacy_security.cpp +++ b/Telegram/SourceFiles/settings/settings_privacy_security.cpp @@ -310,6 +310,11 @@ void SetupPrivacy( { &st::settingsPremiumIconVoice, kIconRed }, Key::Voices, [=] { return std::make_unique(session); }); + add( + tr::lng_settings_bio_privacy(), + { &st::settingsIconAccount, kIconDarkOrange }, + Key::About, + [] { return std::make_unique(); }); session->api().userPrivacy().reload(Api::UserPrivacy::Key::AddedByPhone);