From aed5280c6333ce8f5012a006d23b8b9a0cdf7232 Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 2 Oct 2024 17:49:51 +0200 Subject: [PATCH] timeline : fix lastOutgoingMessage after last changes --- .../features/messages/impl/timeline/TimelineState.kt | 10 +++++++++- .../features/messages/impl/timeline/TimelineView.kt | 3 +-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt index cfdf5618d0..d46d6a6866 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt @@ -13,6 +13,7 @@ import io.element.android.features.messages.impl.timeline.model.NewEventState import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.features.messages.impl.typing.TypingNotificationState import io.element.android.libraries.matrix.api.core.EventId +import io.element.android.libraries.matrix.api.core.UniqueId import io.element.android.libraries.matrix.api.timeline.item.event.MessageShield import kotlinx.collections.immutable.ImmutableList import kotlin.time.Duration @@ -30,8 +31,15 @@ data class TimelineState( val resolveVerifiedUserSendFailureState: ResolveVerifiedUserSendFailureState, val eventSink: (TimelineEvents) -> Unit, ) { - val hasAnyEvent = timelineItems.any { it is TimelineItem.Event } + val lastTimelineEvent = timelineItems.firstOrNull { it is TimelineItem.Event} as? TimelineItem.Event + val hasAnyEvent = lastTimelineEvent != null val focusedEventId = focusRequestState.eventId() + + + fun isLastOutgoingMessage(uniqueId: UniqueId): Boolean { + return lastTimelineEvent != null && lastTimelineEvent.isMine && lastTimelineEvent.id == uniqueId + } + } @Immutable diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt index 9e383facd7..59df0cb70d 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt @@ -136,8 +136,7 @@ fun TimelineView( timelineItem = timelineItem, timelineRoomInfo = state.timelineRoomInfo, renderReadReceipts = state.renderReadReceipts, - isLastOutgoingMessage = (timelineItem as? TimelineItem.Event)?.isMine == true && - state.timelineItems.first().identifier() == timelineItem.identifier(), + isLastOutgoingMessage = state.isLastOutgoingMessage(timelineItem.identifier()), focusedEventId = state.focusedEventId, onUserDataClick = onUserDataClick, onLinkClick = onLinkClick,