From 3621dc754ac38d342f4f0adf16494e7d04bb3d36 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 19 Feb 2026 22:40:35 +0400 Subject: [PATCH] Add premium promo for disable sharing. --- Telegram/Resources/langs/lang.strings | 2 ++ Telegram/SourceFiles/boxes/premium_preview_box.cpp | 5 +++++ Telegram/SourceFiles/boxes/premium_preview_box.h | 1 + .../settings/sections/settings_premium.cpp | 13 +++++++++++++ Telegram/SourceFiles/settings/settings.style | 1 + Telegram/SourceFiles/window/window_peer_menu.cpp | 4 ++-- 6 files changed, 24 insertions(+), 2 deletions(-) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 1d47d2aebd..2f615cd775 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -2938,6 +2938,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_premium_summary_about_peer_colors" = "Choose a color and logo for your profile and replies to your messages."; "lng_premium_summary_subtitle_gifts" = "Telegram Gifts"; "lng_premium_summary_about_gifts" = "Gifts are collectible items you can trade or showcase on your profile."; +"lng_premium_summary_subtitle_no_forwards" = "Disable Sharing"; +"lng_premium_summary_about_no_forwards" = "Restrict forwarding, copying, and saving content from your private chats."; "lng_premium_summary_bottom_subtitle" = "About Telegram Premium"; "lng_premium_summary_bottom_about" = "While the free version of Telegram already gives its users more than any other messaging application, **Telegram Premium** pushes its capabilities even further.\n\n**Telegram Premium** is a paid option, because most Premium Features require additional expenses from Telegram to third parties such as data center providers and server manufacturers. Contributions from **Telegram Premium** users allow us to cover such costs and also help Telegram stay free for everyone."; "lng_premium_summary_button" = "Subscribe for {cost} per month"; diff --git a/Telegram/SourceFiles/boxes/premium_preview_box.cpp b/Telegram/SourceFiles/boxes/premium_preview_box.cpp index fe23e31a6d..59ce2da496 100644 --- a/Telegram/SourceFiles/boxes/premium_preview_box.cpp +++ b/Telegram/SourceFiles/boxes/premium_preview_box.cpp @@ -144,6 +144,8 @@ void PreloadSticker(const std::shared_ptr &media) { return tr::lng_premium_summary_subtitle_peer_colors(); case PremiumFeature::Gifts: return tr::lng_premium_summary_subtitle_gifts(); + case PremiumFeature::NoForwards: + return tr::lng_premium_summary_subtitle_no_forwards(); case PremiumFeature::BusinessLocation: return tr::lng_business_subtitle_location(); @@ -215,6 +217,8 @@ void PreloadSticker(const std::shared_ptr &media) { return tr::lng_premium_summary_about_peer_colors(); case PremiumFeature::Gifts: return tr::lng_premium_summary_about_gifts(); + case PremiumFeature::NoForwards: + return tr::lng_premium_summary_about_no_forwards(); case PremiumFeature::BusinessLocation: return tr::lng_business_about_location(); @@ -558,6 +562,7 @@ struct VideoPreviewDocument { case PremiumFeature::TodoLists: return "todo"; case PremiumFeature::PeerColors: return "peer_colors"; case PremiumFeature::Gifts: return "gifts"; + case PremiumFeature::NoForwards: return "no_forwards"; case PremiumFeature::BusinessLocation: return "business_location"; case PremiumFeature::BusinessHours: return "business_hours"; diff --git a/Telegram/SourceFiles/boxes/premium_preview_box.h b/Telegram/SourceFiles/boxes/premium_preview_box.h index 0f64a0eaed..cb3944a4ed 100644 --- a/Telegram/SourceFiles/boxes/premium_preview_box.h +++ b/Telegram/SourceFiles/boxes/premium_preview_box.h @@ -75,6 +75,7 @@ enum class PremiumFeature { TodoLists, PeerColors, Gifts, + NoForwards, // Business features. BusinessLocation, diff --git a/Telegram/SourceFiles/settings/sections/settings_premium.cpp b/Telegram/SourceFiles/settings/sections/settings_premium.cpp index be0872633c..7e708fa586 100644 --- a/Telegram/SourceFiles/settings/sections/settings_premium.cpp +++ b/Telegram/SourceFiles/settings/sections/settings_premium.cpp @@ -460,6 +460,15 @@ using Order = std::vector; true, }, }, + { + u"no_forwards"_q, + Entry{ + &st::settingsPremiumIconNoForwards, + tr::lng_premium_summary_subtitle_no_forwards(), + tr::lng_premium_summary_about_no_forwards(), + PremiumFeature::NoForwards, + }, + }, }; } @@ -1021,6 +1030,8 @@ void TopBarWithSticker::resizeEvent(QResizeEvent *e) { return tr::lng_premium_summary_subtitle_effects(tr::now); } else if (key == u"todo"_q) { return tr::lng_premium_summary_subtitle_todo_lists(tr::now); + } else if (key == u"no_forwards"_q) { + return tr::lng_premium_summary_subtitle_no_forwards(tr::now); } return QString(); } @@ -2097,6 +2108,8 @@ std::vector PremiumFeaturesOrder( return PremiumFeature::PeerColors; } else if (s == u"gifts"_q) { return PremiumFeature::Gifts; + } else if (s == u"no_forwards"_q) { + return PremiumFeature::NoForwards; } return PremiumFeature::kCount; }) | ranges::views::filter([](PremiumFeature type) { diff --git a/Telegram/SourceFiles/settings/settings.style b/Telegram/SourceFiles/settings/settings.style index 2f353d940b..3a09c5a0b3 100644 --- a/Telegram/SourceFiles/settings/settings.style +++ b/Telegram/SourceFiles/settings/settings.style @@ -105,6 +105,7 @@ settingsPremiumIconBusiness: icon {{ "settings/premium/market", settingsIconFg } settingsPremiumIconEffects: icon {{ "settings/premium/effects", settingsIconFg }}; settingsPremiumIconChecklist: icon {{ "settings/premium/checklist", settingsIconFg }}; settingsPremiumIconPeerColors: icon {{ "settings/premium/peer_colors-24x24", settingsIconFg }}; +settingsPremiumIconNoForwards: icon {{ "menu/share_off-24x24", settingsIconFg }}; settingsStoriesIconOrder: icon {{ "settings/premium/stories_order", premiumButtonBg1 }}; settingsStoriesIconStealth: icon {{ "menu/stealth", premiumButtonBg1 }}; diff --git a/Telegram/SourceFiles/window/window_peer_menu.cpp b/Telegram/SourceFiles/window/window_peer_menu.cpp index e6362d43e7..ae1f6b8d38 100644 --- a/Telegram/SourceFiles/window/window_peer_menu.cpp +++ b/Telegram/SourceFiles/window/window_peer_menu.cpp @@ -1410,7 +1410,7 @@ void ShowDisableSharingBox( toggleNoForwards(true); box->closeBox(); } else { - Settings::ShowPremium(controller, u"no_forwards"_q); + ShowPremiumPreviewBox(controller, PremiumFeature::NoForwards); } }); button->setText( @@ -1473,7 +1473,7 @@ void Filler::addToggleNoForwards() { if (peer->session().premium()) { toggleNoForwards(true); } else { - Settings::ShowPremium(controller, u"no_forwards"_q); + ShowPremiumPreviewBox(controller, PremiumFeature::NoForwards); } return; }