From 80994ffafbad3d93c6da8bf6132690b3c62aa6b9 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 17 Nov 2023 21:54:13 +0100 Subject: [PATCH] Added chat message re-send action on long press if outgoing and in NotDelivered state --- .../chat/fragment/ConversationFragment.kt | 6 ++++ .../ui/main/chat/model/ChatMessageModel.kt | 10 ++++++ .../layout/chat_bubble_long_press_menu.xml | 31 +++++++++++++++++-- app/src/main/res/values/strings.xml | 1 + 4 files changed, 45 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt index 7dfa547f0..c536617f8 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt @@ -532,6 +532,12 @@ class ConversationFragment : GenericFragment() { emojiSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED } + layout.setResendClickListener { + Log.i("$TAG Re-sending chat message in error state") + chatMessageModel.resend() + dialog.dismiss() + } + layout.setReplyClickListener { Log.i("$TAG Updating sending area to reply to selected message") sendMessageViewModel.replyToMessage(chatMessageModel) 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 5698736a5..14d1367e8 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 @@ -84,6 +84,8 @@ class ChatMessageModel @WorkerThread constructor( val isOutgoing = chatMessage.isOutgoing + val isInError = chatMessage.state == ChatMessage.State.NotDelivered + val statusIcon = MutableLiveData() val text = MutableLiveData() @@ -238,6 +240,14 @@ class ChatMessageModel @WorkerThread constructor( } } + @UiThread + fun resend() { + coreContext.postOnCoreThread { + Log.i("$TAG Re-sending message with ID [$id]") + chatMessage.send() + } + } + @UiThread fun joinConference() { coreContext.postOnCoreThread { diff --git a/app/src/main/res/layout/chat_bubble_long_press_menu.xml b/app/src/main/res/layout/chat_bubble_long_press_menu.xml index c5f3576dc..f993719ac 100644 --- a/app/src/main/res/layout/chat_bubble_long_press_menu.xml +++ b/app/src/main/res/layout/chat_bubble_long_press_menu.xml @@ -4,6 +4,9 @@ + @@ -160,7 +163,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toTopOf="@id/reply" + app:layout_constraintBottom_toTopOf="@id/bottom_barrier" model="@{model}" layout="@layout/chat_bubble_outgoing"/> @@ -174,7 +177,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toTopOf="@id/reply" + app:layout_constraintBottom_toTopOf="@id/bottom_barrier" model="@{model}" layout="@layout/chat_bubble_incoming"/> @@ -183,9 +186,31 @@ android:layout_width="match_parent" android:layout_height="0dp" android:background="@color/gray_main2_200" - app:layout_constraintTop_toTopOf="@id/reply" + app:layout_constraintTop_toTopOf="@id/bottom_barrier" app:layout_constraintBottom_toBottomOf="parent" /> + + + + Delete history Delete Invite + Re-send Reply Forward Copy