From fbfe3fd5ed71a06594cd70ca7d7f3be26b7e6252 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sat, 5 Apr 2025 20:33:28 +0300 Subject: [PATCH] Added suggestion for upgrade to premium to top bar in dialogs. --- Telegram/Resources/langs/lang.strings | 2 ++ .../dialogs/dialogs_top_bar_suggestion.cpp | 32 ++++++++++++------- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 0f859e7465..52c8ef178f 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -3867,6 +3867,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_dialogs_suggestions_birthday_about" = "Let your contacts know when you’re celebrating."; "lng_dialogs_suggestions_premium_annual_title" = "Telegram Premium with a {text} discount"; "lng_dialogs_suggestions_premium_annual_about" = "Sign up for the annual payment plan for Telegram Premium now to get the discount."; +"lng_dialogs_suggestions_premium_upgrade_title" = "Telegram Premium with a {text} discount"; +"lng_dialogs_suggestions_premium_upgrade_about" = "Upgrade to the annual payment plan for Telegram Premium now to get the discount."; "lng_about_random" = "Send a {emoji} emoji to any chat to try your luck."; "lng_about_random_send" = "Send"; diff --git a/Telegram/SourceFiles/dialogs/dialogs_top_bar_suggestion.cpp b/Telegram/SourceFiles/dialogs/dialogs_top_bar_suggestion.cpp index f810364acd..4d1c62f601 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_top_bar_suggestion.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_top_bar_suggestion.cpp @@ -36,6 +36,7 @@ namespace { constexpr auto kSugSetBirthday = "BIRTHDAY_SETUP"_cs; constexpr auto kSugPremiumAnnual = "PREMIUM_ANNUAL"_cs; +constexpr auto kSugPremiumUpgrade = "PREMIUM_UPGRADE"_cs; } // namespace @@ -76,7 +77,8 @@ rpl::producer*> TopBarSuggestionValue( const auto content = state->content; const auto wrap = state->wrap; using RightIcon = TopBarSuggestionContent::RightIcon; - if (session->appConfig().suggestionCurrent(kSugSetBirthday.utf8()) + const auto config = &session->appConfig(); + if (config->suggestionCurrent(kSugSetBirthday.utf8()) && !Data::IsBirthdayToday(session->user()->birthday())) { content->setRightIcon(RightIcon::Close); content->setClickedCallback([=] { @@ -101,8 +103,7 @@ rpl::producer*> TopBarSuggestionValue( }); }); content->setHideCallback([=] { - session->appConfig().dismissSuggestion( - kSugSetBirthday.utf8()); + config->dismissSuggestion(kSugSetBirthday.utf8()); repeat(repeat); }); content->setContent( @@ -113,31 +114,38 @@ rpl::producer*> TopBarSuggestionValue( tr::now, TextWithEntities::Simple)); wrap->toggle(true, anim::type::normal); - } else if (session->premiumPossible() + } else if (const auto isAnnual = config->suggestionCurrent( + kSugPremiumUpgrade.utf8()); + session->premiumPossible() && !session->premium() - && session->appConfig().suggestionCurrent( - kSugPremiumAnnual.utf8())) { + && (isAnnual + || config->suggestionCurrent(kSugPremiumAnnual.utf8()))) { content->setRightIcon(RightIcon::Arrow); const auto api = &session->api().premium(); const auto set = [=](QString discount) { constexpr auto kMinus = QChar(0x2212); + const auto &title = isAnnual + ? tr::lng_dialogs_suggestions_premium_annual_title + : tr::lng_dialogs_suggestions_premium_upgrade_title; + const auto &description = isAnnual + ? tr::lng_dialogs_suggestions_premium_annual_about + : tr::lng_dialogs_suggestions_premium_upgrade_about; content->setContent( - tr::lng_dialogs_suggestions_premium_annual_title( + title( tr::now, lt_text, { discount.replace(kMinus, QChar()) }, Ui::Text::Bold), - tr::lng_dialogs_suggestions_premium_annual_about( - tr::now, - TextWithEntities::Simple)); + description(tr::now, TextWithEntities::Simple)); content->setClickedCallback([=] { const auto controller = FindSessionController(parent); if (!controller) { return; } Settings::ShowPremium(controller, "dialogs_hint"); - session->appConfig().dismissSuggestion( - kSugPremiumAnnual.utf8()); + config->dismissSuggestion(isAnnual + ? kSugPremiumAnnual.utf8() + : kSugPremiumUpgrade.utf8()); repeat(repeat); }); wrap->toggle(true, anim::type::normal);