From a19d678dcda09d94c3f3111962542dd0e0fad4e4 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 14 Feb 2023 14:01:09 +0100 Subject: [PATCH] Add some previews. --- .../components/TimelineItemTextView.kt | 21 +++++++ .../content/TimelineItemContentProvider.kt | 58 +++++++++++++------ 2 files changed, 62 insertions(+), 17 deletions(-) diff --git a/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/components/TimelineItemTextView.kt b/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/components/TimelineItemTextView.kt index ad1bb5edb9..993b461c11 100644 --- a/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/components/TimelineItemTextView.kt +++ b/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/components/TimelineItemTextView.kt @@ -27,11 +27,16 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.core.text.util.LinkifyCompat import io.element.android.features.messages.timeline.components.html.HtmlDocument import io.element.android.features.messages.timeline.model.content.TimelineItemTextBasedContent +import io.element.android.features.messages.timeline.model.content.TimelineItemTextBasedContentProvider import io.element.android.libraries.designsystem.LinkColor import io.element.android.libraries.designsystem.components.ClickableLinkText +import io.element.android.libraries.designsystem.preview.ElementPreviewDark +import io.element.android.libraries.designsystem.preview.ElementPreviewLight @Composable fun TimelineItemTextView( @@ -91,3 +96,19 @@ private fun String.linkify( ) } } + +@Preview +@Composable +internal fun TimelineItemTextViewLightPreview(@PreviewParameter(TimelineItemTextBasedContentProvider::class) content: TimelineItemTextBasedContent) = + ElementPreviewLight { ContentToPreview(content) } + +@Preview +@Composable +internal fun TimelineItemTextViewDarkPreview(@PreviewParameter(TimelineItemTextBasedContentProvider::class) content: TimelineItemTextBasedContent) = + ElementPreviewDark { ContentToPreview(content) } + +@Composable +fun ContentToPreview(content: TimelineItemTextBasedContent) { + TimelineItemTextView(content, MutableInteractionSource()) +} + diff --git a/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/model/content/TimelineItemContentProvider.kt b/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/model/content/TimelineItemContentProvider.kt index 83ec1b6f51..aa98364e8d 100644 --- a/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/model/content/TimelineItemContentProvider.kt +++ b/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/model/content/TimelineItemContentProvider.kt @@ -17,27 +17,51 @@ package io.element.android.features.messages.timeline.model.content import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import org.jsoup.Jsoup import org.matrix.rustcomponents.sdk.EncryptedMessage class TimelineItemContentProvider : PreviewParameterProvider { override val values = sequenceOf( - TimelineItemEmoteContent( - body = "Emote", - htmlDocument = null - ), - TimelineItemEncryptedContent( - encryptedMessage = EncryptedMessage.Unknown - ), + aTimelineItemEmoteContent(), + aTimelineItemEncryptedContent(), // TODO MessagesTimelineItemImageContent(), - TimelineItemNoticeContent( - body = "Notice", - htmlDocument = null - ), - TimelineItemRedactedContent, - TimelineItemTextContent( - body = "Text", - htmlDocument = null - ), - TimelineItemUnknownContent, + aTimelineItemNoticeContent(), + aTimelineItemRedactedContent(), + aTimelineItemTextContent(), + aTimelineItemUnknownContent(), ) } + +class TimelineItemTextBasedContentProvider : PreviewParameterProvider { + override val values = sequenceOf( + aTimelineItemEmoteContent(), + aTimelineItemEmoteContent().copy(htmlDocument = Jsoup.parse("Emote")), + aTimelineItemNoticeContent(), + aTimelineItemNoticeContent().copy(htmlDocument = Jsoup.parse("Notice")), + aTimelineItemTextContent(), + aTimelineItemTextContent().copy(htmlDocument = Jsoup.parse("Text")), + ) +} + +fun aTimelineItemEmoteContent() = TimelineItemEmoteContent( + body = "Emote", + htmlDocument = null +) + +fun aTimelineItemEncryptedContent() = TimelineItemEncryptedContent( + encryptedMessage = EncryptedMessage.Unknown +) + +fun aTimelineItemNoticeContent() = TimelineItemNoticeContent( + body = "Notice", + htmlDocument = null +) + +fun aTimelineItemRedactedContent() = TimelineItemRedactedContent + +fun aTimelineItemTextContent() = TimelineItemTextContent( + body = "Text", + htmlDocument = null +) + +fun aTimelineItemUnknownContent() = TimelineItemUnknownContent