Skip to content

Commit cf6672a

Browse files
authored
Merge pull request #5488 from element-hq/feature/fga/space_room_heroes
Space : makes sure to use room heroes for avatar
2 parents d806cf0 + 0467149 commit cf6672a

File tree

9 files changed

+34
-11
lines changed

9 files changed

+34
-11
lines changed

libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/spaces/SpaceRoom.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import io.element.android.libraries.matrix.api.room.CurrentUserMembership
1313
import io.element.android.libraries.matrix.api.room.RoomType
1414
import io.element.android.libraries.matrix.api.room.join.JoinRule
1515
import io.element.android.libraries.matrix.api.user.MatrixUser
16+
import kotlinx.collections.immutable.ImmutableList
1617

1718
data class SpaceRoom(
1819
val rawName: String?,
@@ -21,7 +22,7 @@ data class SpaceRoom(
2122
val canonicalAlias: RoomAlias?,
2223
val childrenCount: Int,
2324
val guestCanJoin: Boolean,
24-
val heroes: List<MatrixUser>,
25+
val heroes: ImmutableList<MatrixUser>,
2526
val joinRule: JoinRule?,
2627
val numJoinedMembers: Int,
2728
val roomId: RoomId,
@@ -32,7 +33,7 @@ data class SpaceRoom(
3233
/**
3334
* The via parameters of the room.
3435
*/
35-
val via: List<String>,
36+
val via: ImmutableList<String>,
3637
val isDirect: Boolean?,
3738
) {
3839
val isSpace = roomType == RoomType.Space

libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/spaces/SpaceRoomMapper.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import io.element.android.libraries.matrix.api.core.RoomId
1313
import io.element.android.libraries.matrix.api.spaces.SpaceRoom
1414
import io.element.android.libraries.matrix.impl.room.join.map
1515
import io.element.android.libraries.matrix.impl.room.map
16+
import kotlinx.collections.immutable.toImmutableList
1617
import org.matrix.rustcomponents.sdk.SpaceRoom as RustSpaceRoom
1718

1819
class SpaceRoomMapper {
@@ -22,7 +23,7 @@ class SpaceRoomMapper {
2223
canonicalAlias = spaceRoom.canonicalAlias?.let(::RoomAlias),
2324
childrenCount = spaceRoom.childrenCount.toInt(),
2425
guestCanJoin = spaceRoom.guestCanJoin,
25-
heroes = spaceRoom.heroes.orEmpty().map { it.map() },
26+
heroes = spaceRoom.heroes.orEmpty().map { it.map() }.toImmutableList(),
2627
joinRule = spaceRoom.joinRule?.map(),
2728
rawName = spaceRoom.rawName,
2829
displayName = spaceRoom.displayName,
@@ -32,7 +33,7 @@ class SpaceRoomMapper {
3233
state = spaceRoom.state?.map(),
3334
topic = spaceRoom.topic,
3435
worldReadable = spaceRoom.worldReadable.orFalse(),
35-
via = spaceRoom.via,
36+
via = spaceRoom.via.toImmutableList(),
3637
isDirect = spaceRoom.isDirect,
3738
)
3839
}

libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/SpaceRoomItemView.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ import io.element.android.libraries.matrix.ui.model.icon
5353
import io.element.android.libraries.matrix.ui.model.label
5454
import io.element.android.libraries.ui.strings.CommonPlurals
5555
import io.element.android.libraries.ui.strings.CommonStrings
56+
import kotlinx.collections.immutable.ImmutableList
57+
import kotlinx.collections.immutable.toImmutableList
5658

5759
@Composable
5860
fun SpaceRoomItemView(
@@ -70,6 +72,9 @@ fun SpaceRoomItemView(
7072
avatarData = spaceRoom.getAvatarData(AvatarSize.SpaceListItem),
7173
isSpace = spaceRoom.isSpace,
7274
hideAvatars = hideAvatars,
75+
heroes = spaceRoom.heroes
76+
.map { hero -> hero.getAvatarData(AvatarSize.SpaceListItem) }
77+
.toImmutableList(),
7378
onClick = onClick,
7479
onLongClick = onLongClick,
7580
trailingAction = trailingAction,
@@ -164,6 +169,7 @@ private fun NameAndIndicatorRow(
164169
private fun SpaceRoomItemScaffold(
165170
avatarData: AvatarData,
166171
isSpace: Boolean,
172+
heroes: ImmutableList<AvatarData>,
167173
onClick: () -> Unit,
168174
onLongClick: () -> Unit,
169175
hideAvatars: Boolean,
@@ -189,7 +195,7 @@ private fun SpaceRoomItemScaffold(
189195
) {
190196
Avatar(
191197
avatarData = avatarData,
192-
avatarType = if (isSpace) AvatarType.Space() else AvatarType.Room(),
198+
avatarType = if (isSpace) AvatarType.Space() else AvatarType.Room(heroes = heroes),
193199
hideImage = hideAvatars,
194200
)
195201
Spacer(modifier = Modifier.width(16.dp))

libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/SpaceRoomProvider.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class SpaceRoomProvider : PreviewParameterProvider<SpaceRoom> {
2727
state = CurrentUserMembership.LEFT,
2828
),
2929
aSpaceRoom(
30+
displayName = "Alice",
3031
roomType = RoomType.Room,
3132
isDirect = true,
3233
heroes = listOf(aMatrixUser(displayName = "Alice")),
@@ -66,5 +67,12 @@ class SpaceRoomProvider : PreviewParameterProvider<SpaceRoom> {
6667
roomId = RoomId("!spaceId2:example.com"),
6768
state = CurrentUserMembership.INVITED,
6869
),
70+
aSpaceRoom(
71+
displayName = "Alice",
72+
roomType = RoomType.Space,
73+
heroes = listOf(aMatrixUser(displayName = "Alice")),
74+
state = CurrentUserMembership.JOINED,
75+
numJoinedMembers = 2,
76+
),
6977
)
7078
}

libraries/previewutils/src/main/kotlin/io/element/android/libraries/previewutils/room/SpaceRoomFixture.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import io.element.android.libraries.matrix.api.room.RoomType
1414
import io.element.android.libraries.matrix.api.room.join.JoinRule
1515
import io.element.android.libraries.matrix.api.spaces.SpaceRoom
1616
import io.element.android.libraries.matrix.api.user.MatrixUser
17+
import kotlinx.collections.immutable.toImmutableList
1718

1819
fun aSpaceRoom(
1920
rawName: String? = null,
@@ -39,14 +40,14 @@ fun aSpaceRoom(
3940
canonicalAlias = canonicalAlias,
4041
childrenCount = childrenCount,
4142
guestCanJoin = guestCanJoin,
42-
heroes = heroes,
43+
heroes = heroes.toImmutableList(),
4344
joinRule = joinRule,
4445
numJoinedMembers = numJoinedMembers,
4546
roomId = roomId,
4647
roomType = roomType,
4748
state = state,
4849
topic = topic,
4950
worldReadable = worldReadable,
50-
via = via,
51+
via = via.toImmutableList(),
5152
isDirect = isDirect
5253
)
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 3 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)