From 6e67cfc7beb17e207c31a2b9d86aa184eb109fb2 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sat, 27 Apr 2024 12:26:34 +0300 Subject: [PATCH 001/400] Fixed possible crash in moderation box. --- .../boxes/moderate_messages_box.cpp | 33 ++++++++----------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/Telegram/SourceFiles/boxes/moderate_messages_box.cpp b/Telegram/SourceFiles/boxes/moderate_messages_box.cpp index 0d1aa10a1c478..5f08f98e3c881 100644 --- a/Telegram/SourceFiles/boxes/moderate_messages_box.cpp +++ b/Telegram/SourceFiles/boxes/moderate_messages_box.cpp @@ -185,7 +185,6 @@ void CreateModerateMessagesBox( rpl::event_stream checkAllRequests; Fn collectRequests; }; - constexpr auto kSmallDelayMs = 5; const auto options = CalculateModerateOptions(items); const auto inner = box->verticalLayout(); @@ -211,6 +210,7 @@ void CreateModerateMessagesBox( using Request = Fn, not_null)>; const auto sequentiallyRequest = [=](Request request, Users users) { + constexpr auto kSmallDelayMs = 5; const auto session = &items.front()->history()->session(); const auto history = items.front()->history(); const auto peerId = history->peer->id; @@ -243,14 +243,8 @@ void CreateModerateMessagesBox( not_null controller, Request request) { confirms->events() | rpl::start_with_next([=] { - if (checkbox->checked()) { - if (isSingle) { - const auto item = items.front(); - const auto channel = item->history()->peer->asChannel(); - request(users.front(), channel); - } else if (const auto collect = controller->collectRequests) { - sequentiallyRequest(request, collect()); - } + if (checkbox->checked() && controller->collectRequests) { + sequentiallyRequest(request, controller->collectRequests()); } }, checkbox->lifetime()); }; @@ -345,6 +339,11 @@ void CreateModerateMessagesBox( const auto appendList = [&]( not_null checkbox, not_null controller) { + if (isSingle) { + const auto user = users.front(); + controller->collectRequests = [=] { return Users{ user }; }; + return; + } const auto button = Ui::CreateChild