Group preview for clarity and to limit the number of screenshots.

This commit is contained in:
Benoit Marty
2026-08-24 16:37:36 +02:00
parent 0a0eebd804
commit 7d6aa9eb76
2 changed files with 58 additions and 46 deletions
@@ -9,12 +9,15 @@
package io.element.android.libraries.matrix.ui.messages.sender package io.element.android.libraries.matrix.ui.messages.sender
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clipToBounds import androidx.compose.ui.draw.clipToBounds
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
@@ -136,9 +139,27 @@ private fun RowScope.SecondaryText(
internal fun SenderNamePreview( internal fun SenderNamePreview(
@PreviewParameter(SenderNameDataPreviewParam::class) senderNameData: SenderNameData, @PreviewParameter(SenderNameDataPreviewParam::class) senderNameData: SenderNameData,
) = ElementPreview { ) = ElementPreview {
Column(
modifier = Modifier.padding(16.dp),
verticalArrangement = Arrangement.spacedBy(8.dp),
) {
sequenceOf(
SenderNameMode.Timeline(mainColor = Color.Red),
SenderNameMode.Reply,
SenderNameMode.ActionList,
).forEach { mode ->
Column {
Text(
"Rendering in mode ${mode::class.simpleName}:",
style = ElementTheme.typography.fontBodyXsRegular,
color = ElementTheme.colors.textSecondary,
)
SenderName( SenderName(
senderId = senderNameData.userId, senderId = senderNameData.userId,
senderProfile = senderNameData.profileDetails, senderProfile = senderNameData.profileDetails,
senderNameMode = senderNameData.senderNameMode, senderNameMode = mode,
) )
}
}
}
} }
@@ -8,7 +8,6 @@
package io.element.android.libraries.matrix.ui.messages.sender package io.element.android.libraries.matrix.ui.messages.sender
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.tooling.preview.PreviewParameterProvider import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.timeline.item.event.ProfileDetails import io.element.android.libraries.matrix.api.timeline.item.event.ProfileDetails
@@ -19,35 +18,22 @@ import io.element.android.libraries.matrix.ui.messages.reply.aProfileDetailsRead
data class SenderNameData( data class SenderNameData(
val userId: UserId, val userId: UserId,
val profileDetails: ProfileDetails, val profileDetails: ProfileDetails,
val senderNameMode: SenderNameMode,
) )
open class SenderNameDataPreviewParam : PreviewParameterProvider<SenderNameData> { open class SenderNameDataPreviewParam : PreviewParameterProvider<SenderNameData> {
override val values: Sequence<SenderNameData> override val values: Sequence<SenderNameData>
get() = sequenceOf( get() = sequenceOf(
SenderNameMode.Timeline(mainColor = Color.Red), aSenderNameData(),
SenderNameMode.Reply,
SenderNameMode.ActionList,
)
.flatMap { senderNameMode ->
sequenceOf(
aSenderNameData( aSenderNameData(
senderNameMode = senderNameMode,
),
aSenderNameData(
senderNameMode = senderNameMode,
displayNameAmbiguous = true, displayNameAmbiguous = true,
), ),
aSenderNameData( aSenderNameData(
senderNameMode = senderNameMode,
profileDetails = ProfileDetails.Unavailable, profileDetails = ProfileDetails.Unavailable,
), ),
aSenderNameData( aSenderNameData(
senderNameMode = senderNameMode,
displayName = null, displayName = null,
), ),
aSenderNameData( aSenderNameData(
senderNameMode = senderNameMode,
displayedStatus = DisplayedStatus.UserSet( displayedStatus = DisplayedStatus.UserSet(
status = UserStatus( status = UserStatus(
emoji = "😀", emoji = "😀",
@@ -56,17 +42,23 @@ open class SenderNameDataPreviewParam : PreviewParameterProvider<SenderNameData>
), ),
), ),
aSenderNameData( aSenderNameData(
senderNameMode = senderNameMode,
displayedStatus = DisplayedStatus.InCall(0L), displayedStatus = DisplayedStatus.InCall(0L),
),
aSenderNameData(
displayNameAmbiguous = true,
displayedStatus = DisplayedStatus.UserSet(
status = UserStatus(
emoji = "😀",
text = "Should not be rendered",
),
),
),
) )
)
}
} }
private fun aSenderNameData( private fun aSenderNameData(
senderNameMode: SenderNameMode, userId: UserId = UserId("@alice:example.com"),
userId: UserId = UserId("@alice:${senderNameMode.javaClass.simpleName.lowercase()}"), displayName: String? = "Alice",
displayName: String? = "Alice ${senderNameMode.javaClass.simpleName}",
displayNameAmbiguous: Boolean = false, displayNameAmbiguous: Boolean = false,
displayedStatus: DisplayedStatus? = null, displayedStatus: DisplayedStatus? = null,
profileDetails: ProfileDetails = aProfileDetailsReady( profileDetails: ProfileDetails = aProfileDetailsReady(
@@ -77,5 +69,4 @@ private fun aSenderNameData(
) = SenderNameData( ) = SenderNameData(
userId = userId, userId = userId,
profileDetails = profileDetails, profileDetails = profileDetails,
senderNameMode = senderNameMode,
) )