mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-03 06:55:41 +00:00
fix: unban action requires both ban and kick permissions
This commit is contained in:
+21
-9
@@ -161,16 +161,28 @@ class RoomMemberModerationPresenter(
|
|||||||
val canModerateThisUser = currentUserPowerLevel > targetMemberPowerLevel
|
val canModerateThisUser = currentUserPowerLevel > targetMemberPowerLevel
|
||||||
// Assume the member is joined when it's unknown
|
// Assume the member is joined when it's unknown
|
||||||
val membership = member?.membership ?: RoomMembershipState.JOIN
|
val membership = member?.membership ?: RoomMembershipState.JOIN
|
||||||
if (permissions.canKick) {
|
when (membership) {
|
||||||
// Unban requires kick permission instead of a dedicated unban permission
|
RoomMembershipState.BAN -> {
|
||||||
if (membership == RoomMembershipState.BAN) {
|
// Unban requires both kick and ban permission instead of a dedicated unban permission
|
||||||
add(ModerationActionState(action = ModerationAction.UnbanUser, isEnabled = canModerateThisUser))
|
if (permissions.canBan && permissions.canKick) {
|
||||||
} else if (membership != RoomMembershipState.LEAVE) {
|
add(ModerationActionState(action = ModerationAction.UnbanUser, isEnabled = canModerateThisUser))
|
||||||
add(ModerationActionState(action = ModerationAction.KickUser, isEnabled = canModerateThisUser))
|
}
|
||||||
|
}
|
||||||
|
RoomMembershipState.INVITE,
|
||||||
|
RoomMembershipState.JOIN,
|
||||||
|
RoomMembershipState.KNOCK -> {
|
||||||
|
if (permissions.canKick) {
|
||||||
|
add(ModerationActionState(action = ModerationAction.KickUser, isEnabled = canModerateThisUser))
|
||||||
|
}
|
||||||
|
if (permissions.canBan) {
|
||||||
|
add(ModerationActionState(action = ModerationAction.BanUser, isEnabled = canModerateThisUser))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
RoomMembershipState.LEAVE -> {
|
||||||
|
if (permissions.canBan) {
|
||||||
|
add(ModerationActionState(action = ModerationAction.BanUser, isEnabled = canModerateThisUser))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (permissions.canBan && membership != RoomMembershipState.BAN) {
|
|
||||||
add(ModerationActionState(action = ModerationAction.BanUser, isEnabled = canModerateThisUser))
|
|
||||||
}
|
}
|
||||||
}.toImmutableList()
|
}.toImmutableList()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user