Add some previews.
This commit is contained in:
parent
0734404fec
commit
196274a276
2 changed files with 62 additions and 17 deletions
|
|
@ -27,11 +27,16 @@ import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.text.SpanStyle
|
import androidx.compose.ui.text.SpanStyle
|
||||||
import androidx.compose.ui.text.buildAnnotatedString
|
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 androidx.core.text.util.LinkifyCompat
|
||||||
import io.element.android.features.messages.timeline.components.html.HtmlDocument
|
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.TimelineItemTextBasedContent
|
||||||
|
import io.element.android.features.messages.timeline.model.content.TimelineItemTextBasedContentProvider
|
||||||
import io.element.android.libraries.designsystem.LinkColor
|
import io.element.android.libraries.designsystem.LinkColor
|
||||||
import io.element.android.libraries.designsystem.components.ClickableLinkText
|
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
|
@Composable
|
||||||
fun TimelineItemTextView(
|
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())
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,27 +17,51 @@
|
||||||
package io.element.android.features.messages.timeline.model.content
|
package io.element.android.features.messages.timeline.model.content
|
||||||
|
|
||||||
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
||||||
|
import org.jsoup.Jsoup
|
||||||
import org.matrix.rustcomponents.sdk.EncryptedMessage
|
import org.matrix.rustcomponents.sdk.EncryptedMessage
|
||||||
|
|
||||||
class TimelineItemContentProvider : PreviewParameterProvider<TimelineItemContent> {
|
class TimelineItemContentProvider : PreviewParameterProvider<TimelineItemContent> {
|
||||||
override val values = sequenceOf(
|
override val values = sequenceOf(
|
||||||
TimelineItemEmoteContent(
|
aTimelineItemEmoteContent(),
|
||||||
body = "Emote",
|
aTimelineItemEncryptedContent(),
|
||||||
htmlDocument = null
|
|
||||||
),
|
|
||||||
TimelineItemEncryptedContent(
|
|
||||||
encryptedMessage = EncryptedMessage.Unknown
|
|
||||||
),
|
|
||||||
// TODO MessagesTimelineItemImageContent(),
|
// TODO MessagesTimelineItemImageContent(),
|
||||||
TimelineItemNoticeContent(
|
aTimelineItemNoticeContent(),
|
||||||
body = "Notice",
|
aTimelineItemRedactedContent(),
|
||||||
htmlDocument = null
|
aTimelineItemTextContent(),
|
||||||
),
|
aTimelineItemUnknownContent(),
|
||||||
TimelineItemRedactedContent,
|
|
||||||
TimelineItemTextContent(
|
|
||||||
body = "Text",
|
|
||||||
htmlDocument = null
|
|
||||||
),
|
|
||||||
TimelineItemUnknownContent,
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class TimelineItemTextBasedContentProvider : PreviewParameterProvider<TimelineItemTextBasedContent> {
|
||||||
|
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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue