From f95093821e11c6e3dd96a0a61fa027722d2e047a Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 28 Nov 2023 11:56:21 +0100 Subject: [PATCH] Add preview for expanded state of GroupedEvents. --- .../impl/timeline/TimelineStateProvider.kt | 11 ++-- .../TimelineItemGroupedEventsRow.kt | 52 +++++++++++++++++++ .../event/TimelineItemEventContentProvider.kt | 6 ++- 3 files changed, 64 insertions(+), 5 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 852c931186..8cfcb56ca0 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 @@ -187,16 +187,21 @@ internal fun aTimelineItemReadReceipts(): TimelineItemReadReceipts { } fun aGroupedEvents(id: Long = 0): TimelineItem.GroupedEvents { - val event = aTimelineItemEvent( + val event1 = aTimelineItemEvent( isMine = true, content = aTimelineItemStateEventContent(), groupPosition = TimelineItemGroupPosition.None ) + val event2 = aTimelineItemEvent( + isMine = true, + content = aTimelineItemStateEventContent(body = "Another state event"), + groupPosition = TimelineItemGroupPosition.None + ) return TimelineItem.GroupedEvents( id = id.toString(), events = listOf( - event, - event, + event1, + event2, ).toImmutableList() ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemGroupedEventsRow.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemGroupedEventsRow.kt index 65c222657e..51b103b51f 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemGroupedEventsRow.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemGroupedEventsRow.kt @@ -26,9 +26,13 @@ import androidx.compose.ui.res.pluralStringResource import io.element.android.features.messages.impl.R import io.element.android.features.messages.impl.timeline.TimelineEvents import io.element.android.features.messages.impl.timeline.TimelineItemRow +import io.element.android.features.messages.impl.timeline.aGroupedEvents import io.element.android.features.messages.impl.timeline.components.group.GroupHeaderView import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.features.messages.impl.timeline.session.SessionState +import io.element.android.features.messages.impl.timeline.session.aSessionState +import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.UserId @@ -138,3 +142,51 @@ private fun TimelineItemGroupedEventsRowContent( } } } + +@PreviewsDayNight +@Composable +fun TimelineItemGroupedEventsRowContentExpandedPreview() = ElementPreview { + TimelineItemGroupedEventsRowContent( + isExpanded = true, + onExpandGroupClick = {}, + timelineItem = aGroupedEvents(), + highlightedItem = null, + showReadReceipts = true, + isLastOutgoingMessage = false, + sessionState = aSessionState(), + onClick = {}, + onLongClick = {}, + inReplyToClick = {}, + onUserDataClick = {}, + onTimestampClicked = {}, + onReactionClick = { _, _ -> }, + onReactionLongClick = { _, _ -> }, + onMoreReactionsClick = {}, + onReadReceiptClick = {}, + eventSink = {}, + ) +} + +@PreviewsDayNight +@Composable +fun TimelineItemGroupedEventsRowContentCollapsePreview() = ElementPreview { + TimelineItemGroupedEventsRowContent( + isExpanded = false, + onExpandGroupClick = {}, + timelineItem = aGroupedEvents(), + highlightedItem = null, + showReadReceipts = true, + isLastOutgoingMessage = false, + sessionState = aSessionState(), + onClick = {}, + onLongClick = {}, + inReplyToClick = {}, + onUserDataClick = {}, + onTimestampClicked = {}, + onReactionClick = { _, _ -> }, + onReactionLongClick = { _, _ -> }, + onMoreReactionsClick = {}, + onReadReceiptClick = {}, + eventSink = {}, + ) +} diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEventContentProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEventContentProvider.kt index bbbd8748a2..3a4516489e 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEventContentProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEventContentProvider.kt @@ -79,6 +79,8 @@ fun aTimelineItemTextContent() = TimelineItemTextContent( fun aTimelineItemUnknownContent() = TimelineItemUnknownContent -fun aTimelineItemStateEventContent() = TimelineItemStateEventContent( - body = "A state event", +fun aTimelineItemStateEventContent( + body: String = "A state event", +) = TimelineItemStateEventContent( + body = body, )