Let SpaceRoom be stable the proper way.

This commit is contained in:
Benoit Marty
2025-10-08 16:42:48 +02:00
parent 4dd9c9ab73
commit 9dd6f7be68
3 changed files with 9 additions and 8 deletions

View File

@@ -7,15 +7,14 @@
package io.element.android.libraries.matrix.api.spaces
import androidx.compose.runtime.Immutable
import io.element.android.libraries.matrix.api.core.RoomAlias
import io.element.android.libraries.matrix.api.core.RoomId
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
@Immutable
data class SpaceRoom(
val rawName: String?,
val displayName: String,
@@ -23,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,
@@ -34,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

View File

@@ -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,
)
}

View File

@@ -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
)