diff --git a/Telegram/SourceFiles/ayu/ayu_settings.cpp b/Telegram/SourceFiles/ayu/ayu_settings.cpp index 41df99615..27f4b29b1 100644 --- a/Telegram/SourceFiles/ayu/ayu_settings.cpp +++ b/Telegram/SourceFiles/ayu/ayu_settings.cpp @@ -230,6 +230,11 @@ namespace AyuSettings voiceConfirmation = val; } + void AyuGramSettings::set_copyUsernameAsLink(bool val) + { + copyUsernameAsLink = val; + } + bool get_ghostModeEnabled() { return ghostModeEnabled.current(); diff --git a/Telegram/SourceFiles/ayu/ayu_settings.h b/Telegram/SourceFiles/ayu/ayu_settings.h index d41472ea5..8bfe62794 100644 --- a/Telegram/SourceFiles/ayu/ayu_settings.h +++ b/Telegram/SourceFiles/ayu/ayu_settings.h @@ -35,6 +35,7 @@ namespace AyuSettings // ~ QoL toggles enableAds = false; + copyUsernameAsLink = true; // ~ Customization deletedMark = "🧹"; @@ -75,6 +76,7 @@ namespace AyuSettings bool stickerConfirmation; bool GIFConfirmation; bool voiceConfirmation; + bool copyUsernameAsLink; public: void set_sendReadPackets(bool val); @@ -112,6 +114,8 @@ namespace AyuSettings void set_GIFConfirmation(bool val); void set_voiceConfirmation(bool val); + + void set_copyUsernameAsLink(bool val); }; NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE( @@ -133,7 +137,8 @@ namespace AyuSettings showMessageSeconds, stickerConfirmation, GIFConfirmation, - voiceConfirmation + voiceConfirmation, + copyUsernameAsLink ); AyuGramSettings& getInstance(); @@ -152,4 +157,4 @@ namespace AyuSettings bool get_ghostModeEnabled(); rpl::producer get_ghostModeEnabledReactive(); -} +} \ No newline at end of file diff --git a/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp b/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp index 9946c94e3..b33b6da5c 100644 --- a/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp +++ b/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp @@ -23,7 +23,9 @@ #include "platform/platform_specific.h" #include "settings/settings_common.h" #include "storage/localstorage.h" +#include "styles/style_basic.h" #include "styles/style_settings.h" +#include "styles/style_widgets.h" #include "ui/boxes/single_choice_box.h" #include "ui/widgets/buttons.h" #include "ui/widgets/checkbox.h" @@ -209,6 +211,22 @@ namespace Settings settings->set_enableAds(enabled); AyuSettings::save(); }, container->lifetime()); + + AddButton( + container, + rpl::single(QString("Copy username as link")), + st::settingsButtonNoIcon + )->toggleOn( + rpl::single(settings->copyUsernameAsLink) + )->toggledValue( + ) | rpl::filter([=](bool enabled) + { + return (enabled != settings->copyUsernameAsLink); + }) | start_with_next([=](bool enabled) + { + settings->set_copyUsernameAsLink(enabled); + AyuSettings::save(); + }, container->lifetime()); } void Ayu::SetupCustomization(not_null container, @@ -381,7 +399,7 @@ namespace Settings }); } - void Ayu::SetupBetaFunctions(not_null container) + void Ayu::SetupSendConfirmations(not_null container) { auto settings = &AyuSettings::getInstance(); @@ -463,8 +481,8 @@ namespace Settings AddDivider(container); AddSkip(container); - SetupBetaFunctions(container); - + SetupSendConfirmations(container); + AddDividerText(container, tr::ayu_SettingsWatermark()); } diff --git a/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.h b/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.h index 817fc9fe9..c4fa86ea5 100644 --- a/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.h +++ b/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.h @@ -43,7 +43,7 @@ namespace Settings void SetupAyuSync(not_null container); - void SetupBetaFunctions(not_null container); + void SetupSendConfirmations(not_null container); void SetupAyuGramSettings(not_null container, not_null null); diff --git a/Telegram/SourceFiles/info/profile/info_profile_actions.cpp b/Telegram/SourceFiles/info/profile/info_profile_actions.cpp index 6995832bb..a502931ba 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_actions.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_actions.cpp @@ -110,11 +110,22 @@ namespace { std::shared_ptr show, const QString &addToLink) { return [=](QString link) { - if (!link.startsWith(u"https://"_q)) { - link = peer->session().createInternalLinkFull(peer->userName()) - + addToLink; + auto settings = &AyuSettings::getInstance(); + if (!settings->copyUsernameAsLink) + { + link = '@' + peer->userName(); } - if (!link.isEmpty()) { + else + { + if (!link.startsWith(u"https://"_q)) + { + link = peer->session().createInternalLinkFull(peer->userName()) + + addToLink; + } + } + + if (!link.isEmpty()) + { QGuiApplication::clipboard()->setText(link); show->showToast(tr::lng_username_copied(tr::now)); }