diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index 6fcd202e7..e23b5a746 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -4868,9 +4868,12 @@ suggestedActionConvertToBroadcastGroup supergroup_id:int53 = SuggestedAction; //@authorization_delay The number of days to pass between consecutive authorizations if the user declines to set password; if 0, then the user is advised to set the password for security reasons suggestedActionSetPassword authorization_delay:int32 = SuggestedAction; -//@description Suggests the user to upgrade Premium subscription from monthly payments to annual payments +//@description Suggests the user to upgrade the Premium subscription from monthly payments to annual payments suggestedActionUpgradePremium = SuggestedAction; +//@description Suggests the user to subscribe to the Premium subscription with annual payments +suggestedActionSubscribeToAnnualPremium = SuggestedAction; + //@description Contains a counter @count Count count count:int32 = Count; diff --git a/td/telegram/Premium.cpp b/td/telegram/Premium.cpp index 5eac5ba20..f0bf548d0 100644 --- a/td/telegram/Premium.cpp +++ b/td/telegram/Premium.cpp @@ -538,6 +538,7 @@ void assign_app_store_transaction(Td *td, const string &receipt, td_api::object_ptr &&purpose, Promise &&promise) { 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()); } td->create_handler(std::move(promise))->send(receipt, std::move(purpose)); } @@ -548,6 +549,7 @@ void assign_play_market_transaction(Td *td, const string &package_name, const st Promise &&promise) { 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()); } 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 92a0fe895..220a297ee 100644 --- a/td/telegram/SuggestedAction.cpp +++ b/td/telegram/SuggestedAction.cpp @@ -39,6 +39,8 @@ SuggestedAction::SuggestedAction(Slice action_str) { init(Type::SetPassword); } else if (action_str == Slice("PREMIUM_UPGRADE")) { init(Type::UpgradePremium); + } else if (action_str == Slice("PREMIUM_ANNUAL")) { + init(Type::SubscribeToAnnualPremium); } } @@ -85,6 +87,9 @@ SuggestedAction::SuggestedAction(const td_api::object_ptr SuggestedAction::get_suggested_actio return td_api::make_object(otherwise_relogin_days_); case Type::UpgradePremium: return td_api::make_object(); + case Type::SubscribeToAnnualPremium: + return td_api::make_object(); default: UNREACHABLE(); return nullptr; @@ -188,6 +197,7 @@ void dismiss_suggested_action(SuggestedAction action, Promise &&promise) { case SuggestedAction::Type::CheckPhoneNumber: case SuggestedAction::Type::ViewChecksHint: case SuggestedAction::Type::UpgradePremium: + case SuggestedAction::Type::SubscribeToAnnualPremium: 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 f45f38070..7b61d45ab 100644 --- a/td/telegram/SuggestedAction.h +++ b/td/telegram/SuggestedAction.h @@ -24,7 +24,8 @@ struct SuggestedAction { ConvertToGigagroup, CheckPassword, SetPassword, - UpgradePremium + UpgradePremium, + SubscribeToAnnualPremium }; Type type_ = Type::Empty; DialogId dialog_id_;