Browse Source
* Add centralised 'room is DM' check Also add extension functions for `MatrixRoom` and `MatrixRoomInfo`. * Use the centralised method and extension functions through the app, including: - Room list. - Room details screen. - Invites. - Notifications. Replace most `isDirect` usages with `isDm`. * Update screenshots --------- Co-authored-by: ElementBot <benoitm+elementbot@element.io>pull/3178/head
Jorge Martin Espinosa
2 months ago
committed by
GitHub
47 changed files with 195 additions and 73 deletions
@ -0,0 +1,38 @@ |
|||||||
|
/* |
||||||
|
* Copyright (c) 2024 New Vector Ltd |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
* you may not use this file except in compliance with the License. |
||||||
|
* You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package io.element.android.libraries.matrix.api.room |
||||||
|
|
||||||
|
/** |
||||||
|
* Returns whether the room with the provided info is a DM. |
||||||
|
* A DM is a room with at most 2 active members (one of them may have left). |
||||||
|
* |
||||||
|
* @param isDirect true if the room is direct |
||||||
|
* @param activeMembersCount the number of active members in the room (joined or invited) |
||||||
|
*/ |
||||||
|
fun isDm(isDirect: Boolean, activeMembersCount: Int): Boolean { |
||||||
|
return isDirect && activeMembersCount <= 2 |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Returns whether the [MatrixRoom] is a DM. |
||||||
|
*/ |
||||||
|
val MatrixRoom.isDm get() = isDm(isDirect, activeMemberCount.toInt()) |
||||||
|
|
||||||
|
/** |
||||||
|
* Returns whether the [MatrixRoomInfo] is from a DM. |
||||||
|
*/ |
||||||
|
val MatrixRoomInfo.isDm get() = isDm(isDirect, activeMembersCount.toInt()) |
@ -0,0 +1,62 @@ |
|||||||
|
/* |
||||||
|
* Copyright (c) 2024 New Vector Ltd |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
* you may not use this file except in compliance with the License. |
||||||
|
* You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package io.element.android.libraries.matrix.api.room |
||||||
|
|
||||||
|
import com.google.common.truth.Truth.assertThat |
||||||
|
import org.junit.Test |
||||||
|
|
||||||
|
class RoomIsDmCheckTest { |
||||||
|
@Test |
||||||
|
fun `a room is a DM only if it has at most 2 members and is direct`() { |
||||||
|
val isDirect = true |
||||||
|
val activeMembersCount = 2 |
||||||
|
|
||||||
|
val isDm = isDm(isDirect, activeMembersCount) |
||||||
|
|
||||||
|
assertThat(isDm).isTrue() |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
fun `a room can be a DM if it has also a single active user`() { |
||||||
|
val isDirect = true |
||||||
|
val activeMembersCount = 1 |
||||||
|
|
||||||
|
val isDm = isDm(isDirect, activeMembersCount) |
||||||
|
|
||||||
|
assertThat(isDm).isTrue() |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
fun `a room is not a DM if it's not direct`() { |
||||||
|
val isDirect = false |
||||||
|
val activeMembersCount = 2 |
||||||
|
|
||||||
|
val isDm = isDm(isDirect, activeMembersCount) |
||||||
|
|
||||||
|
assertThat(isDm).isFalse() |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
fun `a room is not a DM if it has more than 2 active users`() { |
||||||
|
val isDirect = true |
||||||
|
val activeMembersCount = 3 |
||||||
|
|
||||||
|
val isDm = isDm(isDirect, activeMembersCount) |
||||||
|
|
||||||
|
assertThat(isDm).isFalse() |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,3 @@ |
|||||||
|
version https://git-lfs.github.com/spec/v1 |
||||||
|
oid sha256:fd2b534a026cb2c96c90f20eb0154b20672d4eae294c558804898cd927e93585 |
||||||
|
size 106258 |
Loading…
Reference in new issue