From 2579e68edcbeed68cf6a840040e80d7e694ac439 Mon Sep 17 00:00:00 2001 From: Jenna Vassar <5023996+jennaharris7@users.noreply.github.com> Date: Wed, 29 Apr 2026 17:29:51 -0700 Subject: [PATCH] Don't show NEW timeline divider when not applicable in previews --- .../messages/impl/timeline/TimelineStateProvider.kt | 8 -------- .../features/messages/impl/timeline/TimelineView.kt | 10 ++++++---- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt index e30eb1be97..08ddf56c8c 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt @@ -23,7 +23,6 @@ import io.element.android.features.messages.impl.timeline.model.anAggregatedReac import io.element.android.features.messages.impl.timeline.model.event.TimelineItemEventContent import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemStateEventContent import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemTextContent -import io.element.android.features.messages.impl.timeline.model.virtual.TimelineItemReadMarkerModel import io.element.android.features.messages.impl.timeline.model.virtual.aTimelineItemDaySeparatorModel import io.element.android.features.messages.impl.typing.TypingNotificationState import io.element.android.features.messages.impl.typing.aTypingNotificationState @@ -90,13 +89,6 @@ fun aTimelineState( ) } -internal fun aTimelineItemReadMarker(): TimelineItem.Virtual { - return TimelineItem.Virtual( - id = UniqueId(UUID.randomUUID().toString()), - model = TimelineItemReadMarkerModel, - ) -} - internal fun aTimelineItemList(content: TimelineItemEventContent): ImmutableList { return persistentListOf( // 3 items (First Middle Last) with isMine = false 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 cef9af5dd5..51bd67a382 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 @@ -546,12 +546,11 @@ private fun TimelineViewWithReadMarker( unreadMessagesCount: Int, newMessagesCount: Int, ) { - val readMarker = aTimelineItemReadMarker() val timelineItems = persistentListOf( aTimelineItemEvent(isMine = false), aTimelineItemEvent(isMine = false), aTimelineItemEvent(isMine = true), - readMarker, + aTimelineItemEvent(isMine = false), aTimelineItemEvent(isMine = false), aTimelineItemEvent(isMine = false), ) @@ -561,7 +560,10 @@ private fun TimelineViewWithReadMarker( TimelineView( state = aTimelineState( timelineItems = timelineItems, - readMarkerIndex = timelineItems.indexOf(readMarker), + // Index points past the loaded items, mirroring the real-world state the FAB + // represents: the user has scrolled past the read marker, so it's no longer in + // view. The actual scroll target doesn't matter for a static preview. + readMarkerIndex = timelineItems.size, unreadMessagesCount = unreadMessagesCount, newMessagesCount = newMessagesCount, ), @@ -590,7 +592,7 @@ internal fun TimelineViewWithReadMarkerNoBadgesPreview() = ElementPreview { @PreviewsDayNight @Composable internal fun TimelineViewWithReadMarkerPreview() = ElementPreview { - TimelineViewWithReadMarker(unreadMessagesCount = 3, newMessagesCount = 12) + TimelineViewWithReadMarker(unreadMessagesCount = 3, newMessagesCount = 0) } @PreviewsDayNight