implemented a way to filter out roles that can't be assigned to permission, and disable permissions that are above the current power level of the user.

This commit is contained in:
Mauro Romito
2025-12-18 18:43:19 +01:00
committed by Mauro
parent f2fc164e2b
commit 88cd816392
18 changed files with 197 additions and 90 deletions
@@ -69,7 +69,7 @@ extension RoomChangePermissionsScreenViewState {
/// - Parameters:
/// - currentPermissions: The current permissions for the room.
/// - isSpace: if the room is a space or a normal room.
init(currentPermissions: RoomPermissions, isSpace: Bool) {
init(ownPowerLevel: RoomPowerLevel, currentPermissions: RoomPermissions, isSpace: Bool) {
var settings = [RoomChangePermissionsScreenGroup: [RoomPermissionsSetting]]()
for group in RoomChangePermissionsScreenGroup.allCases {
switch group {
@@ -77,12 +77,15 @@ extension RoomChangePermissionsScreenViewState {
settings[group] = [
RoomPermissionsSetting(title: L10n.screenRoomChangePermissionsRoomName,
value: currentPermissions.roomName,
ownPowerLevel: ownPowerLevel,
keyPath: \.roomName),
RoomPermissionsSetting(title: L10n.screenRoomChangePermissionsRoomAvatar,
value: currentPermissions.roomAvatar,
ownPowerLevel: ownPowerLevel,
keyPath: \.roomAvatar),
RoomPermissionsSetting(title: L10n.screenRoomChangePermissionsRoomTopic,
value: currentPermissions.roomTopic,
ownPowerLevel: ownPowerLevel,
keyPath: \.roomTopic)
]
@@ -90,12 +93,15 @@ extension RoomChangePermissionsScreenViewState {
settings[group] = [
RoomPermissionsSetting(title: L10n.screenRoomChangePermissionsInvitePeople,
value: currentPermissions.invite,
ownPowerLevel: ownPowerLevel,
keyPath: \.invite),
RoomPermissionsSetting(title: L10n.screenRoomChangePermissionsRemovePeople,
value: currentPermissions.kick,
ownPowerLevel: ownPowerLevel,
keyPath: \.kick),
RoomPermissionsSetting(title: L10n.screenRoomChangePermissionsBanPeople,
value: currentPermissions.ban,
ownPowerLevel: ownPowerLevel,
keyPath: \.ban)
]
case .messagesAndContent:
@@ -103,9 +109,11 @@ extension RoomChangePermissionsScreenViewState {
settings[group] = [
RoomPermissionsSetting(title: L10n.screenRoomChangePermissionsSendMessages,
value: currentPermissions.eventsDefault,
ownPowerLevel: ownPowerLevel,
keyPath: \.eventsDefault),
RoomPermissionsSetting(title: L10n.screenRoomChangePermissionsDeleteMessages,
value: currentPermissions.redact,
ownPowerLevel: ownPowerLevel,
keyPath: \.redact)
]
}
@@ -114,6 +122,7 @@ extension RoomChangePermissionsScreenViewState {
settings[group] = [
RoomPermissionsSetting(title: L10n.screenRoomChangePermissionsManageSpaceRooms,
value: currentPermissions.spaceChild,
ownPowerLevel: ownPowerLevel,
keyPath: \.spaceChild)
]
}