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,9 +39,27 @@ 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. ListRow(label: .default(title: L10n.screenBottomSheetManageRoomMemberRemove,
if context.viewState.isMemberBanned { icon: \.close,
role: .destructive),
kind: .button {
context.send(viewAction: .kick)
})
.disabled(context.viewState.isKickDisabled)
}
if context.viewState.permissions.canBan {
if !context.viewState.isMemberBanned {
ListRow(label: .default(title: L10n.screenBottomSheetManageRoomMemberBan,
icon: \.block,
role: .destructive),
kind: .button {
context.send(viewAction: .ban)
})
.disabled(context.viewState.isBanUnbanDisabled)
// Kick permission is also needed to unban
} else if context.viewState.permissions.canKick {
ListRow(label: .default(title: L10n.screenBottomSheetManageRoomMemberUnban, ListRow(label: .default(title: L10n.screenBottomSheetManageRoomMemberUnban,
icon: \.restart, icon: \.restart,
role: .destructive), role: .destructive),
@@ -49,27 +67,8 @@ struct ManageRoomMemberSheetView: View {
context.send(viewAction: .unban) context.send(viewAction: .unban)
}) })
.disabled(context.viewState.isBanUnbanDisabled) .disabled(context.viewState.isBanUnbanDisabled)
} else {
ListRow(label: .default(title: L10n.screenBottomSheetManageRoomMemberRemove,
icon: \.close,
role: .destructive),
kind: .button {
context.send(viewAction: .kick)
})
.disabled(context.viewState.isKickDisabled)
} }
} }
if context.viewState.permissions.canBan,
!context.viewState.isMemberBanned {
ListRow(label: .default(title: L10n.screenBottomSheetManageRoomMemberBan,
icon: \.block,
role: .destructive),
kind: .button {
context.send(viewAction: .ban)
})
.disabled(context.viewState.isBanUnbanDisabled)
}
} }
} }
.compoundList() .compoundList()