From 3ecabee0aabaa3ecdb8288113a93d89840b6b72b Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 29 Jun 2023 17:40:50 +0200 Subject: [PATCH] Add preview for reply in timeline. --- .../components/TimelineItemEventRow.kt | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt index 73770fcf71..e086299a79 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt @@ -69,6 +69,8 @@ import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.timeline.item.event.FileMessageType import io.element.android.libraries.matrix.api.timeline.item.event.ImageMessageType import io.element.android.libraries.matrix.api.timeline.item.event.InReplyTo +import io.element.android.libraries.matrix.api.timeline.item.event.MessageContent +import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType import io.element.android.libraries.matrix.api.timeline.item.event.VideoMessageType import io.element.android.libraries.matrix.ui.components.AttachmentThumbnail import io.element.android.libraries.matrix.ui.components.AttachmentThumbnailInfo @@ -452,6 +454,67 @@ private fun ContentToPreview() { } } +@Preview +@Composable +internal fun TimelineItemEventRowWithReplyLightPreview() = + ElementPreviewLight { ContentToPreviewWithReply() } + +@Preview +@Composable +internal fun TimelineItemEventRowWithReplyDarkPreview() = + ElementPreviewDark { ContentToPreviewWithReply() } + +@Composable +private fun ContentToPreviewWithReply() { + Column { + sequenceOf(false, true).forEach { + TimelineItemEventRow( + event = aTimelineItemEvent( + isMine = it, + content = aTimelineItemTextContent().copy( + body = "A long text which will be displayed on several lines and" + + " hopefully can be manually adjusted to test different behaviors." + ), + inReplyTo = aInReplyToReady() + ), + isHighlighted = false, + onClick = {}, + onLongClick = {}, + onUserDataClick = {}, + inReplyToClick = {}, + onReactionClick = { _, _ -> }, + onTimestampClicked = {}, + ) + TimelineItemEventRow( + event = aTimelineItemEvent( + isMine = it, + content = aTimelineItemImageContent().copy( + aspectRatio = 5f + ), + inReplyTo = aInReplyToReady() + ), + isHighlighted = false, + onClick = {}, + onLongClick = {}, + onUserDataClick = {}, + inReplyToClick = {}, + onReactionClick = { _, _ -> }, + onTimestampClicked = {}, + ) + } + } +} + +private fun aInReplyToReady(): InReplyTo.Ready { + return InReplyTo.Ready( + eventId = EventId("\$event"), + content = MessageContent("Message which are being replied.", null, false, TextMessageType("Message", null)), + senderId = UserId("@Sender:domain"), + senderDisplayName = "Sender", + senderAvatarUrl = null, + ) +} + @Preview @Composable internal fun TimelineItemEventRowTimestampLightPreview(@PreviewParameter(TimelineItemEventForTimestampViewProvider::class) event: TimelineItem.Event) =