feat: option to open link without warning

This commit is contained in:
People-11
2026-03-27 01:37:16 +10:30
committed by GitHub
parent 3fc8796bda
commit a3d03a3c63
5 changed files with 25 additions and 1 deletions
+1
View File
@@ -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";
@@ -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());
+5
View File
@@ -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<bool> collapseSimilarChannelsChanges() const { return _collapseSimilarChannels.changes(); }
[[nodiscard]] rpl::producer<bool> hideSimilarChannelsValue() const { return _hideSimilarChannels.value(); }
[[nodiscard]] rpl::producer<bool> hideSimilarChannelsChanges() const { return _hideSimilarChannels.changes(); }
[[nodiscard]] rpl::producer<bool> disableOpenLinkWarningValue() const { return _disableOpenLinkWarning.value(); }
[[nodiscard]] rpl::producer<bool> disableOpenLinkWarningChanges() const { return _disableOpenLinkWarning.changes(); }
[[nodiscard]] rpl::producer<double> wideMultiplierValue() const { return _wideMultiplier.value(); }
[[nodiscard]] rpl::producer<double> wideMultiplierChanges() const { return _wideMultiplier.changes(); }
[[nodiscard]] rpl::producer<bool> spoofWebviewAsAndroidValue() const { return _spoofWebviewAsAndroid.value(); }
@@ -584,6 +588,7 @@ private:
rpl::variable<bool> _showOnlyAddedEmojisAndStickers = false;
rpl::variable<bool> _collapseSimilarChannels = true;
rpl::variable<bool> _hideSimilarChannels = false;
rpl::variable<bool> _disableOpenLinkWarning = false;
rpl::variable<double> _wideMultiplier = 1.0;
rpl::variable<bool> _spoofWebviewAsAndroid = false;
rpl::variable<bool> _increaseWebviewHeight = false;
@@ -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(),
@@ -46,6 +46,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include <QtCore/QDateTime>
#include <QtCore/QLocale>
// 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<ClickHandlerContext>();
if (!my.show) {
Core::App().hideMediaView();