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