Merge pull request #5488 from element-hq/feature/fga/space_room_heroes
Space : makes sure to use room heroes for avatar
This commit is contained in:
@@ -13,6 +13,7 @@ import io.element.android.libraries.matrix.api.room.CurrentUserMembership
|
||||
import io.element.android.libraries.matrix.api.room.RoomType
|
||||
import io.element.android.libraries.matrix.api.room.join.JoinRule
|
||||
import io.element.android.libraries.matrix.api.user.MatrixUser
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
|
||||
data class SpaceRoom(
|
||||
val rawName: String?,
|
||||
@@ -21,7 +22,7 @@ data class SpaceRoom(
|
||||
val canonicalAlias: RoomAlias?,
|
||||
val childrenCount: Int,
|
||||
val guestCanJoin: Boolean,
|
||||
val heroes: List<MatrixUser>,
|
||||
val heroes: ImmutableList<MatrixUser>,
|
||||
val joinRule: JoinRule?,
|
||||
val numJoinedMembers: Int,
|
||||
val roomId: RoomId,
|
||||
@@ -32,7 +33,7 @@ data class SpaceRoom(
|
||||
/**
|
||||
* The via parameters of the room.
|
||||
*/
|
||||
val via: List<String>,
|
||||
val via: ImmutableList<String>,
|
||||
val isDirect: Boolean?,
|
||||
) {
|
||||
val isSpace = roomType == RoomType.Space
|
||||
|
||||
@@ -13,6 +13,7 @@ import io.element.android.libraries.matrix.api.core.RoomId
|
||||
import io.element.android.libraries.matrix.api.spaces.SpaceRoom
|
||||
import io.element.android.libraries.matrix.impl.room.join.map
|
||||
import io.element.android.libraries.matrix.impl.room.map
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
import org.matrix.rustcomponents.sdk.SpaceRoom as RustSpaceRoom
|
||||
|
||||
class SpaceRoomMapper {
|
||||
@@ -22,7 +23,7 @@ class SpaceRoomMapper {
|
||||
canonicalAlias = spaceRoom.canonicalAlias?.let(::RoomAlias),
|
||||
childrenCount = spaceRoom.childrenCount.toInt(),
|
||||
guestCanJoin = spaceRoom.guestCanJoin,
|
||||
heroes = spaceRoom.heroes.orEmpty().map { it.map() },
|
||||
heroes = spaceRoom.heroes.orEmpty().map { it.map() }.toImmutableList(),
|
||||
joinRule = spaceRoom.joinRule?.map(),
|
||||
rawName = spaceRoom.rawName,
|
||||
displayName = spaceRoom.displayName,
|
||||
@@ -32,7 +33,7 @@ class SpaceRoomMapper {
|
||||
state = spaceRoom.state?.map(),
|
||||
topic = spaceRoom.topic,
|
||||
worldReadable = spaceRoom.worldReadable.orFalse(),
|
||||
via = spaceRoom.via,
|
||||
via = spaceRoom.via.toImmutableList(),
|
||||
isDirect = spaceRoom.isDirect,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -53,6 +53,8 @@ import io.element.android.libraries.matrix.ui.model.icon
|
||||
import io.element.android.libraries.matrix.ui.model.label
|
||||
import io.element.android.libraries.ui.strings.CommonPlurals
|
||||
import io.element.android.libraries.ui.strings.CommonStrings
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
|
||||
@Composable
|
||||
fun SpaceRoomItemView(
|
||||
@@ -70,6 +72,9 @@ fun SpaceRoomItemView(
|
||||
avatarData = spaceRoom.getAvatarData(AvatarSize.SpaceListItem),
|
||||
isSpace = spaceRoom.isSpace,
|
||||
hideAvatars = hideAvatars,
|
||||
heroes = spaceRoom.heroes
|
||||
.map { hero -> hero.getAvatarData(AvatarSize.SpaceListItem) }
|
||||
.toImmutableList(),
|
||||
onClick = onClick,
|
||||
onLongClick = onLongClick,
|
||||
trailingAction = trailingAction,
|
||||
@@ -164,6 +169,7 @@ private fun NameAndIndicatorRow(
|
||||
private fun SpaceRoomItemScaffold(
|
||||
avatarData: AvatarData,
|
||||
isSpace: Boolean,
|
||||
heroes: ImmutableList<AvatarData>,
|
||||
onClick: () -> Unit,
|
||||
onLongClick: () -> Unit,
|
||||
hideAvatars: Boolean,
|
||||
@@ -189,7 +195,7 @@ private fun SpaceRoomItemScaffold(
|
||||
) {
|
||||
Avatar(
|
||||
avatarData = avatarData,
|
||||
avatarType = if (isSpace) AvatarType.Space() else AvatarType.Room(),
|
||||
avatarType = if (isSpace) AvatarType.Space() else AvatarType.Room(heroes = heroes),
|
||||
hideImage = hideAvatars,
|
||||
)
|
||||
Spacer(modifier = Modifier.width(16.dp))
|
||||
|
||||
@@ -27,6 +27,7 @@ class SpaceRoomProvider : PreviewParameterProvider<SpaceRoom> {
|
||||
state = CurrentUserMembership.LEFT,
|
||||
),
|
||||
aSpaceRoom(
|
||||
displayName = "Alice",
|
||||
roomType = RoomType.Room,
|
||||
isDirect = true,
|
||||
heroes = listOf(aMatrixUser(displayName = "Alice")),
|
||||
@@ -66,5 +67,12 @@ class SpaceRoomProvider : PreviewParameterProvider<SpaceRoom> {
|
||||
roomId = RoomId("!spaceId2:example.com"),
|
||||
state = CurrentUserMembership.INVITED,
|
||||
),
|
||||
aSpaceRoom(
|
||||
displayName = "Alice",
|
||||
roomType = RoomType.Space,
|
||||
heroes = listOf(aMatrixUser(displayName = "Alice")),
|
||||
state = CurrentUserMembership.JOINED,
|
||||
numJoinedMembers = 2,
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import io.element.android.libraries.matrix.api.room.RoomType
|
||||
import io.element.android.libraries.matrix.api.room.join.JoinRule
|
||||
import io.element.android.libraries.matrix.api.spaces.SpaceRoom
|
||||
import io.element.android.libraries.matrix.api.user.MatrixUser
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
|
||||
fun aSpaceRoom(
|
||||
rawName: String? = null,
|
||||
@@ -39,7 +40,7 @@ fun aSpaceRoom(
|
||||
canonicalAlias = canonicalAlias,
|
||||
childrenCount = childrenCount,
|
||||
guestCanJoin = guestCanJoin,
|
||||
heroes = heroes,
|
||||
heroes = heroes.toImmutableList(),
|
||||
joinRule = joinRule,
|
||||
numJoinedMembers = numJoinedMembers,
|
||||
roomId = roomId,
|
||||
@@ -47,6 +48,6 @@ fun aSpaceRoom(
|
||||
state = state,
|
||||
topic = topic,
|
||||
worldReadable = worldReadable,
|
||||
via = via,
|
||||
via = via.toImmutableList(),
|
||||
isDirect = isDirect
|
||||
)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user