From 10d5fdcac352f413f1f5c149de912fc6c8771584 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Tue, 29 Apr 2025 02:07:41 +0400 Subject: [PATCH] Fix music player playlist crash --- .../Sources/ChatHistoryEntriesForView.swift | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/submodules/TelegramUI/Sources/ChatHistoryEntriesForView.swift b/submodules/TelegramUI/Sources/ChatHistoryEntriesForView.swift index 7e126d9e4f..2c5c8dd5cf 100644 --- a/submodules/TelegramUI/Sources/ChatHistoryEntriesForView.swift +++ b/submodules/TelegramUI/Sources/ChatHistoryEntriesForView.swift @@ -120,8 +120,6 @@ func chatHistoryEntriesForView( } } - //var existingGroupStableIds: [UInt32] = [] - //var groupBucket: [(Message, Bool, ChatHistoryMessageSelection, ChatMessageEntryAttributes, MessageHistoryEntryLocation?)] = [] var count = 0 loop: for entry in view.entries { var message = entry.message @@ -198,7 +196,7 @@ func chatHistoryEntriesForView( } if groupMessages || reverseGroupedMessages { - if let messageGroupingKey = message.groupingKey, (groupMessages || reverseGroupedMessages) { + if let messageGroupingKey = message.groupingKey { let selection: ChatHistoryMessageSelection if let selectedMessages = selectedMessages { selection = .selectable(selected: selectedMessages.contains(message.id)) @@ -271,6 +269,22 @@ func chatHistoryEntriesForView( } } + if !groupMessages && reverseGroupedMessages { + var flatEntries: [ChatHistoryEntry] = [] + + for entry in entries { + switch entry { + case let .MessageGroupEntry(_, messages, presentationData): + for (message, isRead, selection, attributes, location) in messages { + flatEntries.append(.MessageEntry(message, presentationData, isRead, location, selection, attributes)) + } + default: + flatEntries.append(entry) + } + } + entries = flatEntries + } + let insertPendingProcessingMessage: ([Message], Int) -> Void = { messages, index in let serviceMessage = Message( stableId: UInt32.max - messages[0].stableId,