mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-04-30 07:46:22 +00:00
Fix updateUIView crash when get old messages in ConversationViewModel
This commit is contained in:
parent
5c82815644
commit
f5c074e0bc
1 changed files with 51 additions and 52 deletions
|
|
@ -62,65 +62,64 @@ class ConversationViewModel: ObservableObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
func addChatMessageDelegate(message: ChatMessage) {
|
func addChatMessageDelegate(message: ChatMessage) {
|
||||||
coreContext.doOnCoreQueue { _ in
|
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
|
||||||
if self.displayedConversation != nil {
|
if self.displayedConversation != nil {
|
||||||
/*
|
self.coreContext.doOnCoreQueue { _ in
|
||||||
self.chatMessageSuscriptions.insert(message.publisher?.onMsgStateChanged?.postOnCoreQueue {(cbValue: (message: ChatMessage, state: ChatMessage.State)) in
|
self.chatMessageSuscriptions.insert(message.publisher?.onMsgStateChanged?.postOnCoreQueue {(cbValue: (message: ChatMessage, state: ChatMessage.State)) in
|
||||||
var statusTmp: Message.Status? = .sending
|
var statusTmp: Message.Status? = .sending
|
||||||
switch cbValue.message.state {
|
switch cbValue.message.state {
|
||||||
case .InProgress:
|
case .InProgress:
|
||||||
statusTmp = .sending
|
statusTmp = .sending
|
||||||
case .Delivered:
|
case .Delivered:
|
||||||
statusTmp = .sent
|
statusTmp = .sent
|
||||||
case .DeliveredToUser:
|
case .DeliveredToUser:
|
||||||
statusTmp = .received
|
statusTmp = .received
|
||||||
case .Displayed:
|
case .Displayed:
|
||||||
statusTmp = .read
|
statusTmp = .read
|
||||||
default:
|
default:
|
||||||
statusTmp = nil
|
statusTmp = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
let indexMessage = self.conversationMessagesSection[0].rows.firstIndex(where: {$0.id == message.messageId})
|
let indexMessage = self.conversationMessagesSection[0].rows.firstIndex(where: {$0.id == message.messageId})
|
||||||
|
|
||||||
DispatchQueue.main.async {
|
DispatchQueue.main.async {
|
||||||
if indexMessage != nil {
|
if indexMessage != nil {
|
||||||
self.objectWillChange.send()
|
self.objectWillChange.send()
|
||||||
self.conversationMessagesSection[0].rows[indexMessage!].status = statusTmp
|
self.conversationMessagesSection[0].rows[indexMessage!].status = statusTmp
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
})
|
|
||||||
*/
|
|
||||||
|
|
||||||
self.chatMessageSuscriptions.insert(message.publisher?.onNewMessageReaction?.postOnCoreQueue {(cbValue: (message: ChatMessage, reaction: ChatMessageReaction)) in
|
|
||||||
|
|
||||||
let indexMessage = self.conversationMessagesSection[0].rows.firstIndex(where: {$0.id == message.messageId})
|
|
||||||
var reactionsTmp: [String] = []
|
|
||||||
cbValue.message.reactions.forEach({ chatMessageReaction in
|
|
||||||
reactionsTmp.append(chatMessageReaction.body)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
DispatchQueue.main.async {
|
self.chatMessageSuscriptions.insert(message.publisher?.onNewMessageReaction?.postOnCoreQueue {(cbValue: (message: ChatMessage, reaction: ChatMessageReaction)) in
|
||||||
if indexMessage != nil {
|
let indexMessage = self.conversationMessagesSection[0].rows.firstIndex(where: {$0.id == message.messageId})
|
||||||
self.objectWillChange.send()
|
var reactionsTmp: [String] = []
|
||||||
self.conversationMessagesSection[0].rows[indexMessage!].reactions = reactionsTmp
|
cbValue.message.reactions.forEach({ chatMessageReaction in
|
||||||
|
reactionsTmp.append(chatMessageReaction.body)
|
||||||
|
})
|
||||||
|
|
||||||
|
DispatchQueue.main.async {
|
||||||
|
if indexMessage != nil {
|
||||||
|
self.objectWillChange.send()
|
||||||
|
self.conversationMessagesSection[0].rows[indexMessage!].reactions = reactionsTmp
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
self.chatMessageSuscriptions.insert(message.publisher?.onReactionRemoved?.postOnCoreQueue {(cbValue: (message: ChatMessage, address: Address)) in
|
|
||||||
let indexMessage = self.conversationMessagesSection[0].rows.firstIndex(where: {$0.id == message.messageId})
|
|
||||||
var reactionsTmp: [String] = []
|
|
||||||
cbValue.message.reactions.forEach({ chatMessageReaction in
|
|
||||||
reactionsTmp.append(chatMessageReaction.body)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
DispatchQueue.main.async {
|
self.chatMessageSuscriptions.insert(message.publisher?.onReactionRemoved?.postOnCoreQueue {(cbValue: (message: ChatMessage, address: Address)) in
|
||||||
if indexMessage != nil {
|
let indexMessage = self.conversationMessagesSection[0].rows.firstIndex(where: {$0.id == message.messageId})
|
||||||
self.objectWillChange.send()
|
var reactionsTmp: [String] = []
|
||||||
self.conversationMessagesSection[0].rows[indexMessage!].reactions = reactionsTmp
|
cbValue.message.reactions.forEach({ chatMessageReaction in
|
||||||
|
reactionsTmp.append(chatMessageReaction.body)
|
||||||
|
})
|
||||||
|
|
||||||
|
DispatchQueue.main.async {
|
||||||
|
if indexMessage != nil {
|
||||||
|
self.objectWillChange.send()
|
||||||
|
self.conversationMessagesSection[0].rows[indexMessage!].reactions = reactionsTmp
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -312,7 +311,7 @@ class ConversationViewModel: ObservableObject {
|
||||||
|
|
||||||
func getOldMessages() {
|
func getOldMessages() {
|
||||||
coreContext.doOnCoreQueue { _ in
|
coreContext.doOnCoreQueue { _ in
|
||||||
if self.displayedConversation != nil {
|
if self.displayedConversation != nil && self.displayedConversationHistorySize > self.conversationMessagesSection[0].rows.count{
|
||||||
let historyEvents = self.displayedConversation!.chatRoom.getHistoryRangeEvents(begin: self.conversationMessagesSection[0].rows.count, end: self.conversationMessagesSection[0].rows.count + 30)
|
let historyEvents = self.displayedConversation!.chatRoom.getHistoryRangeEvents(begin: self.conversationMessagesSection[0].rows.count, end: self.conversationMessagesSection[0].rows.count + 30)
|
||||||
var conversationMessagesTmp: [Message] = []
|
var conversationMessagesTmp: [Message] = []
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue