Add internalLinkTypeQrCodeAuthentication.
This commit is contained in:
parent
38d71ca7e0
commit
30f0509f71
@ -3013,11 +3013,14 @@ internalLinkTypeMessage = InternalLinkType;
|
|||||||
//@text Message draft text @contains_link True, if the first line of the text contains a link. If true, the input field needs to be focused and the text after the link should be selected
|
//@text Message draft text @contains_link True, if the first line of the text contains a link. If true, the input field needs to be focused and the text after the link should be selected
|
||||||
internalLinkTypeMessageDraft text:formattedText contains_link:Bool = InternalLinkType;
|
internalLinkTypeMessageDraft text:formattedText contains_link:Bool = InternalLinkType;
|
||||||
|
|
||||||
|
//@description The link can be used to login the current user on another device, but it must be scanned from QR-code using in-app camera. An alert similar to
|
||||||
|
//-"This code can be used to allow someone to log in to your Telegram account. To confirm Telegram login, please go to Settings > Devices > Scan QR and scan the code" needs to be shown
|
||||||
|
internalLinkTypeQrCodeAuthentication = InternalLinkType;
|
||||||
|
|
||||||
//@description The link is an unknown tg: link. Call getDeepLinkInfo to process the link
|
//@description The link is an unknown tg: link. Call getDeepLinkInfo to process the link
|
||||||
internalLinkTypeUnknownDeepLink = InternalLinkType;
|
internalLinkTypeUnknownDeepLink = InternalLinkType;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//@description Contains an HTTPS link to a message in a supergroup or channel @link Message link @is_public True, if the link will work for non-members of the chat
|
//@description Contains an HTTPS link to a message in a supergroup or channel @link Message link @is_public True, if the link will work for non-members of the chat
|
||||||
messageLink link:string is_public:Bool = MessageLink;
|
messageLink link:string is_public:Bool = MessageLink;
|
||||||
|
|
||||||
|
@ -83,6 +83,16 @@ class LinkManager::InternalLinkMessageDraft : public InternalLink {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class LinkManager::InternalLinkQrCodeAuthentication : public InternalLink {
|
||||||
|
td_api::object_ptr<td_api::InternalLinkType> get_internal_link_type_object() const final {
|
||||||
|
return td_api::make_object<td_api::internalLinkTypeQrCodeAuthentication>();
|
||||||
|
}
|
||||||
|
|
||||||
|
InternalLinkType get_type() const final {
|
||||||
|
return InternalLinkType::QrCodeAuthentication;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
class LinkManager::InternalLinkUnknownDeepLink : public InternalLink {
|
class LinkManager::InternalLinkUnknownDeepLink : public InternalLink {
|
||||||
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::internalLinkTypeUnknownDeepLink>();
|
return td_api::make_object<td_api::internalLinkTypeUnknownDeepLink>();
|
||||||
@ -407,6 +417,10 @@ unique_ptr<LinkManager::InternalLink> LinkManager::parse_tg_link_query(Slice que
|
|||||||
if (has_arg("code")) {
|
if (has_arg("code")) {
|
||||||
return td::make_unique<InternalLinkAuthenticationCode>(get_arg("code"));
|
return td::make_unique<InternalLinkAuthenticationCode>(get_arg("code"));
|
||||||
}
|
}
|
||||||
|
// login?token=abacaba
|
||||||
|
if (has_arg("token")) {
|
||||||
|
return td::make_unique<InternalLinkQrCodeAuthentication>();
|
||||||
|
}
|
||||||
} else if (path.size() == 1 && path[0] == "privatepost") {
|
} else if (path.size() == 1 && path[0] == "privatepost") {
|
||||||
// privatepost?channel=123456789&msg_id=12345
|
// privatepost?channel=123456789&msg_id=12345
|
||||||
if (has_arg("channel") && has_arg("msg_id")) {
|
if (has_arg("channel") && has_arg("msg_id")) {
|
||||||
|
@ -33,7 +33,14 @@ class LinkManager : public Actor {
|
|||||||
LinkManager &operator=(LinkManager &&) = delete;
|
LinkManager &operator=(LinkManager &&) = delete;
|
||||||
~LinkManager() override;
|
~LinkManager() override;
|
||||||
|
|
||||||
enum class InternalLinkType : int32 { AuthenticationCode, Background, Message, MessageDraft, UnknownDeepLink };
|
enum class InternalLinkType : int32 {
|
||||||
|
AuthenticationCode,
|
||||||
|
Background,
|
||||||
|
Message,
|
||||||
|
MessageDraft,
|
||||||
|
QrCodeAuthentication,
|
||||||
|
UnknownDeepLink
|
||||||
|
};
|
||||||
|
|
||||||
class InternalLink {
|
class InternalLink {
|
||||||
public:
|
public:
|
||||||
@ -81,6 +88,7 @@ class LinkManager : public Actor {
|
|||||||
class InternalLinkBackground;
|
class InternalLinkBackground;
|
||||||
class InternalLinkMessage;
|
class InternalLinkMessage;
|
||||||
class InternalLinkMessageDraft;
|
class InternalLinkMessageDraft;
|
||||||
|
class InternalLinkQrCodeAuthentication;
|
||||||
class InternalLinkUnknownDeepLink;
|
class InternalLinkUnknownDeepLink;
|
||||||
|
|
||||||
static unique_ptr<InternalLink> parse_tg_link_query(Slice query);
|
static unique_ptr<InternalLink> parse_tg_link_query(Slice query);
|
||||||
|
@ -78,6 +78,9 @@ TEST(Link, parse_internal_link) {
|
|||||||
formatted_text->text_ = std::move(text);
|
formatted_text->text_ = std::move(text);
|
||||||
return td::td_api::make_object<td::td_api::internalLinkTypeMessageDraft>(std::move(formatted_text), contains_url);
|
return td::td_api::make_object<td::td_api::internalLinkTypeMessageDraft>(std::move(formatted_text), contains_url);
|
||||||
};
|
};
|
||||||
|
auto qr_code_authentication = []() {
|
||||||
|
return td::td_api::make_object<td::td_api::internalLinkTypeQrCodeAuthentication>();
|
||||||
|
};
|
||||||
auto unknown_deep_link = [] {
|
auto unknown_deep_link = [] {
|
||||||
return td::td_api::make_object<td::td_api::internalLinkTypeUnknownDeepLink>();
|
return td::td_api::make_object<td::td_api::internalLinkTypeUnknownDeepLink>();
|
||||||
};
|
};
|
||||||
@ -241,4 +244,7 @@ TEST(Link, parse_internal_link) {
|
|||||||
parse_internal_link("t.me/login/12345678901", authentication_code("12345678901"));
|
parse_internal_link("t.me/login/12345678901", authentication_code("12345678901"));
|
||||||
parse_internal_link("t.me/login/123456", authentication_code("123456"));
|
parse_internal_link("t.me/login/123456", authentication_code("123456"));
|
||||||
parse_internal_link("t.me/login/123456/123123/12/31/a/s//21w/?asdas#test", authentication_code("123456"));
|
parse_internal_link("t.me/login/123456/123123/12/31/a/s//21w/?asdas#test", authentication_code("123456"));
|
||||||
|
|
||||||
|
parse_internal_link("tg:login?token=abacaba", qr_code_authentication());
|
||||||
|
parse_internal_link("tg:login?token=", qr_code_authentication());
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user