fix for unbanning requiring both kick and ban permissions

This commit is contained in:
Mauro Romito
2026-01-07 10:22:38 +01:00
committed by Mauro
parent 1d23ea98fd
commit 9269f3057b
@@ -39,17 +39,7 @@ struct ManageRoomMemberSheetView: View {
} }
Section { Section {
if context.viewState.permissions.canKick { if context.viewState.permissions.canKick, !context.viewState.isMemberBanned {
// Unbanning requires only the kick permission according to the specs.
if context.viewState.isMemberBanned {
ListRow(label: .default(title: L10n.screenBottomSheetManageRoomMemberUnban,
icon: \.restart,
role: .destructive),
kind: .button {
context.send(viewAction: .unban)
})
.disabled(context.viewState.isBanUnbanDisabled)
} else {
ListRow(label: .default(title: L10n.screenBottomSheetManageRoomMemberRemove, ListRow(label: .default(title: L10n.screenBottomSheetManageRoomMemberRemove,
icon: \.close, icon: \.close,
role: .destructive), role: .destructive),
@@ -58,10 +48,9 @@ struct ManageRoomMemberSheetView: View {
}) })
.disabled(context.viewState.isKickDisabled) .disabled(context.viewState.isKickDisabled)
} }
}
if context.viewState.permissions.canBan, if context.viewState.permissions.canBan {
!context.viewState.isMemberBanned { if !context.viewState.isMemberBanned {
ListRow(label: .default(title: L10n.screenBottomSheetManageRoomMemberBan, ListRow(label: .default(title: L10n.screenBottomSheetManageRoomMemberBan,
icon: \.block, icon: \.block,
role: .destructive), role: .destructive),
@@ -69,6 +58,16 @@ struct ManageRoomMemberSheetView: View {
context.send(viewAction: .ban) context.send(viewAction: .ban)
}) })
.disabled(context.viewState.isBanUnbanDisabled) .disabled(context.viewState.isBanUnbanDisabled)
// Kick permission is also needed to unban
} else if context.viewState.permissions.canKick {
ListRow(label: .default(title: L10n.screenBottomSheetManageRoomMemberUnban,
icon: \.restart,
role: .destructive),
kind: .button {
context.send(viewAction: .unban)
})
.disabled(context.viewState.isBanUnbanDisabled)
}
} }
} }
} }