From 3b6870396c915ab4af3c6f92b8d3cfd59fa54653 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Tue, 28 May 2024 19:06:48 +0300 Subject: [PATCH] Added ability to hide every sponsored message to premium users. --- Telegram/SourceFiles/history/history_inner_widget.cpp | 8 +++++++- Telegram/SourceFiles/history/history_item_helpers.cpp | 10 +++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Telegram/SourceFiles/history/history_inner_widget.cpp b/Telegram/SourceFiles/history/history_inner_widget.cpp index 1b5e78f3ef..9809f9c89e 100644 --- a/Telegram/SourceFiles/history/history_inner_widget.cpp +++ b/Telegram/SourceFiles/history/history_inner_widget.cpp @@ -161,7 +161,13 @@ void FillSponsoredMessagesMenu( menu->addSeparator(&st::expandedMenuSeparator); } menu->addAction(tr::lng_sponsored_hide_ads(tr::now), [=] { - ShowPremiumPreviewBox(controller, PremiumFeature::NoAds); + if (controller->session().premium()) { + using Result = Data::SponsoredReportResult; + controller->session().sponsoredMessages().createReportCallback( + itemId)(Result::Id("-1"), [](const auto &) {}); + } else { + ShowPremiumPreviewBox(controller, PremiumFeature::NoAds); + } }, &st::menuIconCancel); } diff --git a/Telegram/SourceFiles/history/history_item_helpers.cpp b/Telegram/SourceFiles/history/history_item_helpers.cpp index 7b51f751c7..d3d9569e6d 100644 --- a/Telegram/SourceFiles/history/history_item_helpers.cpp +++ b/Telegram/SourceFiles/history/history_item_helpers.cpp @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "api/api_text_entities.h" #include "boxes/premium_preview_box.h" #include "calls/calls_instance.h" +#include "data/components/sponsored_messages.h" #include "data/stickers/data_custom_emoji.h" #include "data/notify/data_notify_settings.h" #include "data/data_channel.h" @@ -363,7 +364,14 @@ ClickHandlerPtr HideSponsoredClickHandler() { return std::make_shared([=](ClickContext context) { const auto my = context.other.value(); if (const auto controller = my.sessionWindow.get()) { - ShowPremiumPreviewBox(controller, PremiumFeature::NoAds); + const auto &session = controller->session(); + if (session.premium()) { + using Result = Data::SponsoredReportResult; + session.sponsoredMessages().createReportCallback( + my.itemId)(Result::Id("-1"), [](const auto &) {}); + } else { + ShowPremiumPreviewBox(controller, PremiumFeature::NoAds); + } } }); }