From aa42602701c95c91a2f65ab351453ae93318714d Mon Sep 17 00:00:00 2001 From: levlam Date: Tue, 25 Apr 2023 16:48:16 +0300 Subject: [PATCH] Add td_api::suggestedActionRestorePremium. --- td/generate/scheme/td_api.tl | 3 +++ td/telegram/Premium.cpp | 2 ++ td/telegram/SuggestedAction.cpp | 10 ++++++++++ td/telegram/SuggestedAction.h | 3 ++- 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index caf3e546f..51fd07545 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -5073,6 +5073,9 @@ suggestedActionSetPassword authorization_delay:int32 = SuggestedAction; //@description Suggests the user to upgrade the Premium subscription from monthly payments to annual payments suggestedActionUpgradePremium = SuggestedAction; +//@description Suggests the user to restore a recently expired Premium subscription +suggestedActionRestorePremium = SuggestedAction; + //@description Suggests the user to subscribe to the Premium subscription with annual payments suggestedActionSubscribeToAnnualPremium = SuggestedAction; diff --git a/td/telegram/Premium.cpp b/td/telegram/Premium.cpp index ef67bcf82..b78a4f58a 100644 --- a/td/telegram/Premium.cpp +++ b/td/telegram/Premium.cpp @@ -557,6 +557,7 @@ void assign_app_store_transaction(Td *td, const string &receipt, if (purpose != nullptr && purpose->get_id() == td_api::storePaymentPurposePremiumSubscription::ID) { dismiss_suggested_action(SuggestedAction{SuggestedAction::Type::UpgradePremium}, Promise()); dismiss_suggested_action(SuggestedAction{SuggestedAction::Type::SubscribeToAnnualPremium}, Promise()); + dismiss_suggested_action(SuggestedAction{SuggestedAction::Type::RestorePremium}, Promise()); } td->create_handler(std::move(promise))->send(receipt, std::move(purpose)); } @@ -568,6 +569,7 @@ void assign_play_market_transaction(Td *td, const string &package_name, const st if (purpose != nullptr && purpose->get_id() == td_api::storePaymentPurposePremiumSubscription::ID) { dismiss_suggested_action(SuggestedAction{SuggestedAction::Type::UpgradePremium}, Promise()); dismiss_suggested_action(SuggestedAction{SuggestedAction::Type::SubscribeToAnnualPremium}, Promise()); + dismiss_suggested_action(SuggestedAction{SuggestedAction::Type::RestorePremium}, Promise()); } td->create_handler(std::move(promise)) ->send(package_name, store_product_id, purchase_token, std::move(purpose)); diff --git a/td/telegram/SuggestedAction.cpp b/td/telegram/SuggestedAction.cpp index dc35bd856..b476ed497 100644 --- a/td/telegram/SuggestedAction.cpp +++ b/td/telegram/SuggestedAction.cpp @@ -42,6 +42,8 @@ SuggestedAction::SuggestedAction(Slice action_str) { init(Type::UpgradePremium); } else if (action_str == Slice("PREMIUM_ANNUAL")) { init(Type::SubscribeToAnnualPremium); + } else if (action_str == Slice("PREMIUM_RESTORE")) { + init(Type::RestorePremium); } } @@ -91,6 +93,9 @@ SuggestedAction::SuggestedAction(const td_api::object_ptr SuggestedAction::get_suggested_actio return td_api::make_object(); case Type::SubscribeToAnnualPremium: return td_api::make_object(); + case Type::RestorePremium: + return td_api::make_object(); default: UNREACHABLE(); return nullptr; @@ -199,6 +208,7 @@ void dismiss_suggested_action(SuggestedAction action, Promise &&promise) { case SuggestedAction::Type::ViewChecksHint: case SuggestedAction::Type::UpgradePremium: case SuggestedAction::Type::SubscribeToAnnualPremium: + case SuggestedAction::Type::RestorePremium: return send_closure_later(G()->config_manager(), &ConfigManager::dismiss_suggested_action, std::move(action), std::move(promise)); case SuggestedAction::Type::ConvertToGigagroup: diff --git a/td/telegram/SuggestedAction.h b/td/telegram/SuggestedAction.h index 7b61d45ab..a2d6a75f3 100644 --- a/td/telegram/SuggestedAction.h +++ b/td/telegram/SuggestedAction.h @@ -25,7 +25,8 @@ struct SuggestedAction { CheckPassword, SetPassword, UpgradePremium, - SubscribeToAnnualPremium + SubscribeToAnnualPremium, + RestorePremium }; Type type_ = Type::Empty; DialogId dialog_id_;