diff --git a/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/JoinRoomPresenterTest.kt b/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/JoinRoomPresenterTest.kt index 8a475668ae..cabab56802 100644 --- a/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/JoinRoomPresenterTest.kt +++ b/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/JoinRoomPresenterTest.kt @@ -58,6 +58,7 @@ import io.element.android.tests.testutils.lambda.assert import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.value import io.element.android.tests.testutils.test +import kotlinx.collections.immutable.persistentListOf import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.test.runTest @@ -913,7 +914,7 @@ class JoinRoomPresenterTest { val client = FakeMatrixClient( getNotJoinedRoomResult = { _, _ -> Result.success( - aRoomPreview(info = aRoomPreviewInfo(joinRule = JoinRule.KnockRestricted(emptyList()))) + aRoomPreview(info = aRoomPreviewInfo(joinRule = JoinRule.KnockRestricted(persistentListOf()))) ) } ) @@ -933,7 +934,7 @@ class JoinRoomPresenterTest { val client = FakeMatrixClient( getNotJoinedRoomResult = { _, _ -> Result.success( - aRoomPreview(info = aRoomPreviewInfo(joinRule = JoinRule.Restricted(emptyList()))) + aRoomPreview(info = aRoomPreviewInfo(joinRule = JoinRule.Restricted(persistentListOf()))) ) } ) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/join/AllowRule.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/join/AllowRule.kt index 6fe33d242a..4dfc3ac565 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/join/AllowRule.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/join/AllowRule.kt @@ -7,8 +7,10 @@ package io.element.android.libraries.matrix.api.room.join +import androidx.compose.runtime.Immutable import io.element.android.libraries.matrix.api.core.RoomId +@Immutable sealed interface AllowRule { data class RoomMembership(val roomId: RoomId) : AllowRule data class Custom(val json: String) : AllowRule diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/join/JoinRule.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/join/JoinRule.kt index f733cb56ac..0eada82e29 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/join/JoinRule.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/join/JoinRule.kt @@ -7,12 +7,16 @@ package io.element.android.libraries.matrix.api.room.join +import androidx.compose.runtime.Immutable +import kotlinx.collections.immutable.ImmutableList + +@Immutable sealed interface JoinRule { data object Public : JoinRule data object Private : JoinRule data object Knock : JoinRule data object Invite : JoinRule - data class Restricted(val rules: List) : JoinRule - data class KnockRestricted(val rules: List) : JoinRule + data class Restricted(val rules: ImmutableList) : JoinRule + data class KnockRestricted(val rules: ImmutableList) : JoinRule data class Custom(val value: String) : JoinRule } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/join/JoinRule.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/join/JoinRule.kt index bc10a369a4..51422787e2 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/join/JoinRule.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/join/JoinRule.kt @@ -8,6 +8,7 @@ package io.element.android.libraries.matrix.impl.room.join import io.element.android.libraries.matrix.api.room.join.JoinRule +import kotlinx.collections.immutable.toPersistentList import org.matrix.rustcomponents.sdk.JoinRule as RustJoinRule fun RustJoinRule.map(): JoinRule { @@ -16,9 +17,9 @@ fun RustJoinRule.map(): JoinRule { RustJoinRule.Private -> JoinRule.Private RustJoinRule.Knock -> JoinRule.Knock RustJoinRule.Invite -> JoinRule.Invite - is RustJoinRule.Restricted -> JoinRule.Restricted(rules.map { it.map() }) + is RustJoinRule.Restricted -> JoinRule.Restricted(rules.map { it.map() }.toPersistentList()) is RustJoinRule.Custom -> JoinRule.Custom(repr) - is RustJoinRule.KnockRestricted -> JoinRule.KnockRestricted(rules.map { it.map() }) + is RustJoinRule.KnockRestricted -> JoinRule.KnockRestricted(rules.map { it.map() }.toPersistentList()) } }