Skip to content

Commit 57e95d0

Browse files
committed
Add td_api::settingsSectionInAppBrowser.
1 parent 084533c commit 57e95d0

3 files changed

Lines changed: 47 additions & 9 deletions

File tree

td/generate/scheme/td_api.tl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8336,6 +8336,10 @@ settingsSectionFaq = SettingsSection;
83368336
//@description The "Telegram Features" section
83378337
settingsSectionFeatures = SettingsSection;
83388338

8339+
//@description The in-app browser settings section @subsection Subsection of the section if any; may be one of
8340+
//-"enable-browser", "clear-cookies", "clear-cache", "history", "clear-history", "never-open", "clear-list", "search"
8341+
settingsSectionInAppBrowser subsection:string = SettingsSection;
8342+
83398343
//@description The application language section @subsection Subsection of the section if any; may be one of "show-button" for Show Translate Button toggle,
83408344
//-"translate-chats" for Translate Entire Chats toggle, "do-not-translate" - for Do Not Translate language list
83418345
settingsSectionLanguage subsection:string = SettingsSection;

td/telegram/LinkManager.cpp

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,12 @@ static const vector<string> &get_folder_settings_subsections() {
243243
return subsections;
244244
}
245245

246+
static const vector<string> &get_in_app_browser_settings_subsections() {
247+
static const vector<string> subsections{"enable-browser", "clear-cookies", "clear-cache", "history",
248+
"clear-history", "never-open", "clear-list", "search"};
249+
return subsections;
250+
}
251+
246252
static const vector<string> &get_language_settings_subsections() {
247253
static const vector<string> subsections{"show-button", "translate-chats", "do-not-translate"};
248254
return subsections;
@@ -991,7 +997,7 @@ class LinkManager::InternalLinkSettings final : public InternalLink {
991997
}
992998
}
993999
if (path_[0] == "appearance") {
994-
if (!subsection.empty() && td::contains(get_appearance_settings_subsections(), subsection)) {
1000+
if (td::contains(get_appearance_settings_subsections(), subsection)) {
9951001
return td_api::make_object<td_api::settingsSectionAppearance>(subsection);
9961002
}
9971003
return td_api::make_object<td_api::settingsSectionAppearance>();
@@ -1005,20 +1011,31 @@ class LinkManager::InternalLinkSettings final : public InternalLink {
10051011
if (path_[0] == "change_number") {
10061012
return td_api::make_object<td_api::settingsSectionEditProfile>("change-number");
10071013
}
1014+
if (path_[0] == "chat" && path_.size() >= 2u && path_[1] == "browser") {
1015+
if (path_.size() == 2u) {
1016+
subsection = string();
1017+
} else {
1018+
subsection = path_[2];
1019+
}
1020+
if (td::contains(get_in_app_browser_settings_subsections(), subsection)) {
1021+
return td_api::make_object<td_api::settingsSectionInAppBrowser>(subsection);
1022+
}
1023+
return td_api::make_object<td_api::settingsSectionInAppBrowser>();
1024+
}
10081025
if (path_[0] == "data") {
1009-
if (!subsection.empty() && td::contains(get_data_settings_subsections(), subsection)) {
1026+
if (td::contains(get_data_settings_subsections(), subsection)) {
10101027
return td_api::make_object<td_api::settingsSectionDataAndStorage>(subsection);
10111028
}
10121029
return td_api::make_object<td_api::settingsSectionDataAndStorage>();
10131030
}
10141031
if (path_[0] == "devices") {
1015-
if (!subsection.empty() && td::contains(get_device_settings_subsections(), subsection)) {
1032+
if (td::contains(get_device_settings_subsections(), subsection)) {
10161033
return td_api::make_object<td_api::settingsSectionDevices>(subsection);
10171034
}
10181035
return td_api::make_object<td_api::settingsSectionDevices>();
10191036
}
10201037
if (path_[0] == "edit") {
1021-
if (!subsection.empty() && td::contains(get_edit_profile_settings_subsections(), subsection)) {
1038+
if (td::contains(get_edit_profile_settings_subsections(), subsection)) {
10221039
return td_api::make_object<td_api::settingsSectionEditProfile>(subsection);
10231040
}
10241041
return td_api::make_object<td_api::settingsSectionEditProfile>();
@@ -1044,13 +1061,13 @@ class LinkManager::InternalLinkSettings final : public InternalLink {
10441061
return td_api::make_object<td_api::settingsSectionFeatures>();
10451062
}
10461063
if (path_[0] == "folders") {
1047-
if (!subsection.empty() && td::contains(get_folder_settings_subsections(), subsection)) {
1064+
if (td::contains(get_folder_settings_subsections(), subsection)) {
10481065
return td_api::make_object<td_api::settingsSectionChatFolders>(subsection);
10491066
}
10501067
return td_api::make_object<td_api::settingsSectionChatFolders>();
10511068
}
10521069
if (path_[0] == "language") {
1053-
if (!subsection.empty() && td::contains(get_language_settings_subsections(), subsection)) {
1070+
if (td::contains(get_language_settings_subsections(), subsection)) {
10541071
return td_api::make_object<td_api::settingsSectionLanguage>(subsection);
10551072
}
10561073
return td_api::make_object<td_api::settingsSectionLanguage>();
@@ -1059,7 +1076,7 @@ class LinkManager::InternalLinkSettings final : public InternalLink {
10591076
return td_api::make_object<td_api::settingsSectionPrivacyAndSecurity>("login-email");
10601077
}
10611078
if (path_[0] == "notifications") {
1062-
if (!subsection.empty() && td::contains(get_notification_settings_subsections(), subsection)) {
1079+
if (td::contains(get_notification_settings_subsections(), subsection)) {
10631080
return td_api::make_object<td_api::settingsSectionNotifications>(subsection);
10641081
}
10651082
return td_api::make_object<td_api::settingsSectionNotifications>();
@@ -1074,7 +1091,7 @@ class LinkManager::InternalLinkSettings final : public InternalLink {
10741091
return td_api::make_object<td_api::settingsSectionPremium>();
10751092
}
10761093
if (path_[0] == "privacy") {
1077-
if (!subsection.empty() && td::contains(get_privacy_settings_subsections(), subsection)) {
1094+
if (td::contains(get_privacy_settings_subsections(), subsection)) {
10781095
return td_api::make_object<td_api::settingsSectionPrivacyAndSecurity>(subsection);
10791096
}
10801097
return td_api::make_object<td_api::settingsSectionPrivacyAndSecurity>();
@@ -1086,7 +1103,7 @@ class LinkManager::InternalLinkSettings final : public InternalLink {
10861103
return td_api::make_object<td_api::settingsSectionSearch>();
10871104
}
10881105
if (path_[0] == "stars") {
1089-
if (!subsection.empty() && td::contains(get_my_stars_settings_subsections(), subsection)) {
1106+
if (td::contains(get_my_stars_settings_subsections(), subsection)) {
10901107
return td_api::make_object<td_api::settingsSectionMyStars>(subsection);
10911108
}
10921109
return td_api::make_object<td_api::settingsSectionMyStars>();
@@ -3140,6 +3157,13 @@ Result<string> LinkManager::get_internal_link_impl(const td_api::InternalLinkTyp
31403157
return "tg://settings/faq";
31413158
case td_api::settingsSectionFeatures::ID:
31423159
return "tg://settings/features";
3160+
case td_api::settingsSectionInAppBrowser::ID: {
3161+
const auto &subsection = static_cast<const td_api::settingsSectionInAppBrowser *>(section_ptr)->subsection_;
3162+
if (td::contains(get_in_app_browser_settings_subsections(), subsection)) {
3163+
return PSTRING() << "tg://settings/chat/browser/" << subsection;
3164+
}
3165+
return "tg://settings/chat/browser";
3166+
}
31433167
case td_api::settingsSectionLanguage::ID: {
31443168
const auto &subsection = static_cast<const td_api::settingsSectionLanguage *>(section_ptr)->subsection_;
31453169
if (td::contains(get_language_settings_subsections(), subsection)) {

test/link.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,10 @@ static auto features() {
211211
return settings(td::td_api::make_object<td::td_api::settingsSectionFeatures>());
212212
}
213213

214+
static auto in_app_browser(td::string subsection = td::string()) {
215+
return settings(td::td_api::make_object<td::td_api::settingsSectionInAppBrowser>(subsection));
216+
}
217+
214218
static auto language_settings(td::string subsection = td::string()) {
215219
return settings(td::td_api::make_object<td::td_api::settingsSectionLanguage>(subsection));
216220
}
@@ -1823,6 +1827,12 @@ TEST(Link, parse_internal_link_part4) {
18231827
parse_internal_link("tg://search", unknown_deep_link("tg://search"));
18241828
parse_internal_link("tg://settings/search", search());
18251829

1830+
parse_internal_link("tg://settings/chat/browser", in_app_browser());
1831+
parse_internal_link("tg://settings/chat/browser/", in_app_browser());
1832+
parse_internal_link("tg://settings/chat/browser/abaa", in_app_browser());
1833+
parse_internal_link("tg://settings/chat/browser/history", in_app_browser("history"));
1834+
parse_internal_link("tg://settings/chat/browser/search", in_app_browser("search"));
1835+
18261836
parse_internal_link("tg://stars_topup", unknown_deep_link("tg://stars_topup"));
18271837
parse_internal_link("tg://stars_topup?balance=", unknown_deep_link("tg://stars_topup?balance="));
18281838
parse_internal_link("tg://stars_topup?balance=test", buy_stars(1, ""));

0 commit comments

Comments
 (0)