From 2cef7980ea149e24700df6a4073883b2f3abafe4 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 12 Oct 2023 17:30:04 +0200 Subject: [PATCH] Fixed hidden last message(s) of conversation --- .../chat/viewmodel/ConversationViewModel.kt | 46 ++++++++++++------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt index 7c04d3575..c6b456c1b 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt @@ -256,6 +256,29 @@ class ConversationViewModel @UiThread constructor() : ViewModel() { chatRoom.markAsRead() } + @WorkerThread + private fun processGroupedEvents(groupedEventLogs: ArrayList, isGroupChatRoom: Boolean): ArrayList { + val eventsList = arrayListOf() + + // Handle all events in group, then re-start a new group with current item + var index = 0 + for (groupedEvent in groupedEventLogs) { + val avatar = getAvatarModelForAddress(groupedEvent.chatMessage?.fromAddress) + val model = EventLogModel( + groupedEvent, + avatar, + isGroupChatRoom, + index > 0, + index == groupedEventLogs.size - 1 + ) + eventsList.add(model) + + index += 1 + } + + return eventsList + } + @WorkerThread private fun getEventsListFromHistory(history: Array, isGroupChatRoom: Boolean): ArrayList { val eventsList = arrayListOf() @@ -270,27 +293,18 @@ class ConversationViewModel @UiThread constructor() : ViewModel() { val groupEvents = shouldWeGroupTwoEvents(event, previousGroupEvent) if (!groupEvents) { - // Handle all events in group, then re-start a new group with current item - var index = 0 - for (groupedEvent in groupedEventLogs) { - val avatar = getAvatarModelForAddress(groupedEvent.chatMessage?.fromAddress) - val model = EventLogModel( - groupedEvent, - avatar, - isGroupChatRoom, - index > 0, - index == groupedEventLogs.size - 1 - ) - eventsList.add(model) - - index += 1 - } - + eventsList.addAll(processGroupedEvents(groupedEventLogs, isGroupChatRoom)) groupedEventLogs.clear() } groupedEventLogs.add(event) } + + if (groupedEventLogs.isNotEmpty()) { + eventsList.addAll(processGroupedEvents(groupedEventLogs, isGroupChatRoom)) + groupedEventLogs.clear() + } + return eventsList }