Fix handling of privatepost links.
This commit is contained in:
parent
2ea1d9e977
commit
b7ec416a30
|
@ -883,10 +883,10 @@ unique_ptr<LinkManager::InternalLink> LinkManager::parse_tg_link_query(Slice que
|
|||
}
|
||||
}
|
||||
} else if (path.size() == 1 && path[0] == "privatepost") {
|
||||
// privatepost?channel=123456789&msg_id=12345&single&thread=<thread_id>&comment=<message_id>&t=<media_timestamp>
|
||||
if (has_arg("channel") && has_arg("msg_id")) {
|
||||
// privatepost?channel=123456789&post=12345&single&thread=<thread_id>&comment=<message_id>&t=<media_timestamp>
|
||||
if (has_arg("channel") && has_arg("post")) {
|
||||
return td::make_unique<InternalLinkMessage>(
|
||||
PSTRING() << "tg:privatepost" << copy_arg("channel") << copy_arg("msg_id") << copy_arg("single")
|
||||
PSTRING() << "tg:privatepost" << copy_arg("channel") << copy_arg("post") << copy_arg("single")
|
||||
<< copy_arg("thread") << copy_arg("comment") << copy_arg("t"));
|
||||
}
|
||||
} else if (path.size() == 1 && path[0] == "bg") {
|
||||
|
@ -941,10 +941,9 @@ unique_ptr<LinkManager::InternalLink> LinkManager::parse_t_me_link_query(Slice q
|
|||
if (path.size() >= 3 && to_integer<int64>(path[1]) > 0 && to_integer<int64>(path[2]) > 0) {
|
||||
// /c/123456789/12345?single&thread=<thread_id>&comment=<message_id>&t=<media_timestamp>
|
||||
is_first_arg = false;
|
||||
return td::make_unique<InternalLinkMessage>(PSTRING()
|
||||
<< "tg:privatepost?channel=" << to_integer<int64>(path[1])
|
||||
<< "&msg_id=" << to_integer<int64>(path[2]) << copy_arg("single")
|
||||
<< copy_arg("thread") << copy_arg("comment") << copy_arg("t"));
|
||||
return td::make_unique<InternalLinkMessage>(
|
||||
PSTRING() << "tg:privatepost?channel=" << to_integer<int64>(path[1]) << "&post=" << to_integer<int64>(path[2])
|
||||
<< copy_arg("single") << copy_arg("thread") << copy_arg("comment") << copy_arg("t"));
|
||||
}
|
||||
} else if (path[0] == "login") {
|
||||
if (path.size() >= 2 && !path[1].empty()) {
|
||||
|
@ -1296,7 +1295,7 @@ Result<MessageLinkInfo> LinkManager::get_message_link_info(Slice url) {
|
|||
bool for_comment = false;
|
||||
if (link_info.is_tg_) {
|
||||
// resolve?domain=username&post=12345&single&t=123&comment=12&thread=21
|
||||
// privatepost?channel=123456789&msg_id=12345&single&t=123&comment=12&thread=21
|
||||
// privatepost?channel=123456789&post=12345&single&t=123&comment=12&thread=21
|
||||
|
||||
bool is_resolve = false;
|
||||
if (begins_with(url, "resolve")) {
|
||||
|
@ -1323,16 +1322,13 @@ Result<MessageLinkInfo> LinkManager::get_message_link_info(Slice url) {
|
|||
if (key_value.first == "domain") {
|
||||
username = key_value.second;
|
||||
}
|
||||
if (key_value.first == "post") {
|
||||
message_id_slice = key_value.second;
|
||||
}
|
||||
} else {
|
||||
if (key_value.first == "channel") {
|
||||
channel_id_slice = key_value.second;
|
||||
}
|
||||
if (key_value.first == "msg_id") {
|
||||
message_id_slice = key_value.second;
|
||||
}
|
||||
}
|
||||
if (key_value.first == "post") {
|
||||
message_id_slice = key_value.second;
|
||||
}
|
||||
if (key_value.first == "t") {
|
||||
media_timestamp_slice = key_value.second;
|
||||
|
|
|
@ -233,18 +233,18 @@ TEST(Link, parse_internal_link) {
|
|||
unknown_deep_link("tg://privatepost?domain=username/12345&single"));
|
||||
parse_internal_link("tg:privatepost?channel=username/12345&single",
|
||||
unknown_deep_link("tg://privatepost?channel=username/12345&single"));
|
||||
parse_internal_link("tg:privatepost?channel=username&msg_id=12345",
|
||||
message("tg:privatepost?channel=username&msg_id=12345"));
|
||||
parse_internal_link("tg:privatepost?channel=username&post=12345",
|
||||
message("tg:privatepost?channel=username&post=12345"));
|
||||
|
||||
parse_internal_link("t.me/c/12345?single", nullptr);
|
||||
parse_internal_link("t.me/c/1/c?single", nullptr);
|
||||
parse_internal_link("t.me/c/c/1?single", nullptr);
|
||||
parse_internal_link("t.me/c//1?single", nullptr);
|
||||
parse_internal_link("t.me/c/12345/123", message("tg:privatepost?channel=12345&msg_id=123"));
|
||||
parse_internal_link("t.me/c/12345/123?single", message("tg:privatepost?channel=12345&msg_id=123&single"));
|
||||
parse_internal_link("t.me/c/12345/123/asd/asd////?single", message("tg:privatepost?channel=12345&msg_id=123&single"));
|
||||
parse_internal_link("t.me/c/12345/123", message("tg:privatepost?channel=12345&post=123"));
|
||||
parse_internal_link("t.me/c/12345/123?single", message("tg:privatepost?channel=12345&post=123&single"));
|
||||
parse_internal_link("t.me/c/12345/123/asd/asd////?single", message("tg:privatepost?channel=12345&post=123&single"));
|
||||
parse_internal_link("t.me/c/%312345/%3123?comment=456&t=789&single&thread=123%20%31",
|
||||
message("tg:privatepost?channel=12345&msg_id=123&single&thread=123%201&comment=456&t=789"));
|
||||
message("tg:privatepost?channel=12345&post=123&single&thread=123%201&comment=456&t=789"));
|
||||
|
||||
parse_internal_link("tg:bg?color=111111#asdasd", background("111111"));
|
||||
parse_internal_link("tg:bg?color=11111%31", background("111111"));
|
||||
|
|
Loading…
Reference in New Issue
Block a user