diff --git a/Linphone/UI/Main/Conversations/Fragments/ConversationFragment.swift b/Linphone/UI/Main/Conversations/Fragments/ConversationFragment.swift index 5719c50f6..5de44778d 100644 --- a/Linphone/UI/Main/Conversations/Fragments/ConversationFragment.swift +++ b/Linphone/UI/Main/Conversations/Fragments/ConversationFragment.swift @@ -923,6 +923,7 @@ struct ConversationFragment: View { Divider() Button { + conversationViewModel.deleteMessage() } label: { HStack { Text("menu_delete_selected_item") diff --git a/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift b/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift index cc8ac2a67..efb321009 100644 --- a/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift +++ b/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift @@ -2260,6 +2260,18 @@ class ConversationViewModel: ObservableObject { func getAttachmentIndex(attachment: Attachment) -> Int { return self.attachments.firstIndex(where: {$0.id == attachment.id}) ?? 0 } + + func deleteMessage() { + if self.displayedConversation != nil && selectedMessage != nil && selectedMessage!.eventModel.eventLog.chatMessage != nil { + coreContext.doOnCoreQueue { _ in + self.displayedConversation!.chatRoom.deleteMessage(message: self.selectedMessage!.eventModel.eventLog.chatMessage!) + DispatchQueue.main.async { + self.conversationMessagesSection[0].rows.remove(at: self.conversationMessagesSection[0].rows.firstIndex(of: self.selectedMessage!)!) + self.selectedMessage = nil + } + } + } + } } // swiftlint:enable line_length // swiftlint:enable type_body_length