mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 10:33:45 +00:00
Permissions screen redesign (#4735)
* Redesigned permissions screen # Conflicts: # ElementX.xcodeproj/project.pbxproj * updated tests * update proj * fix pseudo language tests
This commit is contained in:
+3
-3
@@ -17,7 +17,7 @@ struct RoomRolesAndPermissionsScreenCoordinatorParameters {
|
||||
|
||||
enum RoomRolesAndPermissionsScreenCoordinatorAction {
|
||||
case editRoles(RoomRolesAndPermissionsScreenRole)
|
||||
case editPermissions(permissions: RoomPermissions, group: RoomRolesAndPermissionsScreenPermissionsGroup)
|
||||
case editPermissions(permissions: RoomPermissions)
|
||||
case demotedOwnUser
|
||||
}
|
||||
|
||||
@@ -44,8 +44,8 @@ final class RoomRolesAndPermissionsScreenCoordinator: CoordinatorProtocol {
|
||||
switch action {
|
||||
case .editRoles(let role):
|
||||
actionsSubject.send(.editRoles(role))
|
||||
case .editPermissions(let permissions, let group):
|
||||
actionsSubject.send(.editPermissions(permissions: permissions, group: group))
|
||||
case .editPermissions(let permissions):
|
||||
actionsSubject.send(.editPermissions(permissions: permissions))
|
||||
case .demotedOwnUser:
|
||||
actionsSubject.send(.demotedOwnUser)
|
||||
}
|
||||
|
||||
+2
-8
@@ -12,7 +12,7 @@ enum RoomRolesAndPermissionsScreenViewModelAction {
|
||||
/// The user would like to edit member roles.
|
||||
case editRoles(RoomRolesAndPermissionsScreenRole)
|
||||
/// The user would like to edit room permissions.
|
||||
case editPermissions(permissions: RoomPermissions, group: RoomRolesAndPermissionsScreenPermissionsGroup)
|
||||
case editPermissions(permissions: RoomPermissions)
|
||||
/// The user has demoted themself.
|
||||
case demotedOwnUser
|
||||
}
|
||||
@@ -47,7 +47,7 @@ enum RoomRolesAndPermissionsScreenAlertType {
|
||||
enum RoomRolesAndPermissionsScreenViewAction {
|
||||
case editRoles(RoomRolesAndPermissionsScreenRole)
|
||||
case editOwnUserRole
|
||||
case editPermissions(RoomRolesAndPermissionsScreenPermissionsGroup)
|
||||
case editPermissions
|
||||
case reset
|
||||
}
|
||||
|
||||
@@ -55,9 +55,3 @@ enum RoomRolesAndPermissionsScreenRole: Hashable {
|
||||
case administrators
|
||||
case moderators
|
||||
}
|
||||
|
||||
enum RoomRolesAndPermissionsScreenPermissionsGroup {
|
||||
case roomDetails
|
||||
case messagesAndContent
|
||||
case memberModeration
|
||||
}
|
||||
|
||||
+4
-4
@@ -71,8 +71,8 @@ class RoomRolesAndPermissionsScreenViewModel: RoomRolesAndPermissionsScreenViewM
|
||||
Task { await self.updateOwnRole(.user) }
|
||||
}
|
||||
])
|
||||
case .editPermissions(let permissionsGroup):
|
||||
editPermissions(group: permissionsGroup)
|
||||
case .editPermissions:
|
||||
editPermissions()
|
||||
case .reset:
|
||||
state.bindings.alertInfo = AlertInfo(id: .resetConfirmation,
|
||||
title: L10n.screenRoomRolesAndPermissionsResetConfirmTitle,
|
||||
@@ -126,13 +126,13 @@ class RoomRolesAndPermissionsScreenViewModel: RoomRolesAndPermissionsScreenViewM
|
||||
}
|
||||
}
|
||||
|
||||
private func editPermissions(group: RoomRolesAndPermissionsScreenPermissionsGroup) {
|
||||
private func editPermissions() {
|
||||
guard let permissions = state.permissions else {
|
||||
state.bindings.alertInfo = AlertInfo(id: .error)
|
||||
MXLog.error("Missing permissions.")
|
||||
return
|
||||
}
|
||||
actionsSubject.send(.editPermissions(permissions: permissions, group: group))
|
||||
actionsSubject.send(.editPermissions(permissions: permissions))
|
||||
}
|
||||
|
||||
private func resetPermissions() async {
|
||||
|
||||
+7
-27
@@ -92,42 +92,22 @@ struct RoomRolesAndPermissionsScreen: View {
|
||||
|
||||
private var permissionsSection: some View {
|
||||
Section {
|
||||
ListRow(label: .default(title: L10n.screenRoomRolesAndPermissionsRoomDetails,
|
||||
icon: \.info),
|
||||
ListRow(label: .default(title: L10n.screenRoomRolesAndPermissionsPermissionsHeader,
|
||||
icon: \.settings),
|
||||
details: .isWaiting(context.viewState.permissions == nil),
|
||||
kind: .navigationLink {
|
||||
context.send(viewAction: .editPermissions(.roomDetails))
|
||||
context.send(viewAction: .editPermissions)
|
||||
})
|
||||
.accessibilityIdentifier(A11yIdentifiers.roomRolesAndPermissionsScreen.roomDetails)
|
||||
.accessibilityIdentifier(A11yIdentifiers.roomRolesAndPermissionsScreen.permissions)
|
||||
.disabled(context.viewState.permissions == nil)
|
||||
|
||||
ListRow(label: .default(title: L10n.screenRoomRolesAndPermissionsMessagesAndContent,
|
||||
icon: \.chat),
|
||||
details: .isWaiting(context.viewState.permissions == nil),
|
||||
kind: .navigationLink {
|
||||
context.send(viewAction: .editPermissions(.messagesAndContent))
|
||||
})
|
||||
.accessibilityIdentifier(A11yIdentifiers.roomRolesAndPermissionsScreen.messagesAndContent)
|
||||
.disabled(context.viewState.permissions == nil)
|
||||
|
||||
ListRow(label: .default(title: L10n.screenRoomRolesAndPermissionsMemberModeration,
|
||||
icon: \.user),
|
||||
details: .isWaiting(context.viewState.permissions == nil),
|
||||
kind: .navigationLink {
|
||||
context.send(viewAction: .editPermissions(.memberModeration))
|
||||
})
|
||||
.accessibilityIdentifier(A11yIdentifiers.roomRolesAndPermissionsScreen.memberModeration)
|
||||
.disabled(context.viewState.permissions == nil)
|
||||
} header: {
|
||||
Text(L10n.screenRoomRolesAndPermissionsPermissionsHeader)
|
||||
.compoundListSectionHeader()
|
||||
}
|
||||
}
|
||||
|
||||
private var resetSection: some View {
|
||||
Section {
|
||||
ListRow(label: .plain(title: L10n.screenRoomRolesAndPermissionsReset,
|
||||
role: .destructive),
|
||||
ListRow(label: .default(title: L10n.screenRoomRolesAndPermissionsReset,
|
||||
icon: \.delete,
|
||||
role: .destructive),
|
||||
kind: .button {
|
||||
context.send(viewAction: .reset)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user