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 7ee80774cf
commit be651de9d7

View File

@@ -39,9 +39,27 @@ struct ManageRoomMemberSheetView: View {
}
Section {
if context.viewState.permissions.canKick {
// Unbanning requires only the kick permission according to the specs.
if context.viewState.isMemberBanned {
if context.viewState.permissions.canKick, !context.viewState.isMemberBanned {
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 {
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,
icon: \.restart,
role: .destructive),
@@ -49,27 +67,8 @@ struct ManageRoomMemberSheetView: View {
context.send(viewAction: .unban)
})
.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()