misc(power level) : introduce RoomPermissions
This commit is contained in:
parent
33441d9d40
commit
ce2bb0a4aa
6 changed files with 316 additions and 0 deletions
|
|
@ -21,12 +21,14 @@ import io.element.android.libraries.matrix.api.room.RoomMember
|
|||
import io.element.android.libraries.matrix.api.room.RoomMembersState
|
||||
import io.element.android.libraries.matrix.api.room.StateEventType
|
||||
import io.element.android.libraries.matrix.api.room.draft.ComposerDraft
|
||||
import io.element.android.libraries.matrix.api.room.powerlevels.RoomPermissions
|
||||
import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues
|
||||
import io.element.android.libraries.matrix.api.room.tombstone.PredecessorRoom
|
||||
import io.element.android.libraries.matrix.api.roomdirectory.RoomVisibility
|
||||
import io.element.android.libraries.matrix.api.timeline.ReceiptType
|
||||
import io.element.android.libraries.matrix.test.A_ROOM_ID
|
||||
import io.element.android.libraries.matrix.test.A_SESSION_ID
|
||||
import io.element.android.libraries.matrix.test.room.powerlevels.FakeRoomPermissions
|
||||
import io.element.android.tests.testutils.lambda.lambdaError
|
||||
import io.element.android.tests.testutils.simulateLongTask
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
|
|
@ -48,6 +50,7 @@ class FakeBaseRoom(
|
|||
private val userRoleResult: () -> Result<RoomMember.Role> = { lambdaError() },
|
||||
private val getUpdatedMemberResult: (UserId) -> Result<RoomMember> = { lambdaError() },
|
||||
private val joinRoomResult: () -> Result<Unit> = { lambdaError() },
|
||||
private val roomPermissionsResult: () -> Result<RoomPermissions> = { Result.success(FakeRoomPermissions()) },
|
||||
private val canInviteResult: (UserId) -> Result<Boolean> = { lambdaError() },
|
||||
private val canKickResult: (UserId) -> Result<Boolean> = { lambdaError() },
|
||||
private val canBanResult: (UserId) -> Result<Boolean> = { lambdaError() },
|
||||
|
|
@ -129,6 +132,10 @@ class FakeBaseRoom(
|
|||
return userRoleResult()
|
||||
}
|
||||
|
||||
override suspend fun roomPermissions(): Result<RoomPermissions> {
|
||||
return roomPermissionsResult()
|
||||
}
|
||||
|
||||
override suspend fun getPermalink(): Result<String> {
|
||||
return roomPermalinkResult()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* Copyright (c) 2025 Element Creations Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
|
||||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.libraries.matrix.test.room.powerlevels
|
||||
|
||||
import io.element.android.libraries.matrix.api.core.UserId
|
||||
import io.element.android.libraries.matrix.api.room.MessageEventType
|
||||
import io.element.android.libraries.matrix.api.room.StateEventType
|
||||
import io.element.android.libraries.matrix.api.room.powerlevels.RoomPermissions
|
||||
|
||||
data class FakeRoomPermissions(
|
||||
val ownerCanBan: Boolean = false,
|
||||
val ownerCanInvite: Boolean = false,
|
||||
val ownerCanKick: Boolean = false,
|
||||
val ownerCanPinUnpin: Boolean = false,
|
||||
val ownerCanRedactOther: Boolean = false,
|
||||
val ownerCanRedactOwn: Boolean = false,
|
||||
val ownerCanTriggerRoomNotification: Boolean = false,
|
||||
val ownerCanSendMessage: (MessageEventType) -> Boolean = { false },
|
||||
val ownerCanSendState: (StateEventType) -> Boolean = { false },
|
||||
val userCanBan: (UserId) -> Boolean = { false },
|
||||
val userCanInvite: (UserId) -> Boolean = { false },
|
||||
val userCanKick: (UserId) -> Boolean = { false },
|
||||
val userCanPinUnpin: (UserId) -> Boolean = { false },
|
||||
val userCanRedactOther: (UserId) -> Boolean = { false },
|
||||
val userCanRedactOwn: (UserId) -> Boolean = { false },
|
||||
val userCanTriggerRoomNotification: (UserId) -> Boolean = { false },
|
||||
val userCanSendMessage: (UserId, MessageEventType) -> Boolean = { _, _ -> false },
|
||||
val userCanSendState: (UserId, StateEventType) -> Boolean = { _, _ -> false },
|
||||
) : RoomPermissions {
|
||||
|
||||
override fun canOwnUserBan(): Boolean = ownerCanBan
|
||||
override fun canOwnUserInvite(): Boolean = ownerCanInvite
|
||||
override fun canOwnUserKick(): Boolean = ownerCanKick
|
||||
override fun canOwnUserPinUnpin(): Boolean = ownerCanPinUnpin
|
||||
override fun canOwnUserRedactOther(): Boolean = ownerCanRedactOther
|
||||
override fun canOwnUserRedactOwn(): Boolean = ownerCanRedactOwn
|
||||
override fun canOwnUserSendMessage(message: MessageEventType): Boolean = ownerCanSendMessage(message)
|
||||
override fun canOwnUserSendState(stateEvent: StateEventType): Boolean = ownerCanSendState(stateEvent)
|
||||
override fun canOwnUserTriggerRoomNotification(): Boolean = ownerCanTriggerRoomNotification
|
||||
override fun canUserBan(userId: UserId): Boolean = userCanBan(userId)
|
||||
override fun canUserInvite(userId: UserId): Boolean = userCanInvite(userId)
|
||||
override fun canUserKick(userId: UserId): Boolean = userCanKick(userId)
|
||||
override fun canUserPinUnpin(userId: UserId): Boolean = userCanPinUnpin(userId)
|
||||
override fun canUserRedactOther(userId: UserId): Boolean = userCanRedactOther(userId)
|
||||
override fun canUserRedactOwn(userId: UserId): Boolean = userCanRedactOwn(userId)
|
||||
override fun canUserSendMessage(userId: UserId, message: MessageEventType): Boolean = userCanSendMessage(userId, message)
|
||||
override fun canUserSendState(userId: UserId, stateEvent: StateEventType): Boolean = userCanSendState(userId, stateEvent)
|
||||
override fun canUserTriggerRoomNotification(userId: UserId): Boolean = userCanTriggerRoomNotification(userId)
|
||||
|
||||
override fun close() {
|
||||
// no-op for the fake
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue