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 //@description The link is a link to application settings
internalLinkTypeSettings = InternalLinkType; 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 //@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
internalLinkTypeStickerSet sticker_set_name:string = InternalLinkType; //@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 //@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; internalLinkTypeTheme theme_name:string = InternalLinkType;

View File

@ -493,13 +493,15 @@ class LinkManager::InternalLinkSettings final : public InternalLink {
class LinkManager::InternalLinkStickerSet final : public InternalLink { class LinkManager::InternalLinkStickerSet final : public InternalLink {
string sticker_set_name_; string sticker_set_name_;
bool expect_custom_emoji_;
td_api::object_ptr<td_api::InternalLinkType> get_internal_link_type_object() const final { 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: 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> // addstickers?set=<name>
// addemoji?set=<name> // addemoji?set=<name>
if (has_arg("set")) { 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") { } else if (path.size() == 1 && path[0] == "setlanguage") {
// setlanguage?lang=<name> // 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()) { if (path.size() >= 2 && !path[1].empty()) {
// /addstickers/<name> // /addstickers/<name>
// /addemoji/<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") { } else if (path[0] == "setlanguage") {
if (path.size() >= 2 && !path[1].empty()) { if (path.size() >= 2 && !path[1].empty()) {

View File

@ -214,8 +214,8 @@ TEST(Link, parse_internal_link) {
auto settings = [] { auto settings = [] {
return td::td_api::make_object<td::td_api::internalLinkTypeSettings>(); return td::td_api::make_object<td::td_api::internalLinkTypeSettings>();
}; };
auto sticker_set = [](const td::string &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); return td::td_api::make_object<td::td_api::internalLinkTypeStickerSet>(sticker_set_name, expect_custom_emoji);
}; };
auto theme = [](const td::string &theme_name) { auto theme = [](const td::string &theme_name) {
return td::td_api::make_object<td::td_api::internalLinkTypeTheme>(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/?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/abacaba", sticker_set("abacaba", false));
parse_internal_link("t.me/addstickers/aba%20aba", sticker_set("aba aba")); parse_internal_link("t.me/addstickers/aba%20aba", sticker_set("aba aba", false));
parse_internal_link("t.me/addstickers/123456a", sticker_set("123456a")); parse_internal_link("t.me/addstickers/123456a", sticker_set("123456a", false));
parse_internal_link("t.me/addstickers/12345678901", sticker_set("12345678901")); parse_internal_link("t.me/addstickers/12345678901", sticker_set("12345678901", false));
parse_internal_link("t.me/addstickers/123456", sticker_set("123456")); 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")); 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=abcdef", sticker_set("abcdef", false));
parse_internal_link("tg:addstickers?set=abc%30ef", sticker_set("abc0ef")); 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("tg://addstickers?set=", unknown_deep_link("tg://addstickers?set="));
parse_internal_link("t.me/addemoji?set=abcdef", nullptr); 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/?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/abacaba", sticker_set("abacaba", true));
parse_internal_link("t.me/addemoji/aba%20aba", sticker_set("aba aba")); parse_internal_link("t.me/addemoji/aba%20aba", sticker_set("aba aba", true));
parse_internal_link("t.me/addemoji/123456a", sticker_set("123456a")); parse_internal_link("t.me/addemoji/123456a", sticker_set("123456a", true));
parse_internal_link("t.me/addemoji/12345678901", sticker_set("12345678901")); parse_internal_link("t.me/addemoji/12345678901", sticker_set("12345678901", true));
parse_internal_link("t.me/addemoji/123456", sticker_set("123456")); 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")); 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=abcdef", sticker_set("abcdef", true));
parse_internal_link("tg:addemoji?set=abc%30ef", sticker_set("abc0ef")); 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("tg://addemoji?set=", unknown_deep_link("tg://addemoji?set="));
parse_internal_link("t.me/confirmphone?hash=abc%30ef&phone=", nullptr); parse_internal_link("t.me/confirmphone?hash=abc%30ef&phone=", nullptr);