From a3d03a3c633cc9381283ab0f4abbe5341c36c868 Mon Sep 17 00:00:00 2001 From: People-11 <41558215+People-11@users.noreply.github.com> Date: Fri, 27 Mar 2026 01:37:16 +1030 Subject: [PATCH] feat: option to open link without warning --- Telegram/Resources/langs/lang.strings | 1 + Telegram/SourceFiles/ayu/ayu_settings.cpp | 8 ++++++++ Telegram/SourceFiles/ayu/ayu_settings.h | 5 +++++ Telegram/SourceFiles/ayu/ui/settings/settings_general.cpp | 7 +++++++ Telegram/SourceFiles/core/click_handler_types.cpp | 5 ++++- 5 files changed, 25 insertions(+), 1 deletion(-) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 1fa66dadbd..fb22814d87 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -7800,6 +7800,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "ayu_KeepAliveServiceNote" = "We recommend migrating to **FCM** version."; "ayu_DisableAds" = "Disable Ads"; "ayu_DisableStories" = "Disable Stories"; +"ayu_DisableOpenLinkWarning" = "Disable Open Link Warning"; "ayu_DisableCustomBackgrounds" = "Disable Custom Backgrounds"; "ayu_HidePremiumStatuses" = "Hide Premium Statuses"; "ayu_SmoothScroll" = "Smooth Scroll"; diff --git a/Telegram/SourceFiles/ayu/ayu_settings.cpp b/Telegram/SourceFiles/ayu/ayu_settings.cpp index 3fbc89f6fd..4d5d3f8068 100644 --- a/Telegram/SourceFiles/ayu/ayu_settings.cpp +++ b/Telegram/SourceFiles/ayu/ayu_settings.cpp @@ -581,6 +581,12 @@ void AyuSettings::setSpoofWebviewAsAndroid(bool val) { save(); } +void AyuSettings::setDisableOpenLinkWarning(bool val) { + if (_disableOpenLinkWarning.current() == val) return; + _disableOpenLinkWarning = val; + save(); +} + void AyuSettings::setIncreaseWebviewHeight(bool val) { if (_increaseWebviewHeight.current() == val) return; _increaseWebviewHeight = val; @@ -993,6 +999,7 @@ void to_json(nlohmann::json &j, const AyuSettings &s) { {"showOnlyAddedEmojisAndStickers", s._showOnlyAddedEmojisAndStickers.current()}, {"collapseSimilarChannels", s._collapseSimilarChannels.current()}, {"hideSimilarChannels", s._hideSimilarChannels.current()}, + {"disableOpenLinkWarning", s._disableOpenLinkWarning.current()}, {"wideMultiplier", s._wideMultiplier.current()}, {"spoofWebviewAsAndroid", s._spoofWebviewAsAndroid.current()}, {"increaseWebviewHeight", s._increaseWebviewHeight.current()}, @@ -1089,6 +1096,7 @@ void from_json(const nlohmann::json &j, AyuSettings &s) { s._showOnlyAddedEmojisAndStickers = j.value("showOnlyAddedEmojisAndStickers", defaults._showOnlyAddedEmojisAndStickers.current()); s._collapseSimilarChannels = j.value("collapseSimilarChannels", defaults._collapseSimilarChannels.current()); s._hideSimilarChannels = j.value("hideSimilarChannels", defaults._hideSimilarChannels.current()); + s._disableOpenLinkWarning = j.value("disableOpenLinkWarning", defaults._disableOpenLinkWarning.current()); s._wideMultiplier = j.value("wideMultiplier", defaults._wideMultiplier.current()); s._spoofWebviewAsAndroid = j.value("spoofWebviewAsAndroid", defaults._spoofWebviewAsAndroid.current()); s._increaseWebviewHeight = j.value("increaseWebviewHeight", defaults._increaseWebviewHeight.current()); diff --git a/Telegram/SourceFiles/ayu/ayu_settings.h b/Telegram/SourceFiles/ayu/ayu_settings.h index 51e6363cd6..f1b79b4187 100644 --- a/Telegram/SourceFiles/ayu/ayu_settings.h +++ b/Telegram/SourceFiles/ayu/ayu_settings.h @@ -255,6 +255,7 @@ public: [[nodiscard]] bool showOnlyAddedEmojisAndStickers() const { return _showOnlyAddedEmojisAndStickers.current(); } [[nodiscard]] bool collapseSimilarChannels() const { return _collapseSimilarChannels.current(); } [[nodiscard]] bool hideSimilarChannels() const { return _hideSimilarChannels.current(); } + [[nodiscard]] bool disableOpenLinkWarning() const { return _disableOpenLinkWarning.current(); } [[nodiscard]] double wideMultiplier() const { return _wideMultiplier.current(); } [[nodiscard]] bool spoofWebviewAsAndroid() const { return _spoofWebviewAsAndroid.current(); } [[nodiscard]] bool increaseWebviewHeight() const { return _increaseWebviewHeight.current(); } @@ -335,6 +336,7 @@ public: void setShowOnlyAddedEmojisAndStickers(bool val); void setCollapseSimilarChannels(bool val); void setHideSimilarChannels(bool val); + void setDisableOpenLinkWarning(bool val); void setWideMultiplier(double val); void setSpoofWebviewAsAndroid(bool val); void setIncreaseWebviewHeight(bool val); @@ -431,6 +433,8 @@ public: [[nodiscard]] rpl::producer collapseSimilarChannelsChanges() const { return _collapseSimilarChannels.changes(); } [[nodiscard]] rpl::producer hideSimilarChannelsValue() const { return _hideSimilarChannels.value(); } [[nodiscard]] rpl::producer hideSimilarChannelsChanges() const { return _hideSimilarChannels.changes(); } + [[nodiscard]] rpl::producer disableOpenLinkWarningValue() const { return _disableOpenLinkWarning.value(); } + [[nodiscard]] rpl::producer disableOpenLinkWarningChanges() const { return _disableOpenLinkWarning.changes(); } [[nodiscard]] rpl::producer wideMultiplierValue() const { return _wideMultiplier.value(); } [[nodiscard]] rpl::producer wideMultiplierChanges() const { return _wideMultiplier.changes(); } [[nodiscard]] rpl::producer spoofWebviewAsAndroidValue() const { return _spoofWebviewAsAndroid.value(); } @@ -584,6 +588,7 @@ private: rpl::variable _showOnlyAddedEmojisAndStickers = false; rpl::variable _collapseSimilarChannels = true; rpl::variable _hideSimilarChannels = false; + rpl::variable _disableOpenLinkWarning = false; rpl::variable _wideMultiplier = 1.0; rpl::variable _spoofWebviewAsAndroid = false; rpl::variable _increaseWebviewHeight = false; diff --git a/Telegram/SourceFiles/ayu/ui/settings/settings_general.cpp b/Telegram/SourceFiles/ayu/ui/settings/settings_general.cpp index bb52c94c0e..d5c3d1bf0d 100644 --- a/Telegram/SourceFiles/ayu/ui/settings/settings_general.cpp +++ b/Telegram/SourceFiles/ayu/ui/settings/settings_general.cpp @@ -132,6 +132,13 @@ void BuildQoLToggles(SectionBuilder &builder, AyuSectionBuilder &ayu) { .setter = &AyuSettings::setDisableStories, }); + ayu.addSettingToggle({ + .id = u"ayu/disableOpenLinkWarning"_q, + .title = tr::ayu_DisableOpenLinkWarning(), + .getter = &AyuSettings::disableOpenLinkWarning, + .setter = &AyuSettings::setDisableOpenLinkWarning, + }); + ayu.addCollapsibleToggle({ .id = u"ayu/similarChannels"_q, .title = tr::ayu_DisableSimilarChannels(), diff --git a/Telegram/SourceFiles/core/click_handler_types.cpp b/Telegram/SourceFiles/core/click_handler_types.cpp index d7db236cef..55fa71a2d8 100644 --- a/Telegram/SourceFiles/core/click_handler_types.cpp +++ b/Telegram/SourceFiles/core/click_handler_types.cpp @@ -46,6 +46,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include #include +// AyuGram includes +#include "ayu/ayu_settings.h" + namespace { constexpr auto kReminderSetToastDuration = 4 * crl::time(1000); @@ -260,7 +263,7 @@ void HiddenUrlClickHandler::Open(QString url, QVariant context) { const auto parsedUrl = url.startsWith(u"tonsite://"_q) ? QUrl(url) : QUrl::fromUserInput(url); - if (UrlRequiresConfirmation(parsedUrl) && !base::IsCtrlPressed()) { + if (!AyuSettings::getInstance().disableOpenLinkWarning() && UrlRequiresConfirmation(parsedUrl) && !base::IsCtrlPressed()) { const auto my = context.value(); if (!my.show) { Core::App().hideMediaView();