mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 10:33:45 +00:00
Restore permissions to creator and display them as owners in the list (#4369)
* restore permissions to creator and display them as owners in the list * improved the code to use actually 5 roles in the app to distinguish a real creator from an owner
This commit is contained in:
@@ -35,7 +35,8 @@ struct RoomChangeRolesScreenViewState: BindableState {
|
||||
/// The screen's title.
|
||||
var title: String {
|
||||
switch mode {
|
||||
case .administrator:
|
||||
case .creator, .owner, .administrator:
|
||||
// TODO: Handle the creator permissions change
|
||||
L10n.screenRoomChangeRoleAdministratorsTitle
|
||||
case .moderator:
|
||||
L10n.screenRoomChangeRoleModeratorsTitle
|
||||
|
||||
@@ -64,7 +64,7 @@ class RoomChangeRolesScreenViewModel: RoomChangeRolesScreenViewModelType, RoomCh
|
||||
case .demoteMember(let member):
|
||||
demoteMember(member)
|
||||
case .save:
|
||||
if state.mode == .administrator, !state.membersToPromote.isEmpty {
|
||||
if state.mode.isAdminOrHigher, !state.membersToPromote.isEmpty {
|
||||
showPromotionWarning()
|
||||
} else {
|
||||
Task { await save() }
|
||||
|
||||
+2
-2
@@ -24,7 +24,7 @@ struct RoomChangeRolesScreenSection: View {
|
||||
isSelected: isMemberSelected(member)) {
|
||||
context.send(viewAction: .toggleMember(member))
|
||||
}
|
||||
.disabled(member.role == .administrator)
|
||||
.disabled(member.role.isAdminOrHigher)
|
||||
}
|
||||
} header: {
|
||||
Text(title)
|
||||
@@ -40,6 +40,6 @@ struct RoomChangeRolesScreenSection: View {
|
||||
|
||||
private func isMemberSelected(_ member: RoomMemberDetails) -> Bool {
|
||||
// We always show administrators as selected, even on the moderators screen.
|
||||
member.role == .administrator || context.viewState.isMemberSelected(member)
|
||||
member.role.isAdminOrHigher || context.viewState.isMemberSelected(member)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user