Support alternative form of invoice links.

This commit is contained in:
levlam 2022-05-07 11:28:25 +03:00
parent 1970f65f56
commit 0a280c5b0d
2 changed files with 19 additions and 0 deletions

View File

@ -1242,6 +1242,11 @@ unique_ptr<LinkManager::InternalLink> LinkManager::parse_t_me_link_query(Slice q
// /invoice/<name>
return td::make_unique<InternalLinkInvoice>(path[1]);
}
} else if (path[0][0] == '$') {
if (path[0].size() >= 2) {
// /$<invoice_name>
return td::make_unique<InternalLinkInvoice>(path[0].substr(1));
}
} else if (path[0] == "share" || path[0] == "msg") {
if (!(path.size() > 1 && (path[1] == "bookmarklet" || path[1] == "embed"))) {
// /share?url=<url>

View File

@ -385,6 +385,20 @@ TEST(Link, parse_internal_link) {
parse_internal_link("t.me/invoice/123456", invoice("123456"));
parse_internal_link("t.me/invoice/123456/123123/12/31/a/s//21w/?asdas#test", invoice("123456"));
parse_internal_link("t.me/$?slug=abcdef", nullptr);
parse_internal_link("t.me/$", nullptr);
parse_internal_link("t.me/$/abcdef", nullptr);
parse_internal_link("t.me/$?/abcdef", nullptr);
parse_internal_link("t.me/$?abcdef", nullptr);
parse_internal_link("t.me/$#abcdef", nullptr);
parse_internal_link("t.me/$abacaba", invoice("abacaba"));
parse_internal_link("t.me/$aba%20aba", invoice("aba aba"));
parse_internal_link("t.me/$123456a", invoice("123456a"));
parse_internal_link("t.me/$12345678901", invoice("12345678901"));
parse_internal_link("t.me/$123456", invoice("123456"));
parse_internal_link("t.me/%24123456", invoice("123456"));
parse_internal_link("t.me/$123456/123123/12/31/a/s//21w/?asdas#test", invoice("123456"));
parse_internal_link("tg:invoice?slug=abcdef", invoice("abcdef"));
parse_internal_link("tg:invoice?slug=abc%30ef", invoice("abc0ef"));
parse_internal_link("tg://invoice?slug=", unknown_deep_link("tg://invoice?slug="));