Added ability to open menu for sponsored messages without history item.

This commit is contained in:
23rd 2024-10-26 12:55:22 +03:00
parent 304bcfd343
commit 2db30690ce
4 changed files with 13 additions and 18 deletions

View file

@ -409,7 +409,7 @@ ClickHandlerPtr ReportSponsoredClickHandler(not_null<HistoryItem*> item) {
Menu::ShowSponsored(
controller->widget(),
controller->uiShow(),
item);
item->fullId());
}
});
}

View file

@ -1574,7 +1574,8 @@ void OverlayWidget::fillContextMenuActions(
if (_message && _message->isSponsored()) {
if (const auto window = findWindow()) {
const auto show = window->uiShow();
Menu::FillSponsored(_body, addAction, show, _message, true);
const auto fullId = _message->fullId();
Menu::FillSponsored(_body, addAction, show, fullId, true);
}
return;
}

View file

@ -218,10 +218,8 @@ void AboutBox(
void ShowReportSponsoredBox(
std::shared_ptr<ChatHelpers::Show> show,
not_null<HistoryItem*> item) {
const auto peer = item->history()->peer;
auto &sponsoredMessages = peer->session().sponsoredMessages();
const auto fullId = item->fullId();
const FullMsgId &fullId) {
auto &sponsoredMessages = show->session().sponsoredMessages();
const auto report = sponsoredMessages.createReportCallback(fullId);
const auto guideLink = Ui::Text::Link(
tr::lng_report_sponsored_reported_link(tr::now),
@ -306,18 +304,16 @@ void FillSponsored(
not_null<Ui::RpWidget*> parent,
const Ui::Menu::MenuCallback &addAction,
std::shared_ptr<ChatHelpers::Show> show,
not_null<HistoryItem*> item,
const FullMsgId &fullId,
bool mediaViewer) {
Expects(item->isSponsored());
const auto session = &item->history()->session();
const auto session = &show->session();
addAction(tr::lng_sponsored_menu_revenued_about(tr::now), [=] {
show->show(Box(AboutBox, show));
}, (mediaViewer ? &st::mediaMenuIconInfo : &st::menuIconInfo));
addAction(tr::lng_sponsored_menu_revenued_report(tr::now), [=] {
ShowReportSponsoredBox(show, item);
ShowReportSponsoredBox(show, fullId);
}, (mediaViewer ? &st::mediaMenuIconBlock : &st::menuIconBlock));
addAction({
@ -331,7 +327,7 @@ void FillSponsored(
if (session->premium()) {
using Result = Data::SponsoredReportResult;
session->sponsoredMessages().createReportCallback(
item->fullId())(Result::Id("-1"), [](const auto &) {});
fullId)(Result::Id("-1"), [](const auto &) {});
} else {
ShowPremiumPreviewBox(show, PremiumFeature::NoAds);
}
@ -341,9 +337,7 @@ void FillSponsored(
void ShowSponsored(
not_null<Ui::RpWidget*> parent,
std::shared_ptr<ChatHelpers::Show> show,
not_null<HistoryItem*> item) {
Expects(item->isSponsored());
const FullMsgId &fullId) {
const auto menu = Ui::CreateChild<Ui::PopupMenu>(
parent.get(),
st::popupMenuWithIcons);
@ -352,7 +346,7 @@ void ShowSponsored(
parent,
Ui::Menu::CreateAddActionCallback(menu),
show,
item,
fullId,
false);
menu->popup(QCursor::pos());

View file

@ -26,13 +26,13 @@ void FillSponsored(
not_null<Ui::RpWidget*> parent,
const Ui::Menu::MenuCallback &addAction,
std::shared_ptr<ChatHelpers::Show> show,
not_null<HistoryItem*> item,
const FullMsgId &fullId,
bool mediaViewer);
void ShowSponsored(
not_null<Ui::RpWidget*> parent,
std::shared_ptr<ChatHelpers::Show> show,
not_null<HistoryItem*> item);
const FullMsgId &fullId);
void ShowSponsoredAbout(std::shared_ptr<ChatHelpers::Show> show);