From 48e3802565755be6ad2b1903823525f11590a933 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Tue, 28 May 2024 16:42:26 +0300 Subject: [PATCH] Improved labels for channel and group types with restricted content. --- Telegram/Resources/langs/lang.strings | 2 ++ .../boxes/peers/edit_peer_info_box.cpp | 25 ++++++++++++++----- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index d0a709c6d..848496650 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -1522,8 +1522,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_manage_peer_link_invite" = "Invite link"; "lng_manage_peer_link_expired" = "Expired link"; "lng_manage_private_group_title" = "Private"; +"lng_manage_private_group_noforwards_title" = "Private restricted"; "lng_manage_public_group_title" = "Public"; "lng_manage_private_peer_title" = "Private"; +"lng_manage_private_peer_noforwards_title" = "Private restricted"; "lng_manage_public_peer_title" = "Public"; "lng_manage_peer_send_title" = "Who can send new messages?"; "lng_manage_peer_send_only_members" = "Only members"; diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_info_box.cpp b/Telegram/SourceFiles/boxes/peers/edit_peer_info_box.cpp index c79ef325d..99427aca0 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_info_box.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_info_box.cpp @@ -415,7 +415,12 @@ private: std::deque> _saveStagesQueue; Saving _savingData; - const rpl::event_stream _privacyTypeUpdates; + struct PrivacyAndForwards { + Privacy privacy; + bool noForwards = false; + }; + + const rpl::event_stream _privacyTypeUpdates; const rpl::event_stream _linkedChatUpdates; mtpRequestId _linkedChatsRequestId = 0; @@ -761,7 +766,7 @@ void Controller::refreshHistoryVisibility() { void Controller::showEditPeerTypeBox( std::optional> error) { const auto boxCallback = crl::guard(this, [=](EditPeerTypeData data) { - _privacyTypeUpdates.fire_copy(data.privacy); + _privacyTypeUpdates.fire({ data.privacy, data.noForwards }); _typeDataSavedValue = data; refreshHistoryVisibility(); }); @@ -882,7 +887,8 @@ void Controller::fillPrivacyTypeButton() { ? tr::lng_manage_peer_group_type : tr::lng_manage_peer_channel_type)(), _privacyTypeUpdates.events( - ) | rpl::map([=](Privacy flag) { + ) | rpl::map([=](PrivacyAndForwards data) { + const auto flag = data.privacy; if (flag == Privacy::HasUsername) { _peer->session().api().usernames().requestToCache(_peer); } @@ -894,14 +900,21 @@ void Controller::fillPrivacyTypeButton() { : tr::lng_manage_public_peer_title)() : (hasLocation ? tr::lng_manage_peer_link_invite - : isGroup + : ((!data.noForwards) && isGroup) ? tr::lng_manage_private_group_title - : tr::lng_manage_private_peer_title)(); + : ((!data.noForwards) && !isGroup) + ? tr::lng_manage_private_peer_title + : isGroup + ? tr::lng_manage_private_group_noforwards_title + : tr::lng_manage_private_peer_noforwards_title)(); }) | rpl::flatten_latest(), [=] { showEditPeerTypeBox(); }, { &st::menuIconCustomize }); - _privacyTypeUpdates.fire_copy(_typeDataSavedValue->privacy); + _privacyTypeUpdates.fire_copy({ + _typeDataSavedValue->privacy, + _typeDataSavedValue->noForwards, + }); } void Controller::fillLinkedChatButton() {