From 078b63fd7cc6b8f85d9c8f00af90912bec73b1c5 Mon Sep 17 00:00:00 2001 From: ganfra Date: Tue, 16 Jun 2026 11:32:47 +0200 Subject: [PATCH] Move preview cases to UserStatusStateProvider, use @PreviewParameter in view --- .../userstatus/UserStatusStateProvider.kt | 14 ++++++++ .../impl/userstatus/UserStatusView.kt | 35 ++----------------- 2 files changed, 17 insertions(+), 32 deletions(-) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/userstatus/UserStatusStateProvider.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/userstatus/UserStatusStateProvider.kt index 65ec264cc4..7a7a1d4dac 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/userstatus/UserStatusStateProvider.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/userstatus/UserStatusStateProvider.kt @@ -7,7 +7,21 @@ package io.element.android.features.preferences.impl.userstatus +import androidx.compose.foundation.text.input.TextFieldState +import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.libraries.matrix.api.user.DisplayedStatus +import io.element.android.libraries.matrix.api.user.UserStatus + +internal class UserStatusStateProvider : PreviewParameterProvider { + override val values get() = sequenceOf( + aUserStatusState(), + aUserStatusState(displayedStatus = DisplayedStatus.UserSet(UserStatus("🌴", "Away"))), + aUserStatusState(displayedStatus = DisplayedStatus.InCall(callJoinedTs = 0L)), + aUserStatusState(pickerState = UserStatusPickerState.ShowingPicker), + aUserStatusState(pickerState = UserStatusPickerState.CustomInput(emoji = "😀", textFieldState = TextFieldState())), + aUserStatusState(pickerState = UserStatusPickerState.CustomInput(emoji = "🚀", textFieldState = TextFieldState("Working on something"))), + ) +} fun aUserStatusState( displayedStatus: DisplayedStatus? = null, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/userstatus/UserStatusView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/userstatus/UserStatusView.kt index 0c11faaaec..3c30701834 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/userstatus/UserStatusView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/userstatus/UserStatusView.kt @@ -37,6 +37,7 @@ import io.element.android.compound.theme.ElementTheme import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.features.preferences.impl.R import io.element.android.libraries.designsystem.components.list.ListItemContent +import androidx.compose.ui.tooling.preview.PreviewParameter 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 @@ -239,36 +240,6 @@ private fun CustomStatusInputRow( @PreviewsDayNight @Composable -internal fun UserStatusRowEmptyPreview() = ElementPreview { - UserStatusRow( - state = UserStatusState( - displayedStatus = null, - pickerState = UserStatusPickerState.Hidden, - eventSink = {}, - ) - ) -} - -@PreviewsDayNight -@Composable -internal fun UserStatusRowSetPreview() = ElementPreview { - UserStatusRow( - state = UserStatusState( - displayedStatus = DisplayedStatus.UserSet(UserStatus("🌴", "Away")), - pickerState = UserStatusPickerState.Hidden, - eventSink = {}, - ) - ) -} - -@PreviewsDayNight -@Composable -internal fun UserStatusRowCustomInputPreview() = ElementPreview { - UserStatusRow( - state = UserStatusState( - displayedStatus = null, - pickerState = UserStatusPickerState.CustomInput(emoji = "😀", textFieldState = TextFieldState()), - eventSink = {}, - ) - ) +internal fun UserStatusRowPreview(@PreviewParameter(UserStatusStateProvider::class) state: UserStatusState) = ElementPreview { + UserStatusRow(state = state) }