Added premium grace suggestion to top bar in dialogs.

This commit is contained in:
23rd 2025-04-13 12:18:21 +03:00 committed by John Preston
parent 165cf6809f
commit 69e7c27fd0
2 changed files with 31 additions and 0 deletions

View file

@ -3879,6 +3879,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"lng_dialogs_suggestions_premium_upgrade_about" = "Upgrade to the annual payment plan for Telegram Premium now to get the discount.";
"lng_dialogs_suggestions_premium_restore_title" = "Get Premium back with up to {text} off";
"lng_dialogs_suggestions_premium_restore_about" = "Your Telegram Premium has recently expired. Tap here to extend it.";
"lng_dialogs_suggestions_premium_grace_title" = "⚠️ Your Premium subscription is expiring!";
"lng_dialogs_suggestions_premium_grace_about" = "Dont lose access to exclusive features.";
"lng_dialogs_suggestions_userpics_title" = "Add your photo! 📸";
"lng_dialogs_suggestions_userpics_about" = "Help your friends spot you easily.";

View file

@ -50,6 +50,7 @@ constexpr auto kSugBirthdayContacts = "BIRTHDAY_CONTACTS_TODAY"_cs;
constexpr auto kSugPremiumAnnual = "PREMIUM_ANNUAL"_cs;
constexpr auto kSugPremiumUpgrade = "PREMIUM_UPGRADE"_cs;
constexpr auto kSugPremiumRestore = "PREMIUM_RESTORE"_cs;
constexpr auto kSugPremiumGrace = "PREMIUM_GRACE"_cs;
constexpr auto kSugSetUserpic = "USERPIC_SETUP"_cs;
} // namespace
@ -107,6 +108,34 @@ rpl::producer<Ui::SlideWrap<Ui::RpWidget>*> TopBarSuggestionValue(
using RightIcon = TopBarSuggestionContent::RightIcon;
const auto config = &session->appConfig();
if (session->premiumCanBuy()
&& config->suggestionCurrent(kSugPremiumGrace.utf8())) {
content->setRightIcon(RightIcon::Close);
content->setClickedCallback([=] {
const auto controller = FindSessionController(parent);
if (!controller) {
return;
}
UrlClickHandler::Open(
u"https://t.me/premiumbot?start=status"_q,
QVariant::fromValue(ClickHandlerContext{
.sessionWindow = base::make_weak(controller),
}));
});
content->setHideCallback([=] {
config->dismissSuggestion(kSugPremiumGrace.utf8());
repeat(repeat);
});
content->setContent(
tr::lng_dialogs_suggestions_premium_grace_title(
tr::now,
Ui::Text::Bold),
tr::lng_dialogs_suggestions_premium_grace_about(
tr::now,
TextWithEntities::Simple));
state->desiredWrapToggle.force_assign(
Toggle{ true, anim::type::normal });
return;
} else if (session->premiumCanBuy()
&& config->suggestionCurrent(kSugBirthdayContacts.utf8())) {
session->data().contactBirthdays(
) | rpl::start_with_next(crl::guard(content, [=](