From 6badcc288767cf57230f01e26bf68b6920c0afe4 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 28 Nov 2023 10:36:39 +0100 Subject: [PATCH] Fixed crash when newly received/sent message should update group with last one in history + improved outgoing bubble background --- .../chat/adapter/ConversationEventAdapter.kt | 4 +++- .../chat/viewmodel/ConversationViewModel.kt | 19 ++++--------------- .../chat_bubble_outgoing_first_background.xml | 7 ------- .../chat_bubble_outgoing_last_background.xml | 7 +++++++ ...ml => shape_chat_bubble_outgoing_last.xml} | 0 ...chat_bubble_outgoing_last_with_border.xml} | 0 .../main/res/layout/chat_bubble_incoming.xml | 4 ++-- .../main/res/layout/chat_bubble_outgoing.xml | 6 +++--- 8 files changed, 19 insertions(+), 28 deletions(-) delete mode 100644 app/src/main/res/drawable/chat_bubble_outgoing_first_background.xml create mode 100644 app/src/main/res/drawable/chat_bubble_outgoing_last_background.xml rename app/src/main/res/drawable/{shape_chat_bubble_outgoing_first.xml => shape_chat_bubble_outgoing_last.xml} (100%) rename app/src/main/res/drawable/{shape_chat_bubble_outgoing_first_with_border.xml => shape_chat_bubble_outgoing_last_with_border.xml} (100%) diff --git a/app/src/main/java/org/linphone/ui/main/chat/adapter/ConversationEventAdapter.kt b/app/src/main/java/org/linphone/ui/main/chat/adapter/ConversationEventAdapter.kt index e1328738e..52582f4ea 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/adapter/ConversationEventAdapter.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/adapter/ConversationEventAdapter.kt @@ -209,7 +209,9 @@ class ConversationEventAdapter : ListAdapter() - eventsLogsArray[0] = lastEvent.eventLog - eventsLogsArray[1] = eventLog - + val eventsLogsArray = arrayOf(lastEvent.eventLog, eventLog) val newList = getEventsListFromHistory( eventsLogsArray, searchFilter.value.orEmpty().trim() @@ -156,15 +152,8 @@ class ConversationViewModel @UiThread constructor() : ViewModel() { if (lastEvent != null && shouldWeGroupTwoEvents(eventLogs.first(), lastEvent.eventLog)) { list.remove(lastEvent) - - val eventsLogsArray = arrayOf() - eventsLogsArray[0] = lastEvent.eventLog - var index = 1 - for (eventLog in eventLogs) { - eventsLogsArray[index] = eventLog - index += 1 - } - + val firstElement = arrayOf(lastEvent.eventLog) + val eventsLogsArray = firstElement.plus(eventLogs) val newList = getEventsListFromHistory( eventsLogsArray, searchFilter.value.orEmpty().trim() @@ -418,7 +407,7 @@ class ConversationViewModel @UiThread constructor() : ViewModel() { avatar, groupChatRoom, index > 0, - index == groupedEventLogs.size - 1, + index != groupedEventLogs.size - 1, { file -> fileToDisplayEvent.postValue(Event(file)) }, diff --git a/app/src/main/res/drawable/chat_bubble_outgoing_first_background.xml b/app/src/main/res/drawable/chat_bubble_outgoing_first_background.xml deleted file mode 100644 index c98f37474..000000000 --- a/app/src/main/res/drawable/chat_bubble_outgoing_first_background.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/chat_bubble_outgoing_last_background.xml b/app/src/main/res/drawable/chat_bubble_outgoing_last_background.xml new file mode 100644 index 000000000..a9cc02a3c --- /dev/null +++ b/app/src/main/res/drawable/chat_bubble_outgoing_last_background.xml @@ -0,0 +1,7 @@ + + + + + \ 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_last.xml similarity index 100% rename from app/src/main/res/drawable/shape_chat_bubble_outgoing_first.xml rename to app/src/main/res/drawable/shape_chat_bubble_outgoing_last.xml diff --git a/app/src/main/res/drawable/shape_chat_bubble_outgoing_first_with_border.xml b/app/src/main/res/drawable/shape_chat_bubble_outgoing_last_with_border.xml similarity index 100% rename from app/src/main/res/drawable/shape_chat_bubble_outgoing_first_with_border.xml rename to app/src/main/res/drawable/shape_chat_bubble_outgoing_last_with_border.xml diff --git a/app/src/main/res/layout/chat_bubble_incoming.xml b/app/src/main/res/layout/chat_bubble_incoming.xml index 290b252c9..8dd823110 100644 --- a/app/src/main/res/layout/chat_bubble_incoming.xml +++ b/app/src/main/res/layout/chat_bubble_incoming.xml @@ -214,7 +214,7 @@ android:layout_height="wrap_content" android:text="@{model.time, default=`13:40`}" android:textSize="12sp" - android:visibility="@{model.isGroupedWithNextOne ? View.VISIBLE : View.GONE}"/> + android:visibility="@{!model.isGroupedWithNextOne ? View.VISIBLE : View.GONE}"/> diff --git a/app/src/main/res/layout/chat_bubble_outgoing.xml b/app/src/main/res/layout/chat_bubble_outgoing.xml index 7e44dfce6..bb67c27cb 100644 --- a/app/src/main/res/layout/chat_bubble_outgoing.xml +++ b/app/src/main/res/layout/chat_bubble_outgoing.xml @@ -101,7 +101,7 @@ android:orientation="vertical" android:gravity="end" android:selected="@{model.isSelected}" - android:background="@{model.isGroupedWithPreviousOne ? @drawable/chat_bubble_outgoing_full_background : @drawable/chat_bubble_outgoing_first_background, default=@drawable/chat_bubble_outgoing_first_background}" + android:background="@{model.isGroupedWithNextOne ? @drawable/chat_bubble_outgoing_full_background : @drawable/chat_bubble_outgoing_last_background, default=@drawable/chat_bubble_outgoing_last_background}" app:layout_constraintHorizontal_bias="0" app:layout_constraintWidth_max="@dimen/chat_bubble_max_width" app:layout_constraintTop_toBottomOf="@id/reply" @@ -176,7 +176,7 @@ android:layout_height="wrap_content" android:text="@{model.time, default=`13:40`}" android:textSize="12sp" - android:visibility="@{model.isGroupedWithNextOne ? View.VISIBLE : View.GONE}"/> + android:visibility="@{!model.isGroupedWithNextOne ? View.VISIBLE : View.GONE}"/>