ios: fix merging of different moderate sections

This commit is contained in:
Diogo 2025-01-14 10:14:40 +00:00
parent 9cefcb3fe8
commit 9f95c0ca06
2 changed files with 14 additions and 6 deletions

View file

@ -410,14 +410,19 @@ struct ChatView: View {
private func filtered(_ reversedChatItems: Array<ChatItem>) -> Array<ChatItem> {
reversedChatItems
.enumerated()
.filter { (index, chatItem) in
if let mergeCategory = chatItem.mergeCategory, index > 0 {
mergeCategory != reversedChatItems[index - 1].mergeCategory
} else {
true
.reduce(into: [ChatItem]()) { result, current in
let (index, chatItem) = current
if let mergeCategory = chatItem.mergeCategory,
index > 0,
mergeCategory == reversedChatItems[index - 1].mergeCategory {
if var lastItem = result.last {
lastItem.mergeCount += 1
result[result.count - 1] = lastItem
}
return
}
result.append(chatItem)
}
.map { $0.element }
}
@ -434,6 +439,8 @@ struct ChatView: View {
: voiceNoFrame
? (g.size.width - 32)
: (g.size.width - 32) * 0.84
print("[mergedItems] \(ci.content.msgContent?.text ?? "")")
return ChatItemWithMenu(
chat: $chat,
chatItem: ci,

View file

@ -2379,6 +2379,7 @@ public struct ChatItem: Identifiable, Decodable, Hashable {
public var viewTimestamp = Date.now
public var isLiveDummy: Bool = false
public var mergeCount: Int = 0
private enum CodingKeys: String, CodingKey {
case chatDir, meta, content, formattedText, quotedItem, reactions, file