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 @@
@@ -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 @@
@@ -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 @@
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1 |
||||
oid sha256:fd2b534a026cb2c96c90f20eb0154b20672d4eae294c558804898cd927e93585 |
||||
size 106258 |
Loading…
Reference in new issue