Adapt to new DM definition changes in the SDK (#6748)

* Set `DmRoomDefinition.TwoPeople` in `ClientBuilder`. This applies the 'direct and with at most 2 non-service members' rule to what the SDK should consider a DM.

* Map `RoomInfo.isDm` from the SDK

* Map `NotificationData.isDm` from `NotificationInfo.roomInfo.isDm`

* Remove `RoomIsDmCheck` file as its extension functions are now redundant. Move `Room.isDm` helper function to `BaseRoom`.

* Map `isDm` in `SpaceRoom` from the SDK too

* Replace `isDirect` with `isDm` where possible

* Map `RoomMember.isServiceMember` from the SDK and use it to tell apart normal members of a room from service members (i.e. `RoomMembersState.getDirectRoomMember`)
This commit is contained in:
Jorge Martin Espinosa 2026-05-11 17:22:16 +02:00 committed by GitHub
parent 5e5e0bbc6e
commit 11476c73cf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
66 changed files with 115 additions and 232 deletions

View file

@ -30,13 +30,10 @@ class RoomMembersTest {
private val roomMember3 = aRoomMember(A_USER_ID_3)
@Test
fun `getDirectRoomMember emits other member for encrypted DM with 2 joined members`() = runTest {
fun `getDirectRoomMember emits other member for encrypted DM`() = runTest {
val joinedRoom = FakeBaseRoom(
sessionId = A_USER_ID,
initialRoomInfo = aRoomInfo(
isDirect = true,
joinedMembersCount = 2,
)
initialRoomInfo = aRoomInfo(isDm = true, isEncrypted = true)
)
moleculeFlow(RecompositionMode.Immediate) {
joinedRoom.getDirectRoomMember(
@ -51,7 +48,7 @@ class RoomMembersTest {
fun `getDirectRoomMember emit null if the room is not a dm`() = runTest {
val joinedRoom = FakeBaseRoom(
sessionId = A_USER_ID,
initialRoomInfo = aRoomInfo(isDirect = false)
initialRoomInfo = aRoomInfo(isDm = false)
)
moleculeFlow(RecompositionMode.Immediate) {
joinedRoom.getDirectRoomMember(
@ -66,10 +63,7 @@ class RoomMembersTest {
fun `getDirectRoomMember emits other member even if the room is not encrypted`() = runTest {
val joinedRoom = FakeBaseRoom(
sessionId = A_USER_ID,
initialRoomInfo = aRoomInfo(
isDirect = true,
activeMembersCount = 2,
)
initialRoomInfo = aRoomInfo(isDm = true)
)
moleculeFlow(RecompositionMode.Immediate) {
joinedRoom.getDirectRoomMember(
@ -80,42 +74,11 @@ class RoomMembersTest {
}
}
@Test
fun `getDirectRoomMember emit null if the room has only 1 member`() = runTest {
val joinedRoom = FakeBaseRoom(
sessionId = A_USER_ID,
initialRoomInfo = aRoomInfo(isDirect = true)
)
moleculeFlow(RecompositionMode.Immediate) {
joinedRoom.getDirectRoomMember(
RoomMembersState.Ready(persistentListOf(roomMember1))
)
}.test {
assertThat(awaitItem().value).isNull()
}
}
@Test
fun `getDirectRoomMember emit null if the room has only 3 members`() = runTest {
val joinedRoom = FakeBaseRoom(
sessionId = A_USER_ID,
).apply {
givenRoomInfo(aRoomInfo(isDirect = true, activeMembersCount = 3L))
}
moleculeFlow(RecompositionMode.Immediate) {
joinedRoom.getDirectRoomMember(
RoomMembersState.Ready(persistentListOf(roomMember1, roomMember2, roomMember3))
)
}.test {
assertThat(awaitItem().value).isNull()
}
}
@Test
fun `getDirectRoomMember emit null if the other member is not active`() = runTest {
val joinedRoom = FakeBaseRoom(
sessionId = A_USER_ID,
initialRoomInfo = aRoomInfo(isDirect = true),
initialRoomInfo = aRoomInfo(isDm = true),
)
moleculeFlow(RecompositionMode.Immediate) {
joinedRoom.getDirectRoomMember(
@ -135,10 +98,7 @@ class RoomMembersTest {
fun `getDirectRoomMember emit the other member if there are 2 active members`() = runTest {
val joinedRoom = FakeBaseRoom(
sessionId = A_USER_ID,
initialRoomInfo = aRoomInfo(
isDirect = true,
activeMembersCount = 2,
)
initialRoomInfo = aRoomInfo(isDm = true)
)
moleculeFlow(RecompositionMode.Immediate) {
joinedRoom.getDirectRoomMember(