From ade9e03a9d6a3c5c904c45416dd11d5a626c931a Mon Sep 17 00:00:00 2001 From: Infi Date: Thu, 29 May 2025 20:03:14 +0200 Subject: [PATCH] fix: deduplicate messages during grouping Signed-off-by: Infi --- .../chat/views/channel/ChannelScreenViewModel.kt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreenViewModel.kt b/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreenViewModel.kt index 1e41e22e..633b083f 100644 --- a/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreenViewModel.kt +++ b/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreenViewModel.kt @@ -7,6 +7,7 @@ import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.runtime.toMutableStateList +import androidx.compose.ui.util.fastDistinctBy import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import chat.revolt.R @@ -876,7 +877,14 @@ class ChannelScreenViewModel @Inject constructor( withContext(Dispatchers.Main) { items.clear() - items.addAll(groupedItems) + items.addAll(groupedItems.fastDistinctBy { + when (it) { + is ChannelScreenItem.RegularMessage -> it.message.id + is ChannelScreenItem.SystemMessage -> it.message.id + is ChannelScreenItem.DateDivider -> it.instant.toString() + else -> it.toString() // Fallback for other item types + } + }) } }