From b1ab737393ddf03c5b159c4e3585edcf75038e0c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 16 Oct 2024 13:52:17 +0200 Subject: [PATCH] Add preview on ComposerModeView --- .../textcomposer/ComposerModeView.kt | 26 ++++++++++++++++--- .../MessageComposerModeSpecialProvider.kt | 24 +++++++++++++++++ 2 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/MessageComposerModeSpecialProvider.kt diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/ComposerModeView.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/ComposerModeView.kt index 4d5a9ec6f7..a66667448c 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/ComposerModeView.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/ComposerModeView.kt @@ -25,9 +25,12 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme import io.element.android.compound.tokens.generated.CompoundIcons +import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.matrix.ui.messages.reply.InReplyToDetails @@ -39,14 +42,18 @@ import io.element.android.libraries.ui.strings.CommonStrings internal fun ComposerModeView( composerMode: MessageComposerMode.Special, onResetComposerMode: () -> Unit, + modifier: Modifier = Modifier, ) { when (composerMode) { is MessageComposerMode.Edit -> { - EditingModeView(onResetComposerMode = onResetComposerMode) + EditingModeView( + modifier = modifier, + onResetComposerMode = onResetComposerMode, + ) } is MessageComposerMode.Reply -> { ReplyToModeView( - modifier = Modifier.padding(8.dp), + modifier = modifier.padding(8.dp), replyToDetails = composerMode.replyToDetails, hideImage = composerMode.hideImage, onResetComposerMode = onResetComposerMode, @@ -58,11 +65,12 @@ internal fun ComposerModeView( @Composable private fun EditingModeView( onResetComposerMode: () -> Unit, + modifier: Modifier = Modifier, ) { Row( horizontalArrangement = Arrangement.spacedBy(4.dp), verticalAlignment = Alignment.CenterVertically, - modifier = Modifier + modifier = modifier .fillMaxWidth() .padding(start = 12.dp) ) { @@ -134,3 +142,15 @@ private fun ReplyToModeView( ) } } + +@PreviewsDayNight +@Composable +internal fun ComposerModeViewPreview( + @PreviewParameter(MessageComposerModeSpecialProvider::class) mode: MessageComposerMode.Special +) = ElementPreview { + ComposerModeView( + composerMode = mode, + onResetComposerMode = {}, + modifier = Modifier.background(ElementTheme.colors.bgSubtleSecondary) + ) +} diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/MessageComposerModeSpecialProvider.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/MessageComposerModeSpecialProvider.kt new file mode 100644 index 0000000000..c7d2edc6ac --- /dev/null +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/MessageComposerModeSpecialProvider.kt @@ -0,0 +1,24 @@ +/* + * Copyright 2024 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only + * Please see LICENSE in the repository root for full details. + */ + +package io.element.android.libraries.textcomposer + +import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import io.element.android.libraries.matrix.ui.messages.reply.InReplyToDetailsProvider +import io.element.android.libraries.textcomposer.model.MessageComposerMode + +class MessageComposerModeSpecialProvider : PreviewParameterProvider { + override val values: Sequence = sequenceOf( + aMessageComposerModeEdit() + ) + + // Keep only 3 values from InReplyToDetailsProvider + InReplyToDetailsProvider().values.take(3).map { + aMessageComposerModeReply( + replyToDetails = it + ) + } +}