Browse Source

Add preview on ComposerModeView

pull/3695/head
Benoit Marty 2 days ago committed by Benoit Marty
parent
commit
b1ab737393
  1. 26
      libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/ComposerModeView.kt
  2. 24
      libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/MessageComposerModeSpecialProvider.kt

26
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.draw.clip
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.compound.theme.ElementTheme import io.element.android.compound.theme.ElementTheme
import io.element.android.compound.tokens.generated.CompoundIcons 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.Icon
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.matrix.ui.messages.reply.InReplyToDetails 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( internal fun ComposerModeView(
composerMode: MessageComposerMode.Special, composerMode: MessageComposerMode.Special,
onResetComposerMode: () -> Unit, onResetComposerMode: () -> Unit,
modifier: Modifier = Modifier,
) { ) {
when (composerMode) { when (composerMode) {
is MessageComposerMode.Edit -> { is MessageComposerMode.Edit -> {
EditingModeView(onResetComposerMode = onResetComposerMode) EditingModeView(
modifier = modifier,
onResetComposerMode = onResetComposerMode,
)
} }
is MessageComposerMode.Reply -> { is MessageComposerMode.Reply -> {
ReplyToModeView( ReplyToModeView(
modifier = Modifier.padding(8.dp), modifier = modifier.padding(8.dp),
replyToDetails = composerMode.replyToDetails, replyToDetails = composerMode.replyToDetails,
hideImage = composerMode.hideImage, hideImage = composerMode.hideImage,
onResetComposerMode = onResetComposerMode, onResetComposerMode = onResetComposerMode,
@ -58,11 +65,12 @@ internal fun ComposerModeView(
@Composable @Composable
private fun EditingModeView( private fun EditingModeView(
onResetComposerMode: () -> Unit, onResetComposerMode: () -> Unit,
modifier: Modifier = Modifier,
) { ) {
Row( Row(
horizontalArrangement = Arrangement.spacedBy(4.dp), horizontalArrangement = Arrangement.spacedBy(4.dp),
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
modifier = Modifier modifier = modifier
.fillMaxWidth() .fillMaxWidth()
.padding(start = 12.dp) .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)
)
}

24
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<MessageComposerMode.Special> {
override val values: Sequence<MessageComposerMode.Special> = sequenceOf(
aMessageComposerModeEdit()
) +
// Keep only 3 values from InReplyToDetailsProvider
InReplyToDetailsProvider().values.take(3).map {
aMessageComposerModeReply(
replyToDetails = it
)
}
}
Loading…
Cancel
Save