From fb32000af9368c98311eb23b41b77dfdf1848ae0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jc=20Mi=C3=B1arro?= Date: Fri, 26 Apr 2024 12:10:18 +0200 Subject: [PATCH] Filter Thread Message when LastMessageAt is calculated --- .../android/client/extensions/internal/Channel.kt | 5 ++++- .../io/getstream/chat/android/models/ChannelData.kt | 1 + .../channel/internal/DatabaseChannelRepository.kt | 11 +++++++++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/extensions/internal/Channel.kt b/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/extensions/internal/Channel.kt index 60f6c6e2173..fabc958e776 100644 --- a/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/extensions/internal/Channel.kt +++ b/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/extensions/internal/Channel.kt @@ -76,7 +76,10 @@ public fun Channel.updateLastMessage( ) } return this.copy( - lastMessageAt = newMessages.last().let { it.createdAt ?: it.createdLocallyAt }, + lastMessageAt = newMessages + .filterNot { it.parentId != null && !it.showInChannel } + .last() + .let { it.createdAt ?: it.createdLocallyAt }, messages = newMessages, read = newReads, ).syncUnreadCountWithReads() diff --git a/stream-chat-android-core/src/main/java/io/getstream/chat/android/models/ChannelData.kt b/stream-chat-android-core/src/main/java/io/getstream/chat/android/models/ChannelData.kt index 4edcf3afe7e..7eac7e9a8bf 100644 --- a/stream-chat-android-core/src/main/java/io/getstream/chat/android/models/ChannelData.kt +++ b/stream-chat-android-core/src/main/java/io/getstream/chat/android/models/ChannelData.kt @@ -130,6 +130,7 @@ public data class ChannelData( cooldown = cooldown, lastMessageAt = messagesList .filterNot { it.shadowed } + .filterNot { it.parentId != null && !it.showInChannel } .lastOrNull() ?.let { it.createdAt ?: it.createdLocallyAt }, createdBy = createdBy, diff --git a/stream-chat-android-offline/src/main/java/io/getstream/chat/android/offline/repository/domain/channel/internal/DatabaseChannelRepository.kt b/stream-chat-android-offline/src/main/java/io/getstream/chat/android/offline/repository/domain/channel/internal/DatabaseChannelRepository.kt index ae2eeec1612..0e0861557b7 100644 --- a/stream-chat-android-offline/src/main/java/io/getstream/chat/android/offline/repository/domain/channel/internal/DatabaseChannelRepository.kt +++ b/stream-chat-android-offline/src/main/java/io/getstream/chat/android/offline/repository/domain/channel/internal/DatabaseChannelRepository.kt @@ -222,7 +222,11 @@ internal class DatabaseChannelRepository( insertChannel( it.copy( messages = listOf(lastMessage), - lastMessageAt = lastMessage.createdAt ?: lastMessage.createdLocallyAt ?: Date(0), + lastMessageAt = it.lastMessageAt + .takeIf { lastMessage.parentId != null && !lastMessage.showInChannel } + ?: lastMessage.createdAt + ?: lastMessage.createdLocallyAt + ?: Date(0), ), ) } @@ -242,7 +246,10 @@ internal class DatabaseChannelRepository( lastMessageAt = maxOf( lastMessageAt, cachedChannel.lastMessageAt, - messages.lastOrNull()?.let { it.createdAt ?: it.createdLocallyAt ?: Date(0) }, + messages + .filterNot { it.parentId != null && !it.showInChannel } + .lastOrNull() + ?.let { it.createdAt ?: it.createdLocallyAt ?: Date(0) }, ), hiddenMessagesBefore = hideMessagesBefore, members = members,