From a6bc6c877e461aac744e235d107c3095d4c9e2a3 Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 7 Jun 2022 12:41:10 +0400 Subject: [PATCH] Add subscribed-to-premium toast. --- Telegram/Resources/langs/lang.strings | 2 ++ .../window/window_session_controller.cpp | 26 +++++++++++++++++++ .../window/window_session_controller.h | 3 +++ 3 files changed, 31 insertions(+) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 6ab0a9ebc..d087532b5 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -1701,6 +1701,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "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"; +"lng_premium_success" = "You've successfully subscribed to Telegram Premium!"; + "lng_accounts_limit_title" = "Limit Reached"; "lng_accounts_limit1#one" = "You have reached the limit of **{count}** connected accounts."; "lng_accounts_limit1#other" = "You have reached the limit of **{count}** connected accounts."; diff --git a/Telegram/SourceFiles/window/window_session_controller.cpp b/Telegram/SourceFiles/window/window_session_controller.cpp index 39cddeba1..68ed7c4e8 100644 --- a/Telegram/SourceFiles/window/window_session_controller.cpp +++ b/Telegram/SourceFiles/window/window_session_controller.cpp @@ -40,6 +40,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_changes.h" #include "data/data_group_call.h" #include "data/data_chat_filters.h" +#include "data/data_peer_values.h" #include "passport/passport_form_controller.h" #include "chat_helpers/tabbed_selector.h" #include "chat_helpers/emoji_interactions.h" @@ -665,6 +666,7 @@ SessionController::SessionController( crl::on_main(this, [=] { activateFirstChatsFilter(); + setupPremiumToast(); }); } @@ -817,6 +819,30 @@ void SessionController::closeFolder() { _openedFolder = nullptr; } +void SessionController::setupPremiumToast() { + rpl::combine( + Data::AmPremiumValue(&session()), + session().changes().peerUpdates( + Data::PeerUpdate::Flag::FullInfo + ) + ) | rpl::filter([=] { + return session().user()->isFullLoaded(); + }) | rpl::map([=](bool premium, const auto&) { + return premium; + }) | rpl::distinct_until_changed() | rpl::skip( + 1 + ) | rpl::filter([=](bool premium) { + return premium; + }) | rpl::start_with_next([=] { + Ui::Toast::Show( + Window::Show(this).toastParent(), + { + .text = tr::lng_premium_success(tr::now), + .st = &st::defaultToast, + }); + }, _lifetime); +} + const rpl::variable &SessionController::openedFolder() const { return _openedFolder; } diff --git a/Telegram/SourceFiles/window/window_session_controller.h b/Telegram/SourceFiles/window/window_session_controller.h index 812ba2898..ade413772 100644 --- a/Telegram/SourceFiles/window/window_session_controller.h +++ b/Telegram/SourceFiles/window/window_session_controller.h @@ -540,6 +540,7 @@ private: void resetFakeUnreadWhileOpened(); void checkInvitePeek(); + void setupPremiumToast(); void pushDefaultChatBackground(); void cacheChatTheme( @@ -616,8 +617,10 @@ public: [[nodiscard]] not_null toastParent() const override; [[nodiscard]] bool valid() const override; operator bool() const override; + private: const base::weak_ptr _window; + }; } // namespace Window