mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 06:55:59 +00:00
unbanning is now dependant on the kick permission, and removed the change settings permission option in spaces.
This commit is contained in:
+24
-16
@@ -40,25 +40,33 @@ struct ManageRoomMemberSheetView: View {
|
||||
|
||||
Section {
|
||||
if context.viewState.permissions.canKick {
|
||||
ListRow(label: .default(title: L10n.screenBottomSheetManageRoomMemberRemove,
|
||||
icon: \.close,
|
||||
role: .destructive),
|
||||
kind: .button {
|
||||
context.send(viewAction: .kick)
|
||||
})
|
||||
.disabled(context.viewState.isKickDisabled)
|
||||
// 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,
|
||||
icon: \.close,
|
||||
role: .destructive),
|
||||
kind: .button {
|
||||
context.send(viewAction: .kick)
|
||||
})
|
||||
.disabled(context.viewState.isKickDisabled)
|
||||
}
|
||||
}
|
||||
|
||||
if context.viewState.permissions.canBan {
|
||||
let title = context.viewState.isMemberBanned ? L10n.screenBottomSheetManageRoomMemberUnban : L10n.screenBottomSheetManageRoomMemberBan
|
||||
let icon: KeyPath<CompoundIcons, Image> = context.viewState.isMemberBanned ? \.restart : \.block
|
||||
let action: ManageRoomMemberSheetViewAction = context.viewState.isMemberBanned ? .unban : .ban
|
||||
|
||||
ListRow(label: .default(title: title,
|
||||
icon: icon,
|
||||
if context.viewState.permissions.canBan,
|
||||
!context.viewState.isMemberBanned {
|
||||
ListRow(label: .default(title: L10n.screenBottomSheetManageRoomMemberBan,
|
||||
icon: \.block,
|
||||
role: .destructive),
|
||||
kind: .button {
|
||||
context.send(viewAction: action)
|
||||
context.send(viewAction: .ban)
|
||||
})
|
||||
.disabled(context.viewState.isBanUnbanDisabled)
|
||||
}
|
||||
@@ -81,7 +89,7 @@ struct ManageRoomMemberSheetView_Previews: PreviewProvider, TestablePreview {
|
||||
|
||||
static let banOnlyViewModel = ManageRoomMemberSheetViewModel.mock(canKick: false)
|
||||
|
||||
static let unbanOnlyViewModel = ManageRoomMemberSheetViewModel.mock(canKick: false, memberIsBanned: true)
|
||||
static let unbanOnlyViewModel = ManageRoomMemberSheetViewModel.mock(canKick: true, memberIsBanned: true)
|
||||
|
||||
static var previews: some View {
|
||||
ManageRoomMemberSheetView(context: allActionsViewModel.context)
|
||||
|
||||
+1
-4
@@ -114,10 +114,7 @@ extension RoomChangePermissionsScreenViewState {
|
||||
settings[group] = [
|
||||
RoomPermissionsSetting(title: L10n.screenRoomChangePermissionsManageSpaceRooms,
|
||||
value: currentPermissions.spaceChild,
|
||||
keyPath: \.spaceChild),
|
||||
RoomPermissionsSetting(title: L10n.screenRoomChangePermissionsChangeSettings,
|
||||
value: currentPermissions.stateDefault,
|
||||
keyPath: \.stateDefault)
|
||||
keyPath: \.spaceChild)
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -192,21 +192,6 @@ class RoomMembersListScreenViewModel: RoomMembersListScreenViewModelType, RoomMe
|
||||
actionsSubject.send(.selectMember(member))
|
||||
}
|
||||
|
||||
// MARK: - Member Management
|
||||
|
||||
private func unbanMember(_ member: RoomMemberDetails) async {
|
||||
let indicatorTitle = L10n.screenRoomMemberListUnbanningUser(member.name ?? member.id)
|
||||
showManageMemberIndicator(title: indicatorTitle)
|
||||
|
||||
switch await roomProxy.unbanUser(member.id) {
|
||||
case .success:
|
||||
hideManageMemberIndicator(title: indicatorTitle)
|
||||
analytics.trackRoomModeration(action: .UnbanMember, role: nil)
|
||||
case .failure:
|
||||
showManageMemberFailure(title: indicatorTitle)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Indicators
|
||||
|
||||
private static let setupMembersLoadingIndicatorIdentifier = "\(RoomMembersListScreenViewModel.self)-SetupMembers"
|
||||
|
||||
Reference in New Issue
Block a user