From d0911b6a450955b25c8324c81c6e9f32b697addc Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 15 Nov 2024 00:42:02 +0400 Subject: [PATCH] Send to buy premium from miniapps emoji status. --- .../SourceFiles/boxes/premium_preview_box.cpp | 2 +- .../inline_bots/bot_attach_web_view.cpp | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/Telegram/SourceFiles/boxes/premium_preview_box.cpp b/Telegram/SourceFiles/boxes/premium_preview_box.cpp index f163be612..89e0edfed 100644 --- a/Telegram/SourceFiles/boxes/premium_preview_box.cpp +++ b/Telegram/SourceFiles/boxes/premium_preview_box.cpp @@ -77,7 +77,7 @@ bool operator==(const Descriptor &a, const Descriptor &b) { struct Preload { Descriptor descriptor; std::shared_ptr media; - std::weak_ptr show; + std::weak_ptr show; }; [[nodiscard]] std::vector &Preloads() { diff --git a/Telegram/SourceFiles/inline_bots/bot_attach_web_view.cpp b/Telegram/SourceFiles/inline_bots/bot_attach_web_view.cpp index 90a40dbff..e54976e4e 100644 --- a/Telegram/SourceFiles/inline_bots/bot_attach_web_view.cpp +++ b/Telegram/SourceFiles/inline_bots/bot_attach_web_view.cpp @@ -18,6 +18,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "base/timer_rpl.h" #include "base/unixtime.h" #include "boxes/peer_list_controllers.h" +#include "boxes/premium_preview_box.h" #include "boxes/share_box.h" #include "chat_helpers/stickers_lottie.h" #include "chat_helpers/tabbed_panel.h" @@ -514,6 +515,20 @@ std::unique_ptr MakeEmojiSetStatusPreview( return result; } +bool CheckEmojiStatusPremium(not_null bot) { + if (bot->session().premium()) { + return true; + } + const auto window = ChatHelpers::ResolveWindowDefault()( + &bot->session(), + ChatHelpers::WindowUsage::PremiumPromo); + if (window) { + ShowPremiumPreviewBox(window, PremiumFeature::EmojiStatus); + window->window().activate(); + } + return false; +} + void ConfirmEmojiStatusAccessBox( not_null box, not_null bot, @@ -554,6 +569,9 @@ void ConfirmEmojiStatusAccessBox( st::botEmojiStatusText)); box->addButton(tr::lng_bot_emoji_status_access_allow(), [=] { + if (!CheckEmojiStatusPremium(bot)) { + return; + } *set = true; box->closeBox(); done(true); @@ -610,6 +628,9 @@ void ConfirmEmojiStatusBox( object_ptr::fromRaw(ownedSet.release())); box->addButton(tr::lng_bot_emoji_status_confirm(), [=] { + if (!CheckEmojiStatusPremium(bot)) { + return; + } document->owner().emojiStatuses().set( document->id, duration ? (base::unixtime::now() + duration) : 0);