When creating a DM, set room history visibility to invited (#6138)

This commit is contained in:
Jorge Martin Espinosa
2026-02-04 15:54:59 +01:00
committed by GitHub
parent 2737d714d9
commit 22e60bf3c6
3 changed files with 28 additions and 0 deletions

View File

@@ -39,6 +39,7 @@ import io.element.android.libraries.matrix.api.room.RoomInfo
import io.element.android.libraries.matrix.api.room.RoomMember
import io.element.android.libraries.matrix.api.room.RoomMembershipObserver
import io.element.android.libraries.matrix.api.room.alias.ResolvedRoomAlias
import io.element.android.libraries.matrix.api.room.history.RoomHistoryVisibility
import io.element.android.libraries.matrix.api.room.join.JoinRule
import io.element.android.libraries.matrix.api.roomdirectory.RoomVisibility
import io.element.android.libraries.matrix.api.roomlist.RoomListService
@@ -416,6 +417,7 @@ class RustMatrixClient(
isDirect = true,
visibility = RoomVisibility.Private,
preset = RoomPreset.TRUSTED_PRIVATE_CHAT,
historyVisibilityOverride = RoomHistoryVisibility.Invited,
invite = listOf(userId),
)
return createRoom(createRoomParams)

View File

@@ -18,6 +18,7 @@ import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiSyncServic
import io.element.android.libraries.matrix.impl.room.FakeTimelineEventTypeFilterFactory
import io.element.android.libraries.matrix.test.AN_AVATAR_URL
import io.element.android.libraries.matrix.test.A_DEVICE_ID
import io.element.android.libraries.matrix.test.A_ROOM_ID
import io.element.android.libraries.matrix.test.A_USER_ID
import io.element.android.libraries.matrix.test.A_USER_NAME
import io.element.android.libraries.sessionstorage.api.SessionStore
@@ -35,6 +36,8 @@ import kotlinx.coroutines.test.advanceUntilIdle
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.matrix.rustcomponents.sdk.Client
import org.matrix.rustcomponents.sdk.CreateRoomParameters
import org.matrix.rustcomponents.sdk.RoomHistoryVisibility
import org.matrix.rustcomponents.sdk.StoreSizes
import org.matrix.rustcomponents.sdk.UserProfile
import java.io.File
@@ -114,6 +117,23 @@ class RustMatrixClientTest {
}
}
@Test
fun `createDM overrides room history visibility to invited`() = runTest {
var createParameters: CreateRoomParameters? = null
val createRoomLambda = lambdaRecorder<CreateRoomParameters, String> {
createParameters = it
A_ROOM_ID.value
}
val client = createRustMatrixClient(
client = FakeFfiClient(createRoomResult = createRoomLambda)
)
client.createDM(A_USER_ID)
createRoomLambda.assertions().isCalledOnce()
assertThat(createParameters?.historyVisibilityOverride).isEqualTo(RoomHistoryVisibility.Invited)
}
private fun TestScope.createRustMatrixClient(
client: Client = FakeFfiClient(),
sessionStore: SessionStore = InMemorySessionStore(

View File

@@ -15,6 +15,7 @@ import io.element.android.tests.testutils.lambda.lambdaError
import io.element.android.tests.testutils.simulateLongTask
import org.matrix.rustcomponents.sdk.Client
import org.matrix.rustcomponents.sdk.ClientDelegate
import org.matrix.rustcomponents.sdk.CreateRoomParameters
import org.matrix.rustcomponents.sdk.Encryption
import org.matrix.rustcomponents.sdk.HomeserverLoginDetails
import org.matrix.rustcomponents.sdk.IgnoredUsersListener
@@ -48,6 +49,7 @@ class FakeFfiClient(
private val getProfileResult: (String) -> UserProfile = { UserProfile(userId = userId, displayName = null, avatarUrl = null) },
private val homeserverLoginDetailsResult: () -> HomeserverLoginDetails = { lambdaError() },
private val getStoreSizesResult: () -> StoreSizes = { lambdaError() },
private val createRoomResult: (CreateRoomParameters) -> String = { lambdaError() },
private val closeResult: () -> Unit = {},
) : Client(NoHandle) {
override fun userId(): String = userId
@@ -97,5 +99,9 @@ class FakeFfiClient(
return getStoreSizesResult()
}
override suspend fun createRoom(request: CreateRoomParameters): String {
return createRoomResult(request)
}
override fun close() = closeResult()
}