From 9d9f46f4e76e128d0b0e18f6b08519448aec8f43 Mon Sep 17 00:00:00 2001 From: Benoit Martins Date: Mon, 30 Jun 2025 10:48:58 +0200 Subject: [PATCH] Fix message bubble display for text messages with media --- .../Fragments/ChatBubbleView.swift | 18 ++++++++++++++---- .../ViewModel/ConversationViewModel.swift | 2 +- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Linphone/UI/Main/Conversations/Fragments/ChatBubbleView.swift b/Linphone/UI/Main/Conversations/Fragments/ChatBubbleView.swift index dd554200b..d24a8e42a 100644 --- a/Linphone/UI/Main/Conversations/Fragments/ChatBubbleView.swift +++ b/Linphone/UI/Main/Conversations/Fragments/ChatBubbleView.swift @@ -626,10 +626,20 @@ struct ChatBubbleView: View { .onTapGesture { if eventLogMessage.message.attachments.first!.type == .fileTransfer && eventLogMessage.message.attachments.first!.transferProgressIndication == -1 { CoreContext.shared.doOnCoreQueue { _ in - conversationViewModel.downloadContent( - chatMessage: eventLogMessage.eventModel.eventLog.chatMessage!, - content: eventLogMessage.eventModel.eventLog.chatMessage!.contents.first! - ) + if let chatMessage = eventLogMessage.eventModel.eventLog.chatMessage { + if let firstContent = chatMessage.contents.first, firstContent.type != "text" { + conversationViewModel.downloadContent( + chatMessage: chatMessage, + content: firstContent + ) + } else if chatMessage.contents.count >= 2 { + let secondContent = chatMessage.contents[1] + conversationViewModel.downloadContent( + chatMessage: chatMessage, + content: secondContent + ) + } + } } } else { selectedURLAttachment = eventLogMessage.message.attachments.first!.full diff --git a/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift b/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift index 78a94ed36..d242eb9d9 100644 --- a/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift +++ b/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift @@ -234,7 +234,7 @@ class ConversationViewModel: ObservableObject { statusTmp = .sending } if msgState == .FileTransferDone { - message.contents.enumerated().forEach { (contentIndex, content) in + message.contents.filter({ $0.type != "text" }).enumerated().forEach { (contentIndex, content) in guard let indexMessage = self.conversationMessagesSection[0].rows.firstIndex(where: { $0.eventModel.eventLogId == message.messageId }), contentIndex < self.conversationMessagesSection[0].rows[indexMessage].message.attachments.count