diff options
| author | levlam <levlam@telegram.org> | 2026-01-08 21:01:16 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2026-01-08 21:01:16 +0300 |
| commit | ffd257f25322e41a50e6a15872deba2c94a4f73d (patch) | |
| tree | 82767c825ac3ff86fabcb9c14c19f9ba29184433 | |
| parent | 57e95d0eceb5855452c82a0f5fac991eb2adcd53 (diff) | |
Add td_api::settingsSectionQrCode.
| -rw-r--r-- | td/generate/scheme/td_api.tl | 4 | ||||
| -rw-r--r-- | td/telegram/LinkManager.cpp | 18 | ||||
| -rw-r--r-- | test/link.cpp | 9 |
3 files changed, 31 insertions, 0 deletions
diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index 5a138aaef..0f96e8857 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -8393,6 +8393,10 @@ settingsSectionPrivacyAndSecurity subsection:string = SettingsSection; //@description The "Privacy Policy" section settingsSectionPrivacyPolicy = SettingsSection; +//@description The current user's QR code section @subsection Subsection of the section if any; may be one of +//-"share", "scan" +settingsSectionQrCode subsection:string = SettingsSection; + //@description Search in Settings settingsSectionSearch = SettingsSection; diff --git a/td/telegram/LinkManager.cpp b/td/telegram/LinkManager.cpp index 1d96d7789..fe3bf8010 100644 --- a/td/telegram/LinkManager.cpp +++ b/td/telegram/LinkManager.cpp @@ -303,6 +303,11 @@ static const vector<string> &get_privacy_settings_subsections() { return subsections; } +static const vector<string> &get_qr_code_settings_subsections() { + static const vector<string> subsections{"share", "scan"}; + return subsections; +} + static string get_url_query_hash(bool is_tg, const HttpUrlQuery &url_query) { const auto &path = url_query.path_; if (is_tg) { @@ -1099,6 +1104,12 @@ class LinkManager::InternalLinkSettings final : public InternalLink { if (path_[0] == "privacy-policy") { return td_api::make_object<td_api::settingsSectionPrivacyPolicy>(); } + if (path_[0] == "qr-code") { + if (td::contains(get_qr_code_settings_subsections(), subsection)) { + return td_api::make_object<td_api::settingsSectionQrCode>(subsection); + } + return td_api::make_object<td_api::settingsSectionQrCode>(); + } if (path_[0] == "search") { return td_api::make_object<td_api::settingsSectionSearch>(); } @@ -3211,6 +3222,13 @@ Result<string> LinkManager::get_internal_link_impl(const td_api::InternalLinkTyp } case td_api::settingsSectionPrivacyPolicy::ID: return "tg://settings/privacy-policy"; + case td_api::settingsSectionQrCode::ID: { + const auto &subsection = static_cast<const td_api::settingsSectionQrCode *>(section_ptr)->subsection_; + if (td::contains(get_qr_code_settings_subsections(), subsection)) { + return PSTRING() << "tg://settings/qr-code/" << subsection; + } + return "tg://settings/qr-code"; + } case td_api::settingsSectionSearch::ID: return "tg://settings/search"; default: diff --git a/test/link.cpp b/test/link.cpp index b28a8085d..7affee266 100644 --- a/test/link.cpp +++ b/test/link.cpp @@ -243,6 +243,10 @@ static auto privacy_policy() { return settings(td::td_api::make_object<td::td_api::settingsSectionPrivacyPolicy>()); } +static auto qr_code(td::string subsection = td::string()) { + return settings(td::td_api::make_object<td::td_api::settingsSectionQrCode>(subsection)); +} + static auto search() { return settings(td::td_api::make_object<td::td_api::settingsSectionSearch>()); } @@ -1833,6 +1837,11 @@ TEST(Link, parse_internal_link_part4) { parse_internal_link("tg://settings/chat/browser/history", in_app_browser("history")); parse_internal_link("tg://settings/chat/browser/search", in_app_browser("search")); + parse_internal_link("tg://settings/qr-code", qr_code()); + parse_internal_link("tg://settings/qr-code/share", qr_code("share")); + parse_internal_link("tg://settings/qr-code/share/", qr_code("share")); + parse_internal_link("tg://settings/qr-code/share/a", qr_code()); + parse_internal_link("tg://stars_topup", unknown_deep_link("tg://stars_topup")); parse_internal_link("tg://stars_topup?balance=", unknown_deep_link("tg://stars_topup?balance=")); parse_internal_link("tg://stars_topup?balance=test", buy_stars(1, "")); |
