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 60406998d..9ae493acd 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
@@ -54,8 +54,8 @@ import org.linphone.LinphoneApplication.Companion.coreContext
import org.linphone.R
import org.linphone.core.ChatMessage
import org.linphone.core.tools.Log
+import org.linphone.databinding.ChatBubbleLongPressMenuBinding
import org.linphone.databinding.ChatConversationFragmentBinding
-import org.linphone.databinding.ChatConversationLongPressMenuBinding
import org.linphone.ui.main.chat.adapter.ChatMessageBottomSheetAdapter
import org.linphone.ui.main.chat.adapter.ConversationEventAdapter
import org.linphone.ui.main.chat.model.ChatMessageDeliveryModel
@@ -278,9 +278,9 @@ class ConversationFragment : GenericFragment() {
val dialog = Dialog(requireContext(), R.style.Theme_LinphoneDialog)
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
- val layout: ChatConversationLongPressMenuBinding = DataBindingUtil.inflate(
+ val layout: ChatBubbleLongPressMenuBinding = DataBindingUtil.inflate(
LayoutInflater.from(context),
- R.layout.chat_conversation_long_press_menu,
+ R.layout.chat_bubble_long_press_menu,
null,
false
)
@@ -304,7 +304,8 @@ class ConversationFragment : GenericFragment() {
}
layout.setPickEmojiClickListener {
- layout.emojiPicker.visibility = View.VISIBLE
+ val emojiSheetBehavior = BottomSheetBehavior.from(layout.emojiPickerBottomSheet.root)
+ emojiSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED
}
layout.model = 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 4c0f5299c..dd8151e3d 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
@@ -111,10 +111,19 @@ class ChatMessageModel @WorkerThread constructor(
var reactionsList = ""
val allReactions = chatMessage.reactions
+ var sameReactionTwiceOrMore = false
if (allReactions.isNotEmpty()) {
for (reaction in allReactions) {
val body = reaction.body
- reactionsList += body
+ if (!reactionsList.contains(body)) {
+ reactionsList += body
+ } else {
+ sameReactionTwiceOrMore = true
+ }
+ }
+
+ if (sameReactionTwiceOrMore) {
+ reactionsList += allReactions.size.toString()
}
}
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
new file mode 100644
index 000000000..1389886ba
--- /dev/null
+++ b/app/src/main/res/drawable/shape_chat_bubble_reactions_incoming_background.xml
@@ -0,0 +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
new file mode 100644
index 000000000..7ad1af3dc
--- /dev/null
+++ b/app/src/main/res/drawable/shape_chat_bubble_reactions_outgoing_background.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/chat_bubble_emoji_picker_bottom_sheet.xml b/app/src/main/res/layout/chat_bubble_emoji_picker_bottom_sheet.xml
new file mode 100644
index 000000000..415c57568
--- /dev/null
+++ b/app/src/main/res/layout/chat_bubble_emoji_picker_bottom_sheet.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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 d4bfc2020..d70d0f78d 100644
--- a/app/src/main/res/layout/chat_bubble_incoming.xml
+++ b/app/src/main/res/layout/chat_bubble_incoming.xml
@@ -136,17 +136,20 @@
android:onClick="@{showReactionInfoClickListener}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:padding="2dp"
- android:layout_marginTop="-10dp"
- android:layout_marginStart="5dp"
- android:layout_marginEnd="5dp"
+ android:layout_marginTop="-5dp"
+ android:layout_marginStart="-35dp"
android:layout_marginBottom="5dp"
android:orientation="horizontal"
+ android:background="@drawable/shape_chat_bubble_reactions_incoming_background"
android:text="@{model.reactions, default=@string/emoji_love}"
- android:textSize="20sp"
+ android:textSize="15sp"
android:textColor="@color/gray_main2_600"
+ android:paddingStart="16dp"
+ android:paddingEnd="16dp"
+ android:paddingTop="12dp"
+ android:paddingBottom="12dp"
android:visibility="@{model.reactions.length() > 0 ? View.VISIBLE : View.GONE, default=gone}"
- app:layout_constraintStart_toStartOf="@id/background"
+ app:layout_constraintStart_toEndOf="@id/background"
app:layout_constraintTop_toBottomOf="@id/background"
app:layout_constraintBottom_toBottomOf="parent" />
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
new file mode 100644
index 000000000..61e5194d5
--- /dev/null
+++ b/app/src/main/res/layout/chat_bubble_long_press_menu.xml
@@ -0,0 +1,233 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/chat_bubble_outgoing.xml b/app/src/main/res/layout/chat_bubble_outgoing.xml
index 65d36d466..c25591430 100644
--- a/app/src/main/res/layout/chat_bubble_outgoing.xml
+++ b/app/src/main/res/layout/chat_bubble_outgoing.xml
@@ -99,17 +99,21 @@
android:onClick="@{showReactionInfoClickListener}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:padding="2dp"
android:layout_marginTop="-10dp"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:layout_marginBottom="5dp"
android:orientation="horizontal"
+ android:background="@drawable/shape_chat_bubble_reactions_outgoing_background"
android:text="@{model.reactions, default=@string/emoji_love}"
android:textSize="20sp"
android:textColor="@color/gray_main2_600"
+ android:paddingStart="16dp"
+ android:paddingEnd="16dp"
+ android:paddingTop="12dp"
+ android:paddingBottom="12dp"
android:visibility="@{model.reactions.length() > 0 ? View.VISIBLE : View.GONE, default=gone}"
- app:layout_constraintStart_toStartOf="@id/background"
+ app:layout_constraintEnd_toEndOf="@id/background"
app:layout_constraintTop_toBottomOf="@id/background"
app:layout_constraintBottom_toBottomOf="parent" />
diff --git a/app/src/main/res/layout/chat_conversation_long_press_menu.xml b/app/src/main/res/layout/chat_conversation_long_press_menu.xml
deleted file mode 100644
index cd100df1b..000000000
--- a/app/src/main/res/layout/chat_conversation_long_press_menu.xml
+++ /dev/null
@@ -1,232 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/values/dimen.xml b/app/src/main/res/values/dimen.xml
index 9dc1c5dc4..a9411a06c 100644
--- a/app/src/main/res/values/dimen.xml
+++ b/app/src/main/res/values/dimen.xml
@@ -66,4 +66,5 @@
30sp
290dp
+ 425dp
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 11240f41d..07525e52c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -365,12 +365,12 @@
Give admin rights
Remove admin rights
- Read (%s)
- Received (%s)
- Sent (%s)
- Error (%s)
- Reactions (%s)
- %s (%s)
+ Read %s
+ Received %s
+ Sent %s
+ Error %s
+ Reactions %s
+ %s %s
No meeting for the moment…
New meeting