restore special case for the current chat

This commit is contained in:
Evgeny Poberezkin
2024-08-01 23:10:40 +01:00
parent 178634d581
commit 308ceaf5cd
2 changed files with 17 additions and 5 deletions
+13 -2
View File
@@ -85,6 +85,7 @@ final class ChatModel: ObservableObject {
// current chat
@Published var chatId: String?
var chatItemStatuses: Dictionary<Int64, CIStatus> = [:]
@Published var chatToTop: String?
@Published var groupMembers: [GMember] = []
@Published var groupMembersIndexes: Dictionary<Int64, Int> = [:] // groupMemberId to index in groupMembers list
@Published var membersLoaded = false
@@ -300,7 +301,7 @@ final class ChatModel: ObservableObject {
if chatId != c.chatInfo.id {
popChat_(j, to: i)
} else if i == 0 {
popChatCollector.addChat(c.chatInfo.id)
chatToTop = c.chatInfo.id
}
}
} else {
@@ -336,7 +337,11 @@ final class ChatModel: ObservableObject {
increaseUnreadCounter(user: currentUser!)
}
if i > 0 {
popChatCollector.addChat(cInfo.id)
if chatId == cInfo.id {
chatToTop = cInfo.id
} else {
popChatCollector.addChat(cInfo.id)
}
}
} else {
addChat(Chat(chatInfo: cInfo, chatItems: [cItem]))
@@ -762,6 +767,12 @@ final class ChatModel: ObservableObject {
return (prevMember, memberIds.count)
}
func popChat(_ id: String) {
if let i = getChatIndex(id) {
popChat_(i)
}
}
private func popChat_(_ i: Int, to position: Int = 0) {
let chat = chats.remove(at: i)
chats.insert(chat, at: position)