ios: events ordering

This commit is contained in:
Avently 2024-01-24 08:21:04 -08:00
parent be9d6de767
commit d1e2fe22ce
2 changed files with 8 additions and 3 deletions

View File

@ -556,9 +556,10 @@ final class ChatModel: ObservableObject {
}
// this function analyses "connected" events and assumes that each member will be there only once
func getConnectedMemberNames(_ chatItem: ChatItem) -> (Int, [String]) {
func getConnectedMemberNames(_ chatItem: ChatItem) -> (Int, [String], String?) {
var count = 0
var ns: [String] = []
var lastNonConnectedEvent: String? = nil
if let ciCategory = chatItem.mergeCategory,
var i = getChatItemIndex(chatItem) {
while i < reversedChatItems.count {
@ -566,12 +567,14 @@ final class ChatModel: ObservableObject {
if ci.mergeCategory != ciCategory { break }
if let m = ci.memberConnected {
ns.append(m.displayName)
} else if count == 0 {
lastNonConnectedEvent = if let name = ci.memberDisplayName { name + " " + ci.text } else { ci.text }
}
count += 1
i += 1
}
}
return (count, ns)
return (count, ns, lastNonConnectedEvent)
}
// returns the index of the passed item and the next item (it has smaller index)

View File

@ -149,7 +149,7 @@ struct ChatItemContentView<Content: View>: View {
}
private var mergedGroupEventText: Text? {
let (count, ns) = chatModel.getConnectedMemberNames(chatItem)
let (count, ns, lastNonConnectedEvent) = chatModel.getConnectedMemberNames(chatItem)
let members: LocalizedStringKey =
switch ns.count {
case 1: "\(ns[0]) connected"
@ -162,6 +162,8 @@ struct ChatItemContentView<Content: View>: View {
}
return if count <= 1 {
nil
} else if let last = lastNonConnectedEvent {
Text(last) + Text(" ") + Text("and \(count - ns.count) other events")
} else if ns.count == 0 {
Text("\(count) group events")
} else if count > ns.count {