From ad0b1e33f919635d80cb3a1be45c05d2b496a98e Mon Sep 17 00:00:00 2001 From: ganfra Date: Tue, 30 Dec 2025 15:59:04 +0100 Subject: [PATCH] quality : move canUnban logic to the permission class --- .../api/RoomMemberModerationPermissions.kt | 3 +++ .../roommembermoderation/impl/RoomMemberModerationPresenter.kt | 3 +-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/features/roommembermoderation/api/src/main/kotlin/io/element/android/features/roommembermoderation/api/RoomMemberModerationPermissions.kt b/features/roommembermoderation/api/src/main/kotlin/io/element/android/features/roommembermoderation/api/RoomMemberModerationPermissions.kt index 223456de69..87414b836e 100644 --- a/features/roommembermoderation/api/src/main/kotlin/io/element/android/features/roommembermoderation/api/RoomMemberModerationPermissions.kt +++ b/features/roommembermoderation/api/src/main/kotlin/io/element/android/features/roommembermoderation/api/RoomMemberModerationPermissions.kt @@ -13,6 +13,9 @@ data class RoomMemberModerationPermissions( val canKick: Boolean, val canBan: Boolean, ) { + // Unban requires both kick and ban permission instead of a dedicated unban permission + val canUnban = canBan && canKick + companion object { val DEFAULT = RoomMemberModerationPermissions( canKick = false, diff --git a/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationPresenter.kt b/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationPresenter.kt index 3a5c364b31..2a876fc484 100644 --- a/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationPresenter.kt +++ b/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationPresenter.kt @@ -163,8 +163,7 @@ class RoomMemberModerationPresenter( val membership = member?.membership ?: RoomMembershipState.JOIN when (membership) { RoomMembershipState.BAN -> { - // Unban requires both kick and ban permission instead of a dedicated unban permission - if (permissions.canBan && permissions.canKick) { + if (permissions.canUnban) { add(ModerationActionState(action = ModerationAction.UnbanUser, isEnabled = canModerateThisUser)) } }