Add internalLinkTypeStickerSet.expect_custom_emoji.

This commit is contained in:
levlam 2022-12-27 18:17:49 +03:00
parent 14989932b7
commit bb9108ca32
3 changed files with 28 additions and 24 deletions

View File

@ -4501,8 +4501,10 @@ internalLinkTypeRestorePurchases = InternalLinkType;
//@description The link is a link to application settings
internalLinkTypeSettings = InternalLinkType;
//@description The link is a link to a sticker set. Call searchStickerSet with the given sticker set name to process the link and show the sticker set @sticker_set_name Name of the sticker set
internalLinkTypeStickerSet sticker_set_name:string = InternalLinkType;
//@description The link is a link to a sticker set. Call searchStickerSet with the given sticker set name to process the link and show the sticker set
//@sticker_set_name Name of the sticker set
//@expect_custom_emoji True, if the sticker set is expected to contain custom emoji
internalLinkTypeStickerSet sticker_set_name:string expect_custom_emoji:Bool = InternalLinkType;
//@description The link is a link to a theme. TDLib has no theme support yet @theme_name Name of the theme
internalLinkTypeTheme theme_name:string = InternalLinkType;

View File

@ -493,13 +493,15 @@ class LinkManager::InternalLinkSettings final : public InternalLink {
class LinkManager::InternalLinkStickerSet final : public InternalLink {
string sticker_set_name_;
bool expect_custom_emoji_;
td_api::object_ptr<td_api::InternalLinkType> get_internal_link_type_object() const final {
return td_api::make_object<td_api::internalLinkTypeStickerSet>(sticker_set_name_);
return td_api::make_object<td_api::internalLinkTypeStickerSet>(sticker_set_name_, expect_custom_emoji_);
}
public:
explicit InternalLinkStickerSet(string sticker_set_name) : sticker_set_name_(std::move(sticker_set_name)) {
InternalLinkStickerSet(string sticker_set_name, bool expect_custom_emoji)
: sticker_set_name_(std::move(sticker_set_name)), expect_custom_emoji_(expect_custom_emoji) {
}
};
@ -1156,7 +1158,7 @@ unique_ptr<LinkManager::InternalLink> LinkManager::parse_tg_link_query(Slice que
// addstickers?set=<name>
// addemoji?set=<name>
if (has_arg("set")) {
return td::make_unique<InternalLinkStickerSet>(get_arg("set"));
return td::make_unique<InternalLinkStickerSet>(get_arg("set"), path[0] == "addemoji");
}
} else if (path.size() == 1 && path[0] == "setlanguage") {
// setlanguage?lang=<name>
@ -1308,7 +1310,7 @@ unique_ptr<LinkManager::InternalLink> LinkManager::parse_t_me_link_query(Slice q
if (path.size() >= 2 && !path[1].empty()) {
// /addstickers/<name>
// /addemoji/<name>
return td::make_unique<InternalLinkStickerSet>(path[1]);
return td::make_unique<InternalLinkStickerSet>(path[1], path[0] == "addemoji");
}
} else if (path[0] == "setlanguage") {
if (path.size() >= 2 && !path[1].empty()) {

View File

@ -214,8 +214,8 @@ TEST(Link, parse_internal_link) {
auto settings = [] {
return td::td_api::make_object<td::td_api::internalLinkTypeSettings>();
};
auto sticker_set = [](const td::string &sticker_set_name) {
return td::td_api::make_object<td::td_api::internalLinkTypeStickerSet>(sticker_set_name);
auto sticker_set = [](const td::string &sticker_set_name, bool expect_custom_emoji) {
return td::td_api::make_object<td::td_api::internalLinkTypeStickerSet>(sticker_set_name, expect_custom_emoji);
};
auto theme = [](const td::string &theme_name) {
return td::td_api::make_object<td::td_api::internalLinkTypeTheme>(theme_name);
@ -608,15 +608,15 @@ TEST(Link, parse_internal_link) {
parse_internal_link("t.me/addstickers?/abcdef", nullptr);
parse_internal_link("t.me/addstickers/?abcdef", nullptr);
parse_internal_link("t.me/addstickers/#abcdef", nullptr);
parse_internal_link("t.me/addstickers/abacaba", sticker_set("abacaba"));
parse_internal_link("t.me/addstickers/aba%20aba", sticker_set("aba aba"));
parse_internal_link("t.me/addstickers/123456a", sticker_set("123456a"));
parse_internal_link("t.me/addstickers/12345678901", sticker_set("12345678901"));
parse_internal_link("t.me/addstickers/123456", sticker_set("123456"));
parse_internal_link("t.me/addstickers/123456/123123/12/31/a/s//21w/?asdas#test", sticker_set("123456"));
parse_internal_link("t.me/addstickers/abacaba", sticker_set("abacaba", false));
parse_internal_link("t.me/addstickers/aba%20aba", sticker_set("aba aba", false));
parse_internal_link("t.me/addstickers/123456a", sticker_set("123456a", false));
parse_internal_link("t.me/addstickers/12345678901", sticker_set("12345678901", false));
parse_internal_link("t.me/addstickers/123456", sticker_set("123456", false));
parse_internal_link("t.me/addstickers/123456/123123/12/31/a/s//21w/?asdas#test", sticker_set("123456", false));
parse_internal_link("tg:addstickers?set=abcdef", sticker_set("abcdef"));
parse_internal_link("tg:addstickers?set=abc%30ef", sticker_set("abc0ef"));
parse_internal_link("tg:addstickers?set=abcdef", sticker_set("abcdef", false));
parse_internal_link("tg:addstickers?set=abc%30ef", sticker_set("abc0ef", false));
parse_internal_link("tg://addstickers?set=", unknown_deep_link("tg://addstickers?set="));
parse_internal_link("t.me/addemoji?set=abcdef", nullptr);
@ -626,15 +626,15 @@ TEST(Link, parse_internal_link) {
parse_internal_link("t.me/addemoji?/abcdef", nullptr);
parse_internal_link("t.me/addemoji/?abcdef", nullptr);
parse_internal_link("t.me/addemoji/#abcdef", nullptr);
parse_internal_link("t.me/addemoji/abacaba", sticker_set("abacaba"));
parse_internal_link("t.me/addemoji/aba%20aba", sticker_set("aba aba"));
parse_internal_link("t.me/addemoji/123456a", sticker_set("123456a"));
parse_internal_link("t.me/addemoji/12345678901", sticker_set("12345678901"));
parse_internal_link("t.me/addemoji/123456", sticker_set("123456"));
parse_internal_link("t.me/addemoji/123456/123123/12/31/a/s//21w/?asdas#test", sticker_set("123456"));
parse_internal_link("t.me/addemoji/abacaba", sticker_set("abacaba", true));
parse_internal_link("t.me/addemoji/aba%20aba", sticker_set("aba aba", true));
parse_internal_link("t.me/addemoji/123456a", sticker_set("123456a", true));
parse_internal_link("t.me/addemoji/12345678901", sticker_set("12345678901", true));
parse_internal_link("t.me/addemoji/123456", sticker_set("123456", true));
parse_internal_link("t.me/addemoji/123456/123123/12/31/a/s//21w/?asdas#test", sticker_set("123456", true));
parse_internal_link("tg:addemoji?set=abcdef", sticker_set("abcdef"));
parse_internal_link("tg:addemoji?set=abc%30ef", sticker_set("abc0ef"));
parse_internal_link("tg:addemoji?set=abcdef", sticker_set("abcdef", true));
parse_internal_link("tg:addemoji?set=abc%30ef", sticker_set("abc0ef", true));
parse_internal_link("tg://addemoji?set=", unknown_deep_link("tg://addemoji?set="));
parse_internal_link("t.me/confirmphone?hash=abc%30ef&phone=", nullptr);