Move preview cases to UserStatusStateProvider, use @PreviewParameter in view

This commit is contained in:
ganfra
2026-06-16 11:32:47 +02:00
parent 889fd08b5c
commit 078b63fd7c
2 changed files with 17 additions and 32 deletions
@@ -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<UserStatusState> {
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,
@@ -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)
}