aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2026-01-08 20:38:20 +0300
committerlevlam <levlam@telegram.org>2026-01-08 20:38:20 +0300
commit084533cd8d901bcf3d24d45302ca6875b76a2bf3 (patch)
tree19e79be776a3248bcf8af78dd4b81e0d33cfdc66
parent494292465800ff655785bb14c9ca8043b52701f3 (diff)
Add settingsSectionMyStars.subsection.
-rw-r--r--td/generate/scheme/td_api.tl5
-rw-r--r--td/telegram/LinkManager.cpp15
-rw-r--r--test/link.cpp6
3 files changed, 21 insertions, 5 deletions
diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl
index 9b480ccdb..b2c4448cd 100644
--- a/td/generate/scheme/td_api.tl
+++ b/td/generate/scheme/td_api.tl
@@ -8340,8 +8340,9 @@ settingsSectionFeatures = SettingsSection;
//-"translate-chats" for Translate Entire Chats toggle, "do-not-translate" - for Do Not Translate language list
settingsSectionLanguage subsection:string = SettingsSection;
-//@description The Telegram Star balance and transaction section
-settingsSectionMyStars = SettingsSection;
+//@description The Telegram Star balance and transaction section @subsection Subsection of the section if any; may be one of
+//-"top-up", "stats", "gift", "earn"
+settingsSectionMyStars subsection:string = SettingsSection;
//@description The Toncoin balance and transaction section
settingsSectionMyToncoins = SettingsSection;
diff --git a/td/telegram/LinkManager.cpp b/td/telegram/LinkManager.cpp
index 06f8203e2..011ba046e 100644
--- a/td/telegram/LinkManager.cpp
+++ b/td/telegram/LinkManager.cpp
@@ -248,6 +248,11 @@ static const vector<string> &get_language_settings_subsections() {
return subsections;
}
+static const vector<string> &get_my_stars_settings_subsections() {
+ static const vector<string> subsections{"top-up", "stats", "gift", "earn"};
+ return subsections;
+}
+
static const vector<string> &get_notification_settings_subsections() {
static const vector<string> subsections{
"accounts", "private-chats", "private-chats/edit", "private-chats/show", "private-chats/preview",
@@ -1081,6 +1086,9 @@ class LinkManager::InternalLinkSettings final : public InternalLink {
return td_api::make_object<td_api::settingsSectionSearch>();
}
if (path_[0] == "stars") {
+ if (!subsection.empty() && td::contains(get_my_stars_settings_subsections(), subsection)) {
+ return td_api::make_object<td_api::settingsSectionMyStars>(subsection);
+ }
return td_api::make_object<td_api::settingsSectionMyStars>();
}
if (path_[0] == "themes") {
@@ -3139,8 +3147,13 @@ Result<string> LinkManager::get_internal_link_impl(const td_api::InternalLinkTyp
}
return "tg://settings/language";
}
- case td_api::settingsSectionMyStars::ID:
+ case td_api::settingsSectionMyStars::ID: {
+ const auto &subsection = static_cast<const td_api::settingsSectionMyStars *>(section_ptr)->subsection_;
+ if (td::contains(get_my_stars_settings_subsections(), subsection)) {
+ return PSTRING() << "tg://settings/stars/" << subsection;
+ }
return "tg://stars";
+ }
case td_api::settingsSectionMyToncoins::ID:
return "tg://ton";
case td_api::settingsSectionNotifications::ID: {
diff --git a/test/link.cpp b/test/link.cpp
index 477407dcc..d01f8d4f2 100644
--- a/test/link.cpp
+++ b/test/link.cpp
@@ -215,8 +215,8 @@ static auto language_settings(td::string subsection = td::string()) {
return settings(td::td_api::make_object<td::td_api::settingsSectionLanguage>(subsection));
}
-static auto my_stars() {
- return settings(td::td_api::make_object<td::td_api::settingsSectionMyStars>());
+static auto my_stars(td::string subsection = td::string()) {
+ return settings(td::td_api::make_object<td::td_api::settingsSectionMyStars>(subsection));
}
static auto my_toncoins() {
@@ -1790,8 +1790,10 @@ TEST(Link, parse_internal_link_part4) {
parse_internal_link("tg://stars/aadsa#test", my_stars());
parse_internal_link("tg://stars/theme#test", my_stars());
parse_internal_link("tg:stars/theme#test", my_stars());
+ parse_internal_link("tg://stars/earn#test", my_stars());
parse_internal_link("tg://settings/stars", my_stars());
parse_internal_link("tg://settings/stars/123123", my_stars());
+ parse_internal_link("tg://settings/stars/earn#test", my_stars("earn"));
parse_internal_link("tg://ton", my_toncoins());
parse_internal_link("tg://ton?asdsa?D?SADasD?asD", my_toncoins());