change(room permissions): fix securityAndPrivacy permissions computation

This commit is contained in:
ganfra 2025-12-11 11:54:12 +01:00
parent 3e67a43799
commit 4749bc3cf0
5 changed files with 62 additions and 27 deletions

View file

@ -9,6 +9,7 @@
package io.element.android.features.securityandprivacy.api
import io.element.android.libraries.matrix.api.room.StateEventType
import io.element.android.libraries.matrix.api.room.join.JoinRule
import io.element.android.libraries.matrix.api.room.powerlevels.RoomPermissions
data class SecurityAndPrivacyPermissions(
@ -17,10 +18,19 @@ data class SecurityAndPrivacyPermissions(
val canChangeEncryption: Boolean,
val canChangeRoomVisibility: Boolean,
) {
val hasAny = canChangeRoomAccess ||
canChangeHistoryVisibility ||
canChangeEncryption ||
canChangeRoomVisibility
fun hasAny(isSpace: Boolean, joinRule: JoinRule?): Boolean {
val canChangeRoomVisibility = when (joinRule) {
is JoinRule.Public,
is JoinRule.Knock,
is JoinRule.KnockRestricted -> canChangeRoomVisibility
else -> false
}
return if (isSpace) {
canChangeRoomAccess || canChangeRoomVisibility
} else {
canChangeRoomAccess || canChangeRoomVisibility || canChangeHistoryVisibility || canChangeEncryption
}
}
companion object {
val DEFAULT = SecurityAndPrivacyPermissions(