diff --git a/Telegram/SourceFiles/api/api_bot.cpp b/Telegram/SourceFiles/api/api_bot.cpp index 165402d7e..e0a0162ef 100644 --- a/Telegram/SourceFiles/api/api_bot.cpp +++ b/Telegram/SourceFiles/api/api_bot.cpp @@ -366,6 +366,7 @@ void ActivateBotCommand(ClickHandlerContext context, int row, int column) { const auto itemId = item->id; const auto topicRootId = item->topicRootId(); const auto history = item->history(); + controller->show(Ui::MakeConfirmBox({ .text = tr::lng_bot_share_phone(), .confirmed = [=] { diff --git a/Telegram/SourceFiles/ayu/ayu_settings.cpp b/Telegram/SourceFiles/ayu/ayu_settings.cpp index 3fa10dc5d..a8ac6f69b 100644 --- a/Telegram/SourceFiles/ayu/ayu_settings.cpp +++ b/Telegram/SourceFiles/ayu/ayu_settings.cpp @@ -145,6 +145,14 @@ namespace AyuSettings { showMessageSeconds = val; } + void AyuGramSettings::set_stickerConfirmation(bool val) { + stickerConfirmation = val; + } + + void AyuGramSettings::set_GIFConfirmation(bool val) { + GIFConfirmation = val; + } + rpl::producer get_deletedMarkReactive() { return deletedMarkReactive.value(); } diff --git a/Telegram/SourceFiles/ayu/ayu_settings.h b/Telegram/SourceFiles/ayu/ayu_settings.h index 9f9d8cb45..e4dce13f2 100644 --- a/Telegram/SourceFiles/ayu/ayu_settings.h +++ b/Telegram/SourceFiles/ayu/ayu_settings.h @@ -36,6 +36,10 @@ namespace AyuSettings { recentStickersCount = 20; showGhostToggleInDrawer = true; + // ~ Beta functionality + stickerConfirmation = false; + GIFConfirmation = false; + /* * showPeerId = 0 means no ID shown * showPeerId = 1 means ID shown as for Telegram API devs @@ -78,6 +82,10 @@ namespace AyuSettings { QS_FIELD(bool, showMessageSeconds) + QS_FIELD(bool, stickerConfirmation) + + QS_FIELD(bool, GIFConfirmation) + public: void set_sendReadPackets(bool val); void set_sendOnlinePackets(bool val); @@ -99,6 +107,9 @@ namespace AyuSettings { void set_showGhostToggleInDrawer(bool val); void set_showPeerId(int val); void set_showMessageSeconds(bool val); + + void set_stickerConfirmation(bool val); + void set_GIFConfirmation(bool val); }; AyuGramSettings &getInstance(); diff --git a/Telegram/SourceFiles/ayu/settings/settings_ayu.cpp b/Telegram/SourceFiles/ayu/settings/settings_ayu.cpp index 05cbc5cc7..7607a575e 100644 --- a/Telegram/SourceFiles/ayu/settings/settings_ayu.cpp +++ b/Telegram/SourceFiles/ayu/settings/settings_ayu.cpp @@ -242,6 +242,8 @@ namespace Settings { AddDividerText(container, tr::ayu_SettingsCustomizationHint()); } + + void Ayu::SetupShowPeerId(not_null container, not_null controller) { auto settings = &AyuSettings::getInstance(); @@ -316,6 +318,26 @@ namespace Settings { }); } + void Ayu::SetupBetaFunctions(not_null container) { + auto settings = &AyuSettings::getInstance(); + + AddSubsectionTitle(container, rpl::single(QString("Beta functions"))); + + AddButton( + container, + rpl::single(QString("Send sticker confirmation")), + st::settingsButtonNoIcon + )->toggleOn( + rpl::single(settings->stickerConfirmation) + )->toggledValue( + ) | rpl::filter([=] (bool enabled) { + return (enabled != settings->stickerConfirmation); + }) | rpl::start_with_next([=] (bool enabled) { + settings->set_stickerConfirmation(enabled); + AyuSettings::save(); + }, container->lifetime()); + } + void Ayu::SetupAyuGramSettings(not_null container, not_null controller) { AddSkip(container); SetupGhostEssentials(container); @@ -335,6 +357,9 @@ namespace Settings { AddSkip(container); SetupCustomization(container, controller); + AddSkip(container); + SetupBetaFunctions(container); + AddDividerText(container, tr::ayu_SettingsWatermark()); } diff --git a/Telegram/SourceFiles/ayu/settings/settings_ayu.h b/Telegram/SourceFiles/ayu/settings/settings_ayu.h index c5600ef58..0998260ca 100644 --- a/Telegram/SourceFiles/ayu/settings/settings_ayu.h +++ b/Telegram/SourceFiles/ayu/settings/settings_ayu.h @@ -26,6 +26,8 @@ namespace Settings { void SetupShowPeerId(not_null container, not_null controller); void SetupRecentStickersLimitSlider(not_null container); + void SetupBetaFunctions(not_null container); + void SetupAyuGramSettings(not_null container, not_null null); void setupContent(not_null controller); }; diff --git a/Telegram/SourceFiles/chat_helpers/stickers_list_widget.cpp b/Telegram/SourceFiles/chat_helpers/stickers_list_widget.cpp index 46f3f3d4e..327eac5ca 100644 --- a/Telegram/SourceFiles/chat_helpers/stickers_list_widget.cpp +++ b/Telegram/SourceFiles/chat_helpers/stickers_list_widget.cpp @@ -1710,13 +1710,36 @@ void StickersListWidget::mouseReleaseEvent(QMouseEvent *e) { if (e->modifiers() & Qt::ControlModifier) { showStickerSetBox(document); } else { - _chosen.fire({ - .document = document, - .messageSendingFrom = messageSentAnimationInfo( - sticker->section, - sticker->index, - document), - }); + auto settings = &AyuSettings::getInstance(); + if (settings->stickerConfirmation) { + // it is necessary to store it here, because section & index can be changed by cursor position (guess) + int currentSection = sticker->section; + int currentIndex = sticker->index; + auto sendStickerCallback = [=, this] { + _chosen.fire({ + .document = document, + .messageSendingFrom = messageSentAnimationInfo( + currentSection, + currentIndex, + document), + }); + }; + + Ui::show(Ui::MakeConfirmBox({ + .text = rpl::single(QString("Do you want to send sticker?")), + .confirmed = sendStickerCallback, + .confirmText = rpl::single(QString("Send")), + })); + } + else { + _chosen.fire({ + .document = document, + .messageSendingFrom = messageSentAnimationInfo( + sticker->section, + sticker->index, + document), + }); + } } } else if (auto set = std::get_if(&pressed)) { Assert(set->section >= 0 && set->section < sets.size());