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:
commit
cf6672a261
9 changed files with 34 additions and 11 deletions
|
|
@ -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
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a9aa3aa6fd58dbba3db9e568773770397dcb4a2a7ea4c4cf61b762a0c6ef513a
|
||||
size 10631
|
||||
oid sha256:333ae4e1f2e0ad7df938dfa3f0b54137ed641d327bcd7c316965fb4b4cc049c7
|
||||
size 8937
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f4df538763a96fb5511bbb175856943539951b804b7ca2b5d69d7033fa5d3588
|
||||
size 11012
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:63dfdaf33475bcbf6c0c001b6c62c14fcbc5e84cf9d7f55c4b082dc359fbd7ea
|
||||
size 10515
|
||||
oid sha256:05368c1bf4caed7d565daadade2dade7046fce15f1bd37eff4b1ec0faed5e948
|
||||
size 9163
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:59a2703c34c580655ff8e8c4681ad3937d7daaf9211e899ac8ade2826fdaab03
|
||||
size 10782
|
||||
Loading…
Add table
Add a link
Reference in a new issue