feature(space): compute space room name locally
This commit is contained in:
parent
1ac524fc08
commit
ea08edb912
7 changed files with 37 additions and 14 deletions
|
|
@ -30,7 +30,7 @@ class SpaceRoomProvider : PreviewParameterProvider<SpaceRoom> {
|
||||||
roomId = RoomId("!spaceId1:example.com"),
|
roomId = RoomId("!spaceId1:example.com"),
|
||||||
),
|
),
|
||||||
aSpaceRoom(
|
aSpaceRoom(
|
||||||
name = null,
|
rawName = null,
|
||||||
numJoinedMembers = 5,
|
numJoinedMembers = 5,
|
||||||
childrenCount = 10,
|
childrenCount = 10,
|
||||||
worldReadable = true,
|
worldReadable = true,
|
||||||
|
|
@ -39,7 +39,7 @@ class SpaceRoomProvider : PreviewParameterProvider<SpaceRoom> {
|
||||||
state = CurrentUserMembership.INVITED,
|
state = CurrentUserMembership.INVITED,
|
||||||
),
|
),
|
||||||
aSpaceRoom(
|
aSpaceRoom(
|
||||||
name = null,
|
rawName = null,
|
||||||
numJoinedMembers = 5,
|
numJoinedMembers = 5,
|
||||||
childrenCount = 10,
|
childrenCount = 10,
|
||||||
worldReadable = true,
|
worldReadable = true,
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ class LeaveSpaceStateProvider : PreviewParameterProvider<LeaveSpaceState> {
|
||||||
persistentListOf(
|
persistentListOf(
|
||||||
aSelectableSpaceRoom(
|
aSelectableSpaceRoom(
|
||||||
spaceRoom = aSpaceRoom(
|
spaceRoom = aSpaceRoom(
|
||||||
name = "A long space name that should be truncated",
|
rawName = "A long space name that should be truncated",
|
||||||
worldReadable = true,
|
worldReadable = true,
|
||||||
),
|
),
|
||||||
isLastAdmin = true,
|
isLastAdmin = true,
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ open class SpaceStateProvider : PreviewParameterProvider<SpaceState> {
|
||||||
aSpaceState(),
|
aSpaceState(),
|
||||||
aSpaceState(
|
aSpaceState(
|
||||||
parentSpace = aSpaceRoom(
|
parentSpace = aSpaceRoom(
|
||||||
name = null,
|
rawName = null,
|
||||||
numJoinedMembers = 5,
|
numJoinedMembers = 5,
|
||||||
childrenCount = 10,
|
childrenCount = 10,
|
||||||
worldReadable = true,
|
worldReadable = true,
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ import io.element.android.libraries.matrix.api.room.join.JoinRule
|
||||||
import io.element.android.libraries.matrix.api.user.MatrixUser
|
import io.element.android.libraries.matrix.api.user.MatrixUser
|
||||||
|
|
||||||
data class SpaceRoom(
|
data class SpaceRoom(
|
||||||
val name: String?,
|
val rawName: String?,
|
||||||
val avatarUrl: String?,
|
val avatarUrl: String?,
|
||||||
val canonicalAlias: RoomAlias?,
|
val canonicalAlias: RoomAlias?,
|
||||||
val childrenCount: Int,
|
val childrenCount: Int,
|
||||||
|
|
@ -32,6 +32,18 @@ data class SpaceRoom(
|
||||||
* The via parameters of the room.
|
* The via parameters of the room.
|
||||||
*/
|
*/
|
||||||
val via: List<String>,
|
val via: List<String>,
|
||||||
|
val isDirect: Boolean?,
|
||||||
) {
|
) {
|
||||||
val isSpace = roomType == RoomType.Space
|
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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ class SpaceRoomMapper {
|
||||||
guestCanJoin = spaceRoom.guestCanJoin,
|
guestCanJoin = spaceRoom.guestCanJoin,
|
||||||
heroes = spaceRoom.heroes.orEmpty().map { it.map() },
|
heroes = spaceRoom.heroes.orEmpty().map { it.map() },
|
||||||
joinRule = spaceRoom.joinRule?.map(),
|
joinRule = spaceRoom.joinRule?.map(),
|
||||||
name = spaceRoom.name,
|
rawName = spaceRoom.name,
|
||||||
numJoinedMembers = spaceRoom.numJoinedMembers.toInt(),
|
numJoinedMembers = spaceRoom.numJoinedMembers.toInt(),
|
||||||
roomId = RoomId(spaceRoom.roomId),
|
roomId = RoomId(spaceRoom.roomId),
|
||||||
roomType = spaceRoom.roomType.map(),
|
roomType = spaceRoom.roomType.map(),
|
||||||
|
|
@ -32,6 +32,7 @@ class SpaceRoomMapper {
|
||||||
topic = spaceRoom.topic,
|
topic = spaceRoom.topic,
|
||||||
worldReadable = spaceRoom.worldReadable.orFalse(),
|
worldReadable = spaceRoom.worldReadable.orFalse(),
|
||||||
via = spaceRoom.via,
|
via = spaceRoom.via,
|
||||||
|
isDirect = spaceRoom.isDirect,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,23 +18,31 @@ class SpaceRoomProvider : PreviewParameterProvider<SpaceRoom> {
|
||||||
override val values: Sequence<SpaceRoom> = sequenceOf(
|
override val values: Sequence<SpaceRoom> = sequenceOf(
|
||||||
aSpaceRoom(
|
aSpaceRoom(
|
||||||
roomType = RoomType.Room,
|
roomType = RoomType.Room,
|
||||||
name = "Room name with topic",
|
rawName = "Room name with topic",
|
||||||
topic = "Room topic that is quite long and might be truncated"
|
topic = "Room topic that is quite long and might be truncated"
|
||||||
),
|
),
|
||||||
aSpaceRoom(
|
aSpaceRoom(
|
||||||
roomType = RoomType.Room,
|
roomType = RoomType.Room,
|
||||||
name = "Room name no topic",
|
rawName = "Room name no topic",
|
||||||
state = CurrentUserMembership.LEFT,
|
state = CurrentUserMembership.LEFT,
|
||||||
),
|
),
|
||||||
aSpaceRoom(
|
aSpaceRoom(
|
||||||
roomType = RoomType.Room,
|
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",
|
topic = "Room topic that is quite long and might be truncated",
|
||||||
state = CurrentUserMembership.INVITED,
|
state = CurrentUserMembership.INVITED,
|
||||||
),
|
),
|
||||||
aSpaceRoom(
|
aSpaceRoom(
|
||||||
roomType = RoomType.Room,
|
roomType = RoomType.Room,
|
||||||
name = "Room name no topic",
|
rawName = "Room name no topic",
|
||||||
state = CurrentUserMembership.INVITED,
|
state = CurrentUserMembership.INVITED,
|
||||||
),
|
),
|
||||||
aSpaceRoom(
|
aSpaceRoom(
|
||||||
|
|
@ -52,7 +60,7 @@ class SpaceRoomProvider : PreviewParameterProvider<SpaceRoom> {
|
||||||
state = CurrentUserMembership.LEFT,
|
state = CurrentUserMembership.LEFT,
|
||||||
),
|
),
|
||||||
aSpaceRoom(
|
aSpaceRoom(
|
||||||
name = null,
|
rawName = null,
|
||||||
numJoinedMembers = 5,
|
numJoinedMembers = 5,
|
||||||
childrenCount = 10,
|
childrenCount = 10,
|
||||||
worldReadable = true,
|
worldReadable = true,
|
||||||
|
|
@ -61,7 +69,7 @@ class SpaceRoomProvider : PreviewParameterProvider<SpaceRoom> {
|
||||||
state = CurrentUserMembership.INVITED,
|
state = CurrentUserMembership.INVITED,
|
||||||
),
|
),
|
||||||
aSpaceRoom(
|
aSpaceRoom(
|
||||||
name = null,
|
rawName = null,
|
||||||
numJoinedMembers = 5,
|
numJoinedMembers = 5,
|
||||||
childrenCount = 10,
|
childrenCount = 10,
|
||||||
worldReadable = true,
|
worldReadable = true,
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ import io.element.android.libraries.matrix.api.spaces.SpaceRoom
|
||||||
import io.element.android.libraries.matrix.api.user.MatrixUser
|
import io.element.android.libraries.matrix.api.user.MatrixUser
|
||||||
|
|
||||||
fun aSpaceRoom(
|
fun aSpaceRoom(
|
||||||
name: String? = "Space name",
|
rawName: String? = "Space name",
|
||||||
avatarUrl: String? = null,
|
avatarUrl: String? = null,
|
||||||
canonicalAlias: RoomAlias? = null,
|
canonicalAlias: RoomAlias? = null,
|
||||||
childrenCount: Int = 0,
|
childrenCount: Int = 0,
|
||||||
|
|
@ -29,9 +29,10 @@ fun aSpaceRoom(
|
||||||
state: CurrentUserMembership? = null,
|
state: CurrentUserMembership? = null,
|
||||||
topic: String? = null,
|
topic: String? = null,
|
||||||
worldReadable: Boolean = false,
|
worldReadable: Boolean = false,
|
||||||
|
isDirect: Boolean? = null,
|
||||||
via: List<String> = emptyList(),
|
via: List<String> = emptyList(),
|
||||||
) = SpaceRoom(
|
) = SpaceRoom(
|
||||||
name = name,
|
rawName = rawName,
|
||||||
avatarUrl = avatarUrl,
|
avatarUrl = avatarUrl,
|
||||||
canonicalAlias = canonicalAlias,
|
canonicalAlias = canonicalAlias,
|
||||||
childrenCount = childrenCount,
|
childrenCount = childrenCount,
|
||||||
|
|
@ -45,4 +46,5 @@ fun aSpaceRoom(
|
||||||
topic = topic,
|
topic = topic,
|
||||||
worldReadable = worldReadable,
|
worldReadable = worldReadable,
|
||||||
via = via,
|
via = via,
|
||||||
|
isDirect = isDirect
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue