From 6f752357d7ede491b3182635758e7c15ac7045cd Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Fri, 24 Jan 2025 17:30:01 +0300 Subject: [PATCH] Fixed ability to moderate messages from topbar in sections. --- .../history/view/history_view_list_widget.cpp | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/Telegram/SourceFiles/history/view/history_view_list_widget.cpp b/Telegram/SourceFiles/history/view/history_view_list_widget.cpp index 569e62e06..10cea51b4 100644 --- a/Telegram/SourceFiles/history/view/history_view_list_widget.cpp +++ b/Telegram/SourceFiles/history/view/history_view_list_widget.cpp @@ -44,6 +44,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "window/window_session_controller.h" #include "window/window_peer_menu.h" #include "main/main_session.h" +#include "ui/layers/generic_box.h" #include "ui/widgets/popup_menu.h" #include "ui/widgets/scroll_area.h" #include "ui/toast/toast.h" @@ -57,6 +58,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/ui_utility.h" #include "lang/lang_keys.h" #include "boxes/delete_messages_box.h" +#include "boxes/moderate_messages_box.h" #include "boxes/premium_preview_box.h" #include "boxes/peers/edit_participant_box.h" #include "core/crash_reports.h" @@ -4289,18 +4291,30 @@ void ConfirmDeleteSelectedItems(not_null widget) { if (items.empty()) { return; } + const auto controller = widget->controller(); + const auto owner = &controller->session().data(); + auto historyItems = std::vector>(); + historyItems.reserve(items.size()); for (const auto &item : items) { if (!item.canDelete) { return; + } else if (const auto i = owner->message(item.msgId)) { + historyItems.push_back(i); } } - auto box = Box( - &widget->session(), - widget->getSelectedIds()); - box->setDeleteConfirmedCallback(crl::guard(widget, [=] { + const auto confirmed = crl::guard(widget, [=] { widget->cancelSelection(); - })); - widget->controller()->show(std::move(box)); + }); + if (CanCreateModerateMessagesBox(historyItems)) { + controller->show( + Box(CreateModerateMessagesBox, historyItems, confirmed)); + } else { + auto box = Box( + &widget->session(), + widget->getSelectedIds()); + box->setDeleteConfirmedCallback(confirmed); + controller->show(std::move(box)); + } } void ConfirmForwardSelectedItems(not_null widget) {