From 1dba0dbb6547a0b4d0a175fe0353f74cef337017 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Tue, 28 Apr 2026 00:13:22 +0200 Subject: [PATCH] Fix deleted messages grouping in recent actions --- .../ChatRecentActionsHistoryTransition.swift | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/submodules/TelegramUI/Components/Chat/ChatRecentActionsController/Sources/ChatRecentActionsHistoryTransition.swift b/submodules/TelegramUI/Components/Chat/ChatRecentActionsController/Sources/ChatRecentActionsHistoryTransition.swift index bf11b6018a..bbf9c2660d 100644 --- a/submodules/TelegramUI/Components/Chat/ChatRecentActionsController/Sources/ChatRecentActionsHistoryTransition.swift +++ b/submodules/TelegramUI/Components/Chat/ChatRecentActionsController/Sources/ChatRecentActionsHistoryTransition.swift @@ -2367,6 +2367,8 @@ private let deletedMessagesDisplayedLimit = 4 func chatRecentActionsEntries(entries: [ChannelAdminEventLogEntry], presentationData: ChatPresentationData, expandedDeletedMessages: Set, currentDeletedHeaderMessages: inout Set) -> [ChatRecentActionsEntry] { var result: [ChatRecentActionsEntry] = [] var deleteMessageEntries: [ChannelAdminEventLogEntry] = [] + let previousDeletedHeaderMessages = currentDeletedHeaderMessages + currentDeletedHeaderMessages = Set() func appendCurrentDeleteEntries() { if !deleteMessageEntries.isEmpty, let lastEntry = deleteMessageEntries.last, let lastMessageId = lastEntry.event.action.messageId { @@ -2394,9 +2396,16 @@ func chatRecentActionsEntries(entries: [ChannelAdminEventLogEntry], presentation var skipAppendingGeneralEntry = false if case let .deleteMessage(message) = entry.event.action { var skipAppendingDeletionEntry = false - if currentDeleteMessageEvent == nil || (currentDeleteMessageEvent!.peerId == entry.event.peerId && abs(currentDeleteMessageEvent!.date - entry.event.date) < 5 && !currentDeletedHeaderMessages.contains(message.id)) { + let belongsToCurrentDeleteGroup: Bool + if let currentDeleteMessageEvent { + belongsToCurrentDeleteGroup = currentDeleteMessageEvent.peerId == entry.event.peerId && abs(currentDeleteMessageEvent.date - entry.event.date) < 5 } else { - if currentDeletedHeaderMessages.contains(message.id) { + belongsToCurrentDeleteGroup = true + } + let wasPreviousHeaderMessage = previousDeletedHeaderMessages.contains(message.id) + if currentDeleteMessageEvent == nil || (belongsToCurrentDeleteGroup && !wasPreviousHeaderMessage) { + } else { + if belongsToCurrentDeleteGroup && wasPreviousHeaderMessage { deleteMessageEntries.append(entry) skipAppendingDeletionEntry = true }