From ae54179976df4ad88b67a6e32f91ba9ce00ed243 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 11 Apr 2023 12:05:20 +0200 Subject: [PATCH] Fixed chat message not marked as reply when replying with more than 1 content in a basic chat room --- CHANGELOG.md | 1 + .../viewmodels/ChatMessageSendingViewModel.kt | 20 ++++++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0623b4d1a..e5fd0e2ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ Group changes to describe their impact on the project, as follows: ### Fixed - Plain copy of encrypted files (when VFS is enabled) not cleaned - Avatar display issue if contact's "initials" contains more than 1 emoji or an emoji + a character +- Messages not marked as reply in basic chat room if sending more than 1 content ## [5.0.9] - 2023-03-30 diff --git a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatMessageSendingViewModel.kt b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatMessageSendingViewModel.kt index f99428278..febfa4808 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatMessageSendingViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatMessageSendingViewModel.kt @@ -225,6 +225,14 @@ class ChatMessageSendingViewModel(private val chatRoom: ChatRoom) : ViewModel() } } + private fun createChatMessage(): ChatMessage { + val pendingMessageToReplyTo = pendingChatMessageToReplyTo.value + return if (isPendingAnswer.value == true && pendingMessageToReplyTo != null) + chatRoom.createReplyMessage(pendingMessageToReplyTo.chatMessage) + else + chatRoom.createEmptyMessage() + } + fun sendMessage() { if (!isPlayerClosed()) { stopVoiceRecordPlayer() @@ -234,11 +242,7 @@ class ChatMessageSendingViewModel(private val chatRoom: ChatRoom) : ViewModel() stopVoiceRecorder() } - val pendingMessageToReplyTo = pendingChatMessageToReplyTo.value - val message: ChatMessage = if (isPendingAnswer.value == true && pendingMessageToReplyTo != null) - chatRoom.createReplyMessage(pendingMessageToReplyTo.chatMessage) - else - chatRoom.createEmptyMessage() + val message = createChatMessage() val isBasicChatRoom: Boolean = chatRoom.hasCapability(ChatRoomCapabilities.Basic.toInt()) var voiceRecord = false @@ -259,7 +263,8 @@ class ChatMessageSendingViewModel(private val chatRoom: ChatRoom) : ViewModel() val toSend = textToSend.value.orEmpty().trim() if (toSend.isNotEmpty()) { if (voiceRecord && isBasicChatRoom) { - val textMessage: ChatMessage = chatRoom.createMessageFromUtf8(toSend) + val textMessage = createChatMessage() + textMessage.addUtf8TextContent(toSend) textMessage.send() } else { message.addUtf8TextContent(toSend) @@ -282,7 +287,8 @@ class ChatMessageSendingViewModel(private val chatRoom: ChatRoom) : ViewModel() // Do not send file in the same message as the text in a BasicChatRoom // and don't send multiple files in the same message if setting says so if (isBasicChatRoom or (corePreferences.preventMoreThanOneFilePerMessage and (fileContent or voiceRecord))) { - val fileMessage: ChatMessage = chatRoom.createFileTransferMessage(content) + val fileMessage = createChatMessage() + fileMessage.addFileContent(content) fileMessage.send() } else { message.addFileContent(content)