feature(space): compute space room name locally

This commit is contained in:
ganfra
2025-10-06 14:21:01 +02:00
parent 1ac524fc08
commit ea08edb912
7 changed files with 37 additions and 14 deletions

View File

@@ -30,7 +30,7 @@ class SpaceRoomProvider : PreviewParameterProvider<SpaceRoom> {
roomId = RoomId("!spaceId1:example.com"),
),
aSpaceRoom(
name = null,
rawName = null,
numJoinedMembers = 5,
childrenCount = 10,
worldReadable = true,
@@ -39,7 +39,7 @@ class SpaceRoomProvider : PreviewParameterProvider<SpaceRoom> {
state = CurrentUserMembership.INVITED,
),
aSpaceRoom(
name = null,
rawName = null,
numJoinedMembers = 5,
childrenCount = 10,
worldReadable = true,

View File

@@ -30,7 +30,7 @@ class LeaveSpaceStateProvider : PreviewParameterProvider<LeaveSpaceState> {
persistentListOf(
aSelectableSpaceRoom(
spaceRoom = aSpaceRoom(
name = "A long space name that should be truncated",
rawName = "A long space name that should be truncated",
worldReadable = true,
),
isLastAdmin = true,

View File

@@ -25,7 +25,7 @@ open class SpaceStateProvider : PreviewParameterProvider<SpaceState> {
aSpaceState(),
aSpaceState(
parentSpace = aSpaceRoom(
name = null,
rawName = null,
numJoinedMembers = 5,
childrenCount = 10,
worldReadable = true,

View File

@@ -15,7 +15,7 @@ import io.element.android.libraries.matrix.api.room.join.JoinRule
import io.element.android.libraries.matrix.api.user.MatrixUser
data class SpaceRoom(
val name: String?,
val rawName: String?,
val avatarUrl: String?,
val canonicalAlias: RoomAlias?,
val childrenCount: Int,
@@ -32,6 +32,18 @@ data class SpaceRoom(
* The via parameters of the room.
*/
val via: List<String>,
val isDirect: Boolean?,
) {
val isSpace = roomType == RoomType.Space
/**
* Temporary logic to compute a name for direct rooms with no name.
* This will be replaced by sdk logic in the future.
*/
val name = if (rawName == null && isDirect == true && heroes.size == 1) {
val dmRecipient = heroes.first()
dmRecipient.displayName
} else {
rawName
}
}

View File

@@ -24,7 +24,7 @@ class SpaceRoomMapper {
guestCanJoin = spaceRoom.guestCanJoin,
heroes = spaceRoom.heroes.orEmpty().map { it.map() },
joinRule = spaceRoom.joinRule?.map(),
name = spaceRoom.name,
rawName = spaceRoom.name,
numJoinedMembers = spaceRoom.numJoinedMembers.toInt(),
roomId = RoomId(spaceRoom.roomId),
roomType = spaceRoom.roomType.map(),
@@ -32,6 +32,7 @@ class SpaceRoomMapper {
topic = spaceRoom.topic,
worldReadable = spaceRoom.worldReadable.orFalse(),
via = spaceRoom.via,
isDirect = spaceRoom.isDirect,
)
}
}

View File

@@ -18,23 +18,31 @@ class SpaceRoomProvider : PreviewParameterProvider<SpaceRoom> {
override val values: Sequence<SpaceRoom> = sequenceOf(
aSpaceRoom(
roomType = RoomType.Room,
name = "Room name with topic",
rawName = "Room name with topic",
topic = "Room topic that is quite long and might be truncated"
),
aSpaceRoom(
roomType = RoomType.Room,
name = "Room name no topic",
rawName = "Room name no topic",
state = CurrentUserMembership.LEFT,
),
aSpaceRoom(
roomType = RoomType.Room,
name = "Room name with topic",
rawName = null,
isDirect = true,
heroes = listOf(aMatrixUser(displayName = "Alice")),
state = CurrentUserMembership.JOINED,
numJoinedMembers = 2,
),
aSpaceRoom(
roomType = RoomType.Room,
rawName = "Room name with topic",
topic = "Room topic that is quite long and might be truncated",
state = CurrentUserMembership.INVITED,
),
aSpaceRoom(
roomType = RoomType.Room,
name = "Room name no topic",
rawName = "Room name no topic",
state = CurrentUserMembership.INVITED,
),
aSpaceRoom(
@@ -52,7 +60,7 @@ class SpaceRoomProvider : PreviewParameterProvider<SpaceRoom> {
state = CurrentUserMembership.LEFT,
),
aSpaceRoom(
name = null,
rawName = null,
numJoinedMembers = 5,
childrenCount = 10,
worldReadable = true,
@@ -61,7 +69,7 @@ class SpaceRoomProvider : PreviewParameterProvider<SpaceRoom> {
state = CurrentUserMembership.INVITED,
),
aSpaceRoom(
name = null,
rawName = null,
numJoinedMembers = 5,
childrenCount = 10,
worldReadable = true,

View File

@@ -16,7 +16,7 @@ import io.element.android.libraries.matrix.api.spaces.SpaceRoom
import io.element.android.libraries.matrix.api.user.MatrixUser
fun aSpaceRoom(
name: String? = "Space name",
rawName: String? = "Space name",
avatarUrl: String? = null,
canonicalAlias: RoomAlias? = null,
childrenCount: Int = 0,
@@ -29,9 +29,10 @@ fun aSpaceRoom(
state: CurrentUserMembership? = null,
topic: String? = null,
worldReadable: Boolean = false,
isDirect: Boolean? = null,
via: List<String> = emptyList(),
) = SpaceRoom(
name = name,
rawName = rawName,
avatarUrl = avatarUrl,
canonicalAlias = canonicalAlias,
childrenCount = childrenCount,
@@ -45,4 +46,5 @@ fun aSpaceRoom(
topic = topic,
worldReadable = worldReadable,
via = via,
isDirect = isDirect
)