diff --git a/Telegram/SourceFiles/data/components/sponsored_messages.cpp b/Telegram/SourceFiles/data/components/sponsored_messages.cpp index 4cb54fc7e..c20ec967e 100644 --- a/Telegram/SourceFiles/data/components/sponsored_messages.cpp +++ b/Telegram/SourceFiles/data/components/sponsored_messages.cpp @@ -443,6 +443,22 @@ auto SponsoredMessages::createReportCallback(const FullMsgId &fullId) return; } + const auto erase = [=] { + const auto it = _data.find(history); + if (it != end(_data)) { + auto &list = it->second.entries; + const auto proj = [&](const Entry &e) { + return e.itemFullId == fullId; + }; + list.erase(ranges::remove_if(list, proj), end(list)); + } + }; + + if (optionId == Result::Id("-1")) { + erase(); + return; + } + state->requestId = _session->api().request( MTPchannels_ReportSponsoredMessage( channel->inputChannel, @@ -469,14 +485,7 @@ auto SponsoredMessages::createReportCallback(const FullMsgId &fullId) }, [](const TLAdsHidden &data) -> Result { return { .result = Result::FinalStep::Hidden }; }, [&](const TLReported &data) -> Result { - const auto it = _data.find(history); - if (it != end(_data)) { - auto &list = it->second.entries; - const auto proj = [&](const Entry &e) { - return e.itemFullId == fullId; - }; - list.erase(ranges::remove_if(list, proj), end(list)); - } + erase(); if (optionId == Result::Id("1")) { // I don't like it. return { .result = Result::FinalStep::Silence }; } diff --git a/Telegram/SourceFiles/menu/menu_sponsored.cpp b/Telegram/SourceFiles/menu/menu_sponsored.cpp index e917c3f07..f836106d0 100644 --- a/Telegram/SourceFiles/menu/menu_sponsored.cpp +++ b/Telegram/SourceFiles/menu/menu_sponsored.cpp @@ -332,9 +332,7 @@ void ShowSponsored( not_null item) { Expects(item->isSponsored()); - struct State final { - }; - const auto state = std::make_shared(); + const auto session = &item->history()->session(); const auto menu = Ui::CreateChild( parent.get(), @@ -351,7 +349,13 @@ void ShowSponsored( menu->addSeparator(&st::expandedMenuSeparator); menu->addAction(tr::lng_sponsored_hide_ads(tr::now), [=] { - ShowPremiumPreviewBox(show, PremiumFeature::NoAds); + if (session->premium()) { + using Result = Data::SponsoredReportResult; + session->sponsoredMessages().createReportCallback( + item->fullId())(Result::Id("-1"), [](const auto &) {}); + } else { + ShowPremiumPreviewBox(show, PremiumFeature::NoAds); + } }, &st::menuIconCancel); menu->popup(QCursor::pos());