Update folder invite links format.

This commit is contained in:
levlam 2023-04-05 19:56:05 +03:00
parent f431c8ba5a
commit cc062c6b11
2 changed files with 36 additions and 36 deletions

View File

@ -90,13 +90,13 @@ static string get_url_query_hash(bool is_tg, const HttpUrlQuery &url_query) {
static string get_url_query_slug(bool is_tg, const HttpUrlQuery &url_query) {
const auto &path = url_query.path_;
if (is_tg) {
if (path.size() == 1 && path[0] == "list") {
// list?slug=<hash>
if (path.size() == 1 && path[0] == "addlist") {
// addlist?slug=<hash>
return url_query.get_arg("slug").str();
}
} else {
if (path.size() >= 2 && path[0] == "list") {
// /list/<hash>
if (path.size() >= 2 && path[0] == "addlist") {
// /addlist/<hash>
return path[1];
}
}
@ -1015,9 +1015,9 @@ LinkManager::LinkInfo LinkManager::get_link_info(Slice link) {
to_lower_inplace(host);
if (ends_with(host, ".t.me") && host.size() >= 9 && host.find('.') == host.size() - 5) {
Slice subdomain(&host[0], host.size() - 5);
if (is_valid_username(subdomain) && subdomain != "addemoji" && subdomain != "addstickers" &&
subdomain != "addtheme" && subdomain != "auth" && subdomain != "confirmphone" && subdomain != "invoice" &&
subdomain != "joinchat" && subdomain != "list" && subdomain != "login" && subdomain != "proxy" &&
if (is_valid_username(subdomain) && subdomain != "addemoji" && subdomain != "addlist" &&
subdomain != "addstickers" && subdomain != "addtheme" && subdomain != "auth" && subdomain != "confirmphone" &&
subdomain != "invoice" && subdomain != "joinchat" && subdomain != "login" && subdomain != "proxy" &&
subdomain != "setlanguage" && subdomain != "share" && subdomain != "socks" && subdomain != "web" &&
subdomain != "k" && subdomain != "z") {
result.type_ = LinkType::TMe;
@ -1289,10 +1289,10 @@ unique_ptr<LinkManager::InternalLink> LinkManager::parse_tg_link_query(Slice que
}
// settings
return td::make_unique<InternalLinkSettings>();
} else if (path.size() == 1 && path[0] == "list") {
} else if (path.size() == 1 && path[0] == "addlist") {
auto slug = get_url_query_slug(true, url_query);
if (!slug.empty() && is_base64url_characters(slug)) {
// list?slug=<slug>
// addlist?slug=<slug>
return td::make_unique<InternalLinkDialogFolderInvite>(get_dialog_filter_invite_link(slug, true));
}
} else if (path.size() == 1 && path[0] == "join") {
@ -1425,10 +1425,10 @@ unique_ptr<LinkManager::InternalLink> LinkManager::parse_t_me_link_query(Slice q
// /login/<code>
return td::make_unique<InternalLinkAuthenticationCode>(path[1]);
}
} else if (path[0] == "list") {
} else if (path[0] == "addlist") {
auto slug = get_url_query_slug(false, url_query);
if (!slug.empty() && is_base64url_characters(slug)) {
// /list/<slug>
// /addlist/<slug>
return td::make_unique<InternalLinkDialogFolderInvite>(get_dialog_filter_invite_link(slug, true));
}
} else if (path[0] == "joinchat") {
@ -2328,9 +2328,9 @@ string LinkManager::get_dialog_filter_invite_link(Slice slug, bool is_internal)
return string();
}
if (is_internal) {
return PSTRING() << "tg:list?slug=" << slug;
return PSTRING() << "tg:addlist?slug=" << slug;
} else {
return PSTRING() << get_t_me_url() << "list/" << slug;
return PSTRING() << get_t_me_url() << "addlist/" << slug;
}
}

View File

@ -219,7 +219,7 @@ static auto change_phone_number() {
}
static auto chat_folder_invite(const td::string &slug) {
return td::td_api::make_object<td::td_api::internalLinkTypeChatFolderInvite>("tg:list?slug=" + slug);
return td::td_api::make_object<td::td_api::internalLinkTypeChatFolderInvite>("tg:addlist?slug=" + slug);
}
static auto chat_folder_settings() {
@ -707,23 +707,23 @@ TEST(Link, parse_internal_link_part2) {
parse_internal_link("t.me/+123456?attach=bot&startattach=1",
attachment_menu_bot(nullptr, user_phone_number("123456"), "bot", "1"));
parse_internal_link("t.me/list?invite=abcdef", nullptr);
parse_internal_link("t.me/list", nullptr);
parse_internal_link("t.me/list/", nullptr);
parse_internal_link("t.me/list//abcdef", nullptr);
parse_internal_link("t.me/list?/abcdef", nullptr);
parse_internal_link("t.me/list/?abcdef", nullptr);
parse_internal_link("t.me/list/#abcdef", nullptr);
parse_internal_link("t.me/list/abacaba", chat_folder_invite("abacaba"));
parse_internal_link("t.me/list/aba%20aba", nullptr);
parse_internal_link("t.me/list/aba%30aba", chat_folder_invite("aba0aba"));
parse_internal_link("t.me/list/123456a", chat_folder_invite("123456a"));
parse_internal_link("t.me/list/12345678901", chat_folder_invite("12345678901"));
parse_internal_link("t.me/list/123456", chat_folder_invite("123456"));
parse_internal_link("t.me/list/123456/123123/12/31/a/s//21w/?asdas#test", chat_folder_invite("123456"));
parse_internal_link("t.me/list/12345678901a", chat_folder_invite("12345678901a"));
parse_internal_link("t.me/list/123456a", chat_folder_invite("123456a"));
parse_internal_link("t.me/list/123456a/123123/12/31/a/s//21w/?asdas#test", chat_folder_invite("123456a"));
parse_internal_link("t.me/addlist?invite=abcdef", nullptr);
parse_internal_link("t.me/addlist", nullptr);
parse_internal_link("t.me/addlist/", nullptr);
parse_internal_link("t.me/addlist//abcdef", nullptr);
parse_internal_link("t.me/addlist?/abcdef", nullptr);
parse_internal_link("t.me/addlist/?abcdef", nullptr);
parse_internal_link("t.me/addlist/#abcdef", nullptr);
parse_internal_link("t.me/addlist/abacaba", chat_folder_invite("abacaba"));
parse_internal_link("t.me/addlist/aba%20aba", nullptr);
parse_internal_link("t.me/addlist/aba%30aba", chat_folder_invite("aba0aba"));
parse_internal_link("t.me/addlist/123456a", chat_folder_invite("123456a"));
parse_internal_link("t.me/addlist/12345678901", chat_folder_invite("12345678901"));
parse_internal_link("t.me/addlist/123456", chat_folder_invite("123456"));
parse_internal_link("t.me/addlist/123456/123123/12/31/a/s//21w/?asdas#test", chat_folder_invite("123456"));
parse_internal_link("t.me/addlist/12345678901a", chat_folder_invite("12345678901a"));
parse_internal_link("t.me/addlist/123456a", chat_folder_invite("123456a"));
parse_internal_link("t.me/addlist/123456a/123123/12/31/a/s//21w/?asdas#test", chat_folder_invite("123456a"));
parse_internal_link("t.me/contact/startattach/adasd", user_token("startattach"));
parse_internal_link("t.me/contact/startattach", user_token("startattach"));
@ -736,10 +736,10 @@ TEST(Link, parse_internal_link_part2) {
parse_internal_link("tg://join?invite=abc%30def", chat_invite("abc0def"));
parse_internal_link("tg:join?invite=", unknown_deep_link("tg://join?invite="));
parse_internal_link("tg:list?slug=abcdef", chat_folder_invite("abcdef"));
parse_internal_link("tg:list?slug=abc%20def", unknown_deep_link("tg://list?slug=abc%20def"));
parse_internal_link("tg://list?slug=abc%30def", chat_folder_invite("abc0def"));
parse_internal_link("tg:list?slug=", unknown_deep_link("tg://list?slug="));
parse_internal_link("tg:addlist?slug=abcdef", chat_folder_invite("abcdef"));
parse_internal_link("tg:addlist?slug=abc%20def", unknown_deep_link("tg://addlist?slug=abc%20def"));
parse_internal_link("tg://addlist?slug=abc%30def", chat_folder_invite("abc0def"));
parse_internal_link("tg:addlist?slug=", unknown_deep_link("tg://addlist?slug="));
parse_internal_link("t.me/addstickers?set=abcdef", nullptr);
parse_internal_link("t.me/addstickers", nullptr);
@ -1163,13 +1163,13 @@ TEST(Link, parse_internal_link_part4) {
parse_internal_link("0aaa.t.me/12345?single", nullptr);
parse_internal_link("_aaa.t.me/12345?single", nullptr);
parse_internal_link("addemoji.t.me", nullptr);
parse_internal_link("addlist.t.me", nullptr);
parse_internal_link("addstickers.t.me", nullptr);
parse_internal_link("addtheme.t.me", nullptr);
parse_internal_link("auth.t.me", nullptr);
parse_internal_link("confirmphone.t.me", nullptr);
parse_internal_link("invoice.t.me", nullptr);
parse_internal_link("joinchat.t.me", nullptr);
parse_internal_link("list.t.me", nullptr);
parse_internal_link("login.t.me", nullptr);
parse_internal_link("proxy.t.me", nullptr);
parse_internal_link("setlanguage.t.me", nullptr);