From abf294625ad024dfb683c54b69a255643c436cf0 Mon Sep 17 00:00:00 2001 From: Benoit Martins Date: Wed, 19 Feb 2025 15:59:17 +0100 Subject: [PATCH] Fix crash in deleteMessage method of ConversationViewModel --- .../ViewModel/ConversationViewModel.swift | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift b/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift index cf109238d..2e961d548 100644 --- a/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift +++ b/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift @@ -2407,15 +2407,17 @@ class ConversationViewModel: ObservableObject { } func deleteMessage() { - if self.displayedConversation != nil && selectedMessage != nil && selectedMessage!.eventModel.eventLog.chatMessage != nil { - let chatRoomTmp = self.displayedConversation!.chatRoom - if let chatMessageTmp = self.selectedMessage!.eventModel.eventLog.chatMessage { - coreContext.doOnCoreQueue { _ in - chatRoomTmp.deleteMessage(message: chatMessageTmp) - DispatchQueue.main.async { - self.conversationMessagesSection[0].rows.remove(at: self.conversationMessagesSection[0].rows.firstIndex(of: self.selectedMessage!)!) - self.selectedMessage = nil + coreContext.doOnCoreQueue { _ in + if let displayedConversation = self.displayedConversation, + let selectedMessage = self.selectedMessage, + let chatMessage = selectedMessage.eventModel.eventLog.chatMessage { + displayedConversation.chatRoom.deleteMessage(message: chatMessage) + DispatchQueue.main.async { + if let sectionIndex = self.conversationMessagesSection.firstIndex(where: { $0.chatRoomID == displayedConversation.id }), + let rowIndex = self.conversationMessagesSection[sectionIndex].rows.firstIndex(of: selectedMessage) { + self.conversationMessagesSection[sectionIndex].rows.remove(at: rowIndex) } + self.selectedMessage = nil } } }