diff --git a/Telegram/Resources/icons/settings/premium/tags.png b/Telegram/Resources/icons/settings/premium/tags.png new file mode 100644 index 000000000..77e9f63a1 Binary files /dev/null and b/Telegram/Resources/icons/settings/premium/tags.png differ diff --git a/Telegram/Resources/icons/settings/premium/tags@2x.png b/Telegram/Resources/icons/settings/premium/tags@2x.png new file mode 100644 index 000000000..183760ba7 Binary files /dev/null and b/Telegram/Resources/icons/settings/premium/tags@2x.png differ diff --git a/Telegram/Resources/icons/settings/premium/tags@3x.png b/Telegram/Resources/icons/settings/premium/tags@3x.png new file mode 100644 index 000000000..0e5e12899 Binary files /dev/null and b/Telegram/Resources/icons/settings/premium/tags@3x.png differ diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index b980101e3..64c1f7786 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -2026,6 +2026,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_premium_summary_about_emoji_status" = "Add any of thousands emoji next to your name to display current activity."; "lng_premium_summary_subtitle_infinite_reactions" = "Infinite Reactions"; "lng_premium_summary_about_infinite_reactions" = "React with thousands of emoji — with multiple reactions per message."; +"lng_premium_summary_subtitle_tags_for_messages" = "Tags for Messages"; +"lng_premium_summary_about_tags_for_messages" = "Organize your Saved Messages with tags for quicker access."; "lng_premium_summary_subtitle_premium_stickers" = "Premium Stickers"; "lng_premium_summary_about_premium_stickers" = "Exclusive enlarged stickers featuring additional effects, updated monthly."; "lng_premium_summary_subtitle_animated_emoji" = "Animated Emoji"; diff --git a/Telegram/SourceFiles/boxes/premium_preview_box.cpp b/Telegram/SourceFiles/boxes/premium_preview_box.cpp index 06835d603..8baf8a535 100644 --- a/Telegram/SourceFiles/boxes/premium_preview_box.cpp +++ b/Telegram/SourceFiles/boxes/premium_preview_box.cpp @@ -110,6 +110,8 @@ void PreloadSticker(const std::shared_ptr<Data::DocumentMedia> &media) { return tr::lng_premium_summary_subtitle_emoji_status(); case PremiumPreview::InfiniteReactions: return tr::lng_premium_summary_subtitle_infinite_reactions(); + case PremiumPreview::TagsForMessages: + return tr::lng_premium_summary_subtitle_tags_for_messages(); case PremiumPreview::Stickers: return tr::lng_premium_summary_subtitle_premium_stickers(); case PremiumPreview::AnimatedEmoji: @@ -146,6 +148,8 @@ void PreloadSticker(const std::shared_ptr<Data::DocumentMedia> &media) { return tr::lng_premium_summary_about_emoji_status(); case PremiumPreview::InfiniteReactions: return tr::lng_premium_summary_about_infinite_reactions(); + case PremiumPreview::TagsForMessages: + return tr::lng_premium_summary_about_tags_for_messages(); case PremiumPreview::Stickers: return tr::lng_premium_summary_about_premium_stickers(); case PremiumPreview::AnimatedEmoji: @@ -471,6 +475,7 @@ struct VideoPreviewDocument { return "advanced_chat_management"; case PremiumPreview::EmojiStatus: return "emoji_status"; case PremiumPreview::InfiniteReactions: return "infinite_reactions"; + case PremiumPreview::TagsForMessages: return "saved_tags"; case PremiumPreview::ProfileBadge: return "profile_badge"; case PremiumPreview::AnimatedUserpics: return "animated_userpics"; case PremiumPreview::RealTimeTranslation: return "translations"; diff --git a/Telegram/SourceFiles/boxes/premium_preview_box.h b/Telegram/SourceFiles/boxes/premium_preview_box.h index 60c5699ca..ba6dae46b 100644 --- a/Telegram/SourceFiles/boxes/premium_preview_box.h +++ b/Telegram/SourceFiles/boxes/premium_preview_box.h @@ -61,6 +61,7 @@ enum class PremiumPreview { AnimatedUserpics, RealTimeTranslation, Wallpapers, + TagsForMessages, kCount, }; diff --git a/Telegram/SourceFiles/settings/settings.style b/Telegram/SourceFiles/settings/settings.style index bcf80c232..d61f61738 100644 --- a/Telegram/SourceFiles/settings/settings.style +++ b/Telegram/SourceFiles/settings/settings.style @@ -91,6 +91,7 @@ settingsPremiumIconStar: icon {{ "settings/premium/star", settingsIconFg }}; settingsPremiumIconVoice: icon {{ "settings/premium/voice", settingsIconFg }}; settingsPremiumIconFiles: icon {{ "settings/premium/files", settingsIconFg }}; settingsPremiumIconTranslations: icon {{ "settings/premium/translations", settingsIconFg }}; +settingsPremiumIconTags: icon {{ "settings/premium/tags", settingsIconFg }}; settingsStoriesIconOrder: icon {{ "settings/premium/stories_order", premiumButtonBg1 }}; settingsStoriesIconStealth: icon {{ "menu/stealth", premiumButtonBg1 }}; diff --git a/Telegram/SourceFiles/settings/settings_premium.cpp b/Telegram/SourceFiles/settings/settings_premium.cpp index 646829d59..337f413ac 100644 --- a/Telegram/SourceFiles/settings/settings_premium.cpp +++ b/Telegram/SourceFiles/settings/settings_premium.cpp @@ -185,6 +185,7 @@ using Order = std::vector<QString>; u"voice_to_text"_q, u"no_ads"_q, u"emoji_status"_q, + u"saved_tags"_q, u"infinite_reactions"_q, u"premium_stickers"_q, u"animated_emoji"_q, @@ -197,6 +198,16 @@ using Order = std::vector<QString>; [[nodiscard]] base::flat_map<QString, Entry> EntryMap() { return base::flat_map<QString, Entry>{ + { + u"saved_tags"_q, + Entry{ + &st::settingsPremiumIconTags, + tr::lng_premium_summary_subtitle_tags_for_messages(), + tr::lng_premium_summary_about_tags_for_messages(), + PremiumPreview::TagsForMessages, + true, + }, + }, { u"wallpapers"_q, Entry{ @@ -204,7 +215,6 @@ using Order = std::vector<QString>; tr::lng_premium_summary_subtitle_wallpapers(), tr::lng_premium_summary_about_wallpapers(), PremiumPreview::Wallpapers, - true, }, }, { @@ -1510,6 +1520,8 @@ not_null<Ui::GradientButton*> CreateSubscribeButton( return PremiumPreview::EmojiStatus; } else if (s == u"infinite_reactions"_q) { return PremiumPreview::InfiniteReactions; + } else if (s == u"saved_tags"_q) { + return PremiumPreview::TagsForMessages; } else if (s == u"premium_stickers"_q) { return PremiumPreview::Stickers; } else if (s == u"animated_emoji"_q) { diff --git a/Telegram/SourceFiles/window/section_widget.cpp b/Telegram/SourceFiles/window/section_widget.cpp index f9b2a5a39..2600fae5a 100644 --- a/Telegram/SourceFiles/window/section_widget.cpp +++ b/Telegram/SourceFiles/window/section_widget.cpp @@ -530,12 +530,8 @@ bool ShowReactPremiumError( || item->history()->peer->isBroadcast()) { return false; } else if (item->reactionsAreTags()) { - const auto &list = controller->session().data().reactions().list( - Data::Reactions::Type::Tags); - const auto i = ranges::find(list, id, &Data::Reaction::id); - if (i != end(list)) { - return false; - } + ShowPremiumPreviewBox(controller, PremiumPreview::TagsForMessages); + return true; } else if (!id.custom()) { return false; }