From b9e4fcf1a681c73457787daf6de4861ffcfd4b81 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 19 Oct 2023 19:10:54 +0200 Subject: [PATCH] Simple reactions to chat message display --- .../ui/main/chat/model/ChatMessageModel.kt | 21 +++++++++++++++++++ .../main/res/layout/chat_bubble_incoming.xml | 20 +++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) 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 8040b8a93..4c0f5299c 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 @@ -58,6 +58,8 @@ class ChatMessageModel @WorkerThread constructor( val chatRoomIsReadOnly = chatMessage.chatRoom.isReadOnly + val reactions = MutableLiveData() + val dismissLongPressMenuEvent: MutableLiveData> by lazy { MutableLiveData>() } @@ -73,17 +75,20 @@ class ChatMessageModel @WorkerThread constructor( Log.i( "$TAG New reaction [${reaction.body}] from [${reaction.fromAddress.asStringUriOnly()}] for chat message with ID [$id]" ) + updateReactionsList() } @WorkerThread override fun onReactionRemoved(message: ChatMessage, address: Address) { Log.i("$TAG A reaction was removed for chat message with ID [$id]") + updateReactionsList() } } init { chatMessage.addListener(chatMessageListener) statusIcon.postValue(LinphoneUtils.getChatIconResId(chatMessage.state)) + updateReactionsList() } @WorkerThread @@ -100,4 +105,20 @@ class ChatMessageModel @WorkerThread constructor( dismissLongPressMenuEvent.postValue(Event(true)) } } + + @WorkerThread + private fun updateReactionsList() { + var reactionsList = "" + val allReactions = chatMessage.reactions + + if (allReactions.isNotEmpty()) { + for (reaction in allReactions) { + val body = reaction.body + reactionsList += body + } + } + + Log.i("$TAG Reactions for message [$id] are [$reactionsList]") + reactions.postValue(reactionsList) + } } diff --git a/app/src/main/res/layout/chat_bubble_incoming.xml b/app/src/main/res/layout/chat_bubble_incoming.xml index b4c3db503..9f5e3047b 100644 --- a/app/src/main/res/layout/chat_bubble_incoming.xml +++ b/app/src/main/res/layout/chat_bubble_incoming.xml @@ -65,7 +65,7 @@ app:layout_constraintStart_toEndOf="@id/avatar" app:layout_constraintEnd_toEndOf="@id/background_end_barrier" app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent"/> + app:layout_constraintBottom_toBottomOf="@id/date_time"/> + + \ No newline at end of file