Use heroes to render room avatars

This commit is contained in:
Benoit Marty 2024-06-20 13:10:25 +02:00
parent a199a8605f
commit ad02e05bf4
11 changed files with 79 additions and 10 deletions

View file

@ -53,7 +53,7 @@ fun CompositeAvatar(
}
when (numberOfHeroes) {
0 -> {
// Cannot happen
error("Unsupported number of heroes: 0")
}
1 -> {
Avatar(heroes[0], modifier, contentDescription)

View file

@ -36,9 +36,9 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp
import io.element.android.compound.tokens.generated.CompoundIcons
import io.element.android.libraries.designsystem.components.avatar.Avatar
import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
import io.element.android.libraries.designsystem.components.avatar.CompositeAvatar
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
@ -60,7 +60,22 @@ fun SelectedRoom(
Column(
horizontalAlignment = Alignment.CenterHorizontally,
) {
Avatar(AvatarData(roomSummary.roomId.value, roomSummary.name, roomSummary.avatarUrl, AvatarSize.SelectedRoom))
CompositeAvatar(
avatarData = AvatarData(
roomSummary.roomId.value,
roomSummary.name,
roomSummary.avatarUrl,
AvatarSize.SelectedRoom,
),
heroes = roomSummary.heroes.map {
AvatarData(
id = it.userId.value,
name = it.displayName,
url = it.avatarUrl,
size = AvatarSize.SelectedRoom
)
}
)
Text(
// If name is null, we do not have space to render "No room name", so just use `#` here.
text = roomSummary.name ?: "#",

View file

@ -41,9 +41,9 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp
import io.element.android.compound.theme.ElementTheme
import io.element.android.libraries.designsystem.components.avatar.Avatar
import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
import io.element.android.libraries.designsystem.components.avatar.CompositeAvatar
import io.element.android.libraries.designsystem.components.button.BackButton
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
@ -221,13 +221,21 @@ private fun RoomSummaryView(
.heightIn(56.dp),
verticalAlignment = Alignment.CenterVertically
) {
Avatar(
CompositeAvatar(
avatarData = AvatarData(
id = summary.roomId.value,
name = summary.name,
url = summary.avatarUrl,
size = AvatarSize.RoomSelectRoomListItem,
),
heroes = summary.heroes.map {
AvatarData(
it.userId.value,
it.displayName,
it.avatarUrl,
AvatarSize.RoomSelectRoomListItem,
)
}
)
Column(
modifier = Modifier