Add td_api::internalLinkTypePremiumGift.
This commit is contained in:
parent
65903180a4
commit
4a45265926
@ -5569,6 +5569,9 @@ internalLinkTypePhoneNumberConfirmation hash:string phone_number:string = Intern
|
|||||||
//@description The link is a link to the Premium features screen of the application from which the user can subscribe to Telegram Premium. Call getPremiumFeatures with the given referrer to process the link @referrer Referrer specified in the link
|
//@description The link is a link to the Premium features screen of the application from which the user can subscribe to Telegram Premium. Call getPremiumFeatures with the given referrer to process the link @referrer Referrer specified in the link
|
||||||
internalLinkTypePremiumFeatures referrer:string = InternalLinkType;
|
internalLinkTypePremiumFeatures referrer:string = InternalLinkType;
|
||||||
|
|
||||||
|
//@description The link is a link to the screen for gifting Telegram Premium subscriptions to friends @referrer Referrer specified in the link
|
||||||
|
internalLinkTypePremiumGift referrer:string = InternalLinkType;
|
||||||
|
|
||||||
//@description The link is a link with a Telegram Premium gift code. Call checkPremiumGiftCode with the given code to process the link. If the code is valid and the user wants to apply it, then call applyPremiumGiftCode
|
//@description The link is a link with a Telegram Premium gift code. Call checkPremiumGiftCode with the given code to process the link. If the code is valid and the user wants to apply it, then call applyPremiumGiftCode
|
||||||
//@code The Telegram Premium gift code
|
//@code The Telegram Premium gift code
|
||||||
internalLinkTypePremiumGiftCode code:string = InternalLinkType;
|
internalLinkTypePremiumGiftCode code:string = InternalLinkType;
|
||||||
|
@ -561,6 +561,18 @@ class LinkManager::InternalLinkPremiumFeatures final : public InternalLink {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class LinkManager::InternalLinkPremiumGift final : public InternalLink {
|
||||||
|
string referrer_;
|
||||||
|
|
||||||
|
td_api::object_ptr<td_api::InternalLinkType> get_internal_link_type_object() const final {
|
||||||
|
return td_api::make_object<td_api::internalLinkTypePremiumGift>(referrer_);
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit InternalLinkPremiumGift(string referrer) : referrer_(std::move(referrer)) {
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
class LinkManager::InternalLinkPremiumGiftCode final : public InternalLink {
|
class LinkManager::InternalLinkPremiumGiftCode final : public InternalLink {
|
||||||
string code_;
|
string code_;
|
||||||
|
|
||||||
@ -1344,6 +1356,9 @@ unique_ptr<LinkManager::InternalLink> LinkManager::parse_tg_link_query(Slice que
|
|||||||
} else if (path.size() == 1 && path[0] == "premium_offer") {
|
} else if (path.size() == 1 && path[0] == "premium_offer") {
|
||||||
// premium_offer?ref=<referrer>
|
// premium_offer?ref=<referrer>
|
||||||
return td::make_unique<InternalLinkPremiumFeatures>(get_arg("ref"));
|
return td::make_unique<InternalLinkPremiumFeatures>(get_arg("ref"));
|
||||||
|
} else if (path.size() == 1 && path[0] == "premium_multigift") {
|
||||||
|
// premium_multigift?ref=<referrer>
|
||||||
|
return td::make_unique<InternalLinkPremiumGift>(get_arg("ref"));
|
||||||
} else if (!path.empty() && path[0] == "settings") {
|
} else if (!path.empty() && path[0] == "settings") {
|
||||||
if (path.size() == 2 && path[1] == "auto_delete") {
|
if (path.size() == 2 && path[1] == "auto_delete") {
|
||||||
// settings/auto_delete
|
// settings/auto_delete
|
||||||
@ -2180,6 +2195,13 @@ Result<string> LinkManager::get_internal_link_impl(const td_api::InternalLinkTyp
|
|||||||
}
|
}
|
||||||
return PSTRING() << "tg://premium_offer?ref=" << url_encode(link->referrer_);
|
return PSTRING() << "tg://premium_offer?ref=" << url_encode(link->referrer_);
|
||||||
}
|
}
|
||||||
|
case td_api::internalLinkTypePremiumGift::ID: {
|
||||||
|
auto link = static_cast<const td_api::internalLinkTypePremiumGift *>(type_ptr);
|
||||||
|
if (!is_internal) {
|
||||||
|
return Status::Error("HTTP link is unavailable for the link type");
|
||||||
|
}
|
||||||
|
return PSTRING() << "tg://premium_multigift?ref=" << url_encode(link->referrer_);
|
||||||
|
}
|
||||||
case td_api::internalLinkTypePremiumGiftCode::ID: {
|
case td_api::internalLinkTypePremiumGiftCode::ID: {
|
||||||
auto link = static_cast<const td_api::internalLinkTypePremiumGiftCode *>(type_ptr);
|
auto link = static_cast<const td_api::internalLinkTypePremiumGiftCode *>(type_ptr);
|
||||||
if (is_internal) {
|
if (is_internal) {
|
||||||
|
@ -141,6 +141,7 @@ class LinkManager final : public Actor {
|
|||||||
class InternalLinkMessageDraft;
|
class InternalLinkMessageDraft;
|
||||||
class InternalLinkPassportDataRequest;
|
class InternalLinkPassportDataRequest;
|
||||||
class InternalLinkPremiumFeatures;
|
class InternalLinkPremiumFeatures;
|
||||||
|
class InternalLinkPremiumGift;
|
||||||
class InternalLinkPremiumGiftCode;
|
class InternalLinkPremiumGiftCode;
|
||||||
class InternalLinkPrivacyAndSecuritySettings;
|
class InternalLinkPrivacyAndSecuritySettings;
|
||||||
class InternalLinkProxy;
|
class InternalLinkProxy;
|
||||||
|
@ -291,6 +291,10 @@ static auto premium_features(const td::string &referrer) {
|
|||||||
return td::td_api::make_object<td::td_api::internalLinkTypePremiumFeatures>(referrer);
|
return td::td_api::make_object<td::td_api::internalLinkTypePremiumFeatures>(referrer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static auto premium_gift(const td::string &referrer) {
|
||||||
|
return td::td_api::make_object<td::td_api::internalLinkTypePremiumGift>(referrer);
|
||||||
|
}
|
||||||
|
|
||||||
static auto premium_gift_code(const td::string &code) {
|
static auto premium_gift_code(const td::string &code) {
|
||||||
return td::td_api::make_object<td::td_api::internalLinkTypePremiumGiftCode>(code);
|
return td::td_api::make_object<td::td_api::internalLinkTypePremiumGiftCode>(code);
|
||||||
}
|
}
|
||||||
@ -1237,6 +1241,10 @@ TEST(Link, parse_internal_link_part4) {
|
|||||||
parse_internal_link("tg:premium_offer?ref=abc%30ef", premium_features("abc0ef"));
|
parse_internal_link("tg:premium_offer?ref=abc%30ef", premium_features("abc0ef"));
|
||||||
parse_internal_link("tg://premium_offer?ref=", premium_features(""));
|
parse_internal_link("tg://premium_offer?ref=", premium_features(""));
|
||||||
|
|
||||||
|
parse_internal_link("tg:premium_multigift?ref=abcdef", premium_gift("abcdef"));
|
||||||
|
parse_internal_link("tg:premium_multigift?ref=abc%30ef", premium_gift("abc0ef"));
|
||||||
|
parse_internal_link("tg://premium_multigift?ref=", premium_gift(""));
|
||||||
|
|
||||||
parse_internal_link("tg://settings", settings());
|
parse_internal_link("tg://settings", settings());
|
||||||
parse_internal_link("tg://setting", unknown_deep_link("tg://setting"));
|
parse_internal_link("tg://setting", unknown_deep_link("tg://setting"));
|
||||||
parse_internal_link("tg://settings?asdsa?D?SADasD?asD", settings());
|
parse_internal_link("tg://settings?asdsa?D?SADasD?asD", settings());
|
||||||
|
Loading…
Reference in New Issue
Block a user