Reduce number of Preview for Avatar.

It will cover more cases, and it will limit the risk of conflict on screenshot, which happen each time we touch AvatarSize.
This commit is contained in:
Benoit Marty
2025-10-09 09:55:19 +02:00
parent eb51b5cc3f
commit b03391e3f3
2 changed files with 51 additions and 30 deletions

View File

@@ -8,12 +8,13 @@
package io.element.android.libraries.designsystem.components.avatar
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import io.element.android.libraries.designsystem.components.avatar.internal.RoomAvatar
@@ -21,8 +22,8 @@ import io.element.android.libraries.designsystem.components.avatar.internal.Spac
import io.element.android.libraries.designsystem.components.avatar.internal.UserAvatar
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
import io.element.android.libraries.designsystem.preview.PreviewGroup
import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.utils.CommonDrawables
import kotlinx.collections.immutable.persistentListOf
@Composable
fun Avatar(
@@ -64,18 +65,54 @@ fun Avatar(
@Preview(group = PreviewGroup.Avatars)
@Composable
internal fun AvatarPreview(@PreviewParameter(AvatarDataProvider::class) avatarData: AvatarData) =
ElementThemedPreview(
drawableFallbackForImages = CommonDrawables.sample_avatar,
internal fun AvatarPreview() = ElementThemedPreview(
drawableFallbackForImages = CommonDrawables.sample_background,
) {
Column(
modifier = Modifier.padding(4.dp),
verticalArrangement = Arrangement.spacedBy(4.dp),
) {
Row(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(16.dp)
) {
Avatar(
avatarData = avatarData,
avatarType = AvatarType.User,
)
Text(text = avatarData.size.name + " " + avatarData.size.dp)
listOf(
anAvatarData(size = AvatarSize.UserListItem),
anAvatarData(size = AvatarSize.UserListItem, name = null),
anAvatarData(size = AvatarSize.UserListItem, url = "aUrl"),
).forEach { avatarData ->
Row(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(4.dp)
) {
Avatar(
avatarData = avatarData,
avatarType = AvatarType.User,
)
Avatar(
avatarData = avatarData,
avatarType = AvatarType.Room(isTombstoned = false),
)
Avatar(
avatarData = avatarData,
avatarType = AvatarType.Room(
heroes = persistentListOf(
anAvatarData("@carol:server.org", "Carol", size = AvatarSize.UserListItem),
anAvatarData("@david:server.org", "David", size = AvatarSize.UserListItem),
anAvatarData("@eve:server.org", "Eve", size = AvatarSize.UserListItem),
anAvatarData("@justin:server.org", "Justin", size = AvatarSize.UserListItem),
)
)
)
Avatar(
avatarData = avatarData,
avatarType = AvatarType.Room(isTombstoned = true),
)
Avatar(
avatarData = avatarData,
avatarType = AvatarType.Space(isTombstoned = false),
)
Avatar(
avatarData = avatarData,
avatarType = AvatarType.Space(isTombstoned = true),
)
}
}
}
}

View File

@@ -7,22 +7,6 @@
package io.element.android.libraries.designsystem.components.avatar
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
open class AvatarDataProvider : PreviewParameterProvider<AvatarData> {
override val values: Sequence<AvatarData>
get() = AvatarSize.entries
.asSequence()
.map {
sequenceOf(
anAvatarData(size = it),
anAvatarData(size = it, name = null),
anAvatarData(size = it, url = "aUrl"),
)
}
.flatten()
}
fun anAvatarData(
// Let's the id not start with a 'a'.
id: String = "@id_of_alice:server.org",