diff options
| author | levlam <levlam@telegram.org> | 2026-01-08 20:38:20 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2026-01-08 20:38:20 +0300 |
| commit | 084533cd8d901bcf3d24d45302ca6875b76a2bf3 (patch) | |
| tree | 19e79be776a3248bcf8af78dd4b81e0d33cfdc66 | |
| parent | 494292465800ff655785bb14c9ca8043b52701f3 (diff) | |
Add settingsSectionMyStars.subsection.
| -rw-r--r-- | td/generate/scheme/td_api.tl | 5 | ||||
| -rw-r--r-- | td/telegram/LinkManager.cpp | 15 | ||||
| -rw-r--r-- | test/link.cpp | 6 |
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()); |
