From 58c30a638fb1eec2fabf2b39f93502d751f2fb42 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 24 Oct 2023 15:02:54 +0200 Subject: [PATCH] Started to display incoming messages reply to message --- .../ui/main/chat/model/ChatMessageModel.kt | 2 ++ .../ui/main/chat/model/EventLogModel.kt | 25 ++++++++++++++++++- .../shape_chat_bubble_incoming_first.xml | 2 +- .../shape_chat_bubble_incoming_full.xml | 2 +- .../shape_chat_bubble_incoming_reply.xml | 5 ++++ .../shape_chat_bubble_outgoing_first.xml | 2 +- .../shape_chat_bubble_outgoing_full.xml | 2 +- ...t_bubble_reactions_incoming_background.xml | 2 +- ...t_bubble_reactions_outgoing_background.xml | 2 +- .../main/res/layout/chat_bubble_incoming.xml | 23 +++++++++++++++-- 10 files changed, 58 insertions(+), 9 deletions(-) create mode 100644 app/src/main/res/drawable/shape_chat_bubble_incoming_reply.xml diff --git a/app/src/main/java/org/linphone/ui/main/chat/model/ChatMessageModel.kt b/app/src/main/java/org/linphone/ui/main/chat/model/ChatMessageModel.kt index dd8151e3d..fd0b3ab71 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/model/ChatMessageModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/model/ChatMessageModel.kt @@ -37,6 +37,8 @@ class ChatMessageModel @WorkerThread constructor( val chatMessage: ChatMessage, val avatarModel: ContactAvatarModel, val isFromGroup: Boolean, + val isReply: Boolean, + val replyText: String, val isGroupedWithPreviousOne: Boolean, val isGroupedWithNextOne: Boolean ) { diff --git a/app/src/main/java/org/linphone/ui/main/chat/model/EventLogModel.kt b/app/src/main/java/org/linphone/ui/main/chat/model/EventLogModel.kt index c17d49ddc..5b503665e 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/model/EventLogModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/model/EventLogModel.kt @@ -21,7 +21,9 @@ package org.linphone.ui.main.chat.model import androidx.annotation.WorkerThread import org.linphone.core.EventLog +import org.linphone.core.tools.Log import org.linphone.ui.main.contacts.model.ContactAvatarModel +import org.linphone.utils.LinphoneUtils class EventLogModel @WorkerThread constructor( val eventLog: EventLog, @@ -30,6 +32,10 @@ class EventLogModel @WorkerThread constructor( isGroupedWithPreviousOne: Boolean, isGroupedWithNextOne: Boolean ) { + companion object { + private const val TAG = "[Event Log Model]" + } + val type: EventLog.Type = eventLog.type val isEvent = type != EventLog.Type.ConferenceChatMessage @@ -37,10 +43,27 @@ class EventLogModel @WorkerThread constructor( val model = if (isEvent) { EventModel(eventLog) } else { + val chatMessage = eventLog.chatMessage!! + val reply = if (chatMessage.isReply) { + val replyMessage = chatMessage.replyMessage + if (replyMessage != null) { + LinphoneUtils.getTextDescribingMessage(replyMessage) + } else { + Log.e( + "$TAG Failed to find the reply message from ID [${chatMessage.replyMessageId}]" + ) + "" + } + } else { + "" + } + ChatMessageModel( - eventLog.chatMessage!!, + chatMessage, avatarModel, isFromGroup, + chatMessage.isReply, + reply, isGroupedWithPreviousOne, isGroupedWithNextOne ) diff --git a/app/src/main/res/drawable/shape_chat_bubble_incoming_first.xml b/app/src/main/res/drawable/shape_chat_bubble_incoming_first.xml index 513b02d4d..e82f7df3c 100644 --- a/app/src/main/res/drawable/shape_chat_bubble_incoming_first.xml +++ b/app/src/main/res/drawable/shape_chat_bubble_incoming_first.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_chat_bubble_incoming_full.xml b/app/src/main/res/drawable/shape_chat_bubble_incoming_full.xml index 6ea2e234d..df3a98fea 100644 --- a/app/src/main/res/drawable/shape_chat_bubble_incoming_full.xml +++ b/app/src/main/res/drawable/shape_chat_bubble_incoming_full.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_chat_bubble_incoming_reply.xml b/app/src/main/res/drawable/shape_chat_bubble_incoming_reply.xml new file mode 100644 index 000000000..98ea7684c --- /dev/null +++ b/app/src/main/res/drawable/shape_chat_bubble_incoming_reply.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_chat_bubble_outgoing_first.xml b/app/src/main/res/drawable/shape_chat_bubble_outgoing_first.xml index 348f7f12f..1d29b6a85 100644 --- a/app/src/main/res/drawable/shape_chat_bubble_outgoing_first.xml +++ b/app/src/main/res/drawable/shape_chat_bubble_outgoing_first.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_chat_bubble_outgoing_full.xml b/app/src/main/res/drawable/shape_chat_bubble_outgoing_full.xml index 57fe57f90..6ea2e234d 100644 --- a/app/src/main/res/drawable/shape_chat_bubble_outgoing_full.xml +++ b/app/src/main/res/drawable/shape_chat_bubble_outgoing_full.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_chat_bubble_reactions_incoming_background.xml b/app/src/main/res/drawable/shape_chat_bubble_reactions_incoming_background.xml index 1389886ba..da536aa15 100644 --- a/app/src/main/res/drawable/shape_chat_bubble_reactions_incoming_background.xml +++ b/app/src/main/res/drawable/shape_chat_bubble_reactions_incoming_background.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_chat_bubble_reactions_outgoing_background.xml b/app/src/main/res/drawable/shape_chat_bubble_reactions_outgoing_background.xml index 7ad1af3dc..1389886ba 100644 --- a/app/src/main/res/drawable/shape_chat_bubble_reactions_outgoing_background.xml +++ b/app/src/main/res/drawable/shape_chat_bubble_reactions_outgoing_background.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/layout/chat_bubble_incoming.xml b/app/src/main/res/layout/chat_bubble_incoming.xml index d70d0f78d..e062f4442 100644 --- a/app/src/main/res/layout/chat_bubble_incoming.xml +++ b/app/src/main/res/layout/chat_bubble_incoming.xml @@ -63,8 +63,27 @@ android:ellipsize="end" android:visibility="@{!model.isFromGroup ? View.GONE: model.isGroupedWithPreviousOne ? View.GONE : View.VISIBLE}" app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toTopOf="@id/reply" app:layout_constraintStart_toStartOf="@id/background" /> + +