mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-05 11:58:32 +00:00
Update appearance of admins when changing moderators. (#2654)
This commit is contained in:
@@ -529,6 +529,7 @@
|
||||
"screen_room_change_role_confirm_demote_self_description" = "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.";
|
||||
"screen_room_change_role_confirm_demote_self_title" = "Demote yourself?";
|
||||
"screen_room_change_role_invited_member_name" = "%1$@ (Pending)";
|
||||
"screen_room_change_role_moderators_admin_section_footer" = "Admins automatically have moderator privileges";
|
||||
"screen_room_change_role_moderators_title" = "Edit Moderators";
|
||||
"screen_room_change_role_unsaved_changes_description" = "You have unsaved changes.";
|
||||
"screen_room_change_role_unsaved_changes_title" = "Save changes?";
|
||||
|
||||
@@ -1287,6 +1287,8 @@ internal enum L10n {
|
||||
internal static func screenRoomChangeRoleInvitedMemberName(_ p1: Any) -> String {
|
||||
return L10n.tr("Localizable", "screen_room_change_role_invited_member_name", String(describing: p1))
|
||||
}
|
||||
/// Admins automatically have moderator privileges
|
||||
internal static var screenRoomChangeRoleModeratorsAdminSectionFooter: String { return L10n.tr("Localizable", "screen_room_change_role_moderators_admin_section_footer") }
|
||||
/// Edit Moderators
|
||||
internal static var screenRoomChangeRoleModeratorsTitle: String { return L10n.tr("Localizable", "screen_room_change_role_moderators_title") }
|
||||
/// Admins
|
||||
|
||||
@@ -58,6 +58,7 @@ struct RoomChangeRolesScreen: View {
|
||||
|
||||
RoomChangeRolesScreenSection(members: context.viewState.administrators,
|
||||
title: L10n.screenRoomChangeRoleSectionAdministrators,
|
||||
isAdministratorsSection: true,
|
||||
context: context)
|
||||
RoomChangeRolesScreenSection(members: context.viewState.moderators,
|
||||
title: L10n.screenRoomChangeRoleSectionModerators,
|
||||
|
||||
+12
-1
@@ -20,6 +20,7 @@ import SwiftUI
|
||||
struct RoomChangeRolesScreenSection: View {
|
||||
let members: [RoomMemberDetails]
|
||||
let title: String
|
||||
var isAdministratorsSection = false
|
||||
|
||||
@ObservedObject var context: RoomChangeRolesScreenViewModel.Context
|
||||
|
||||
@@ -29,7 +30,7 @@ struct RoomChangeRolesScreenSection: View {
|
||||
ForEach(members, id: \.id) { member in
|
||||
RoomChangeRolesScreenRow(member: member,
|
||||
imageProvider: context.imageProvider,
|
||||
isSelected: context.viewState.isMemberSelected(member)) {
|
||||
isSelected: isMemberSelected(member)) {
|
||||
context.send(viewAction: .toggleMember(member))
|
||||
}
|
||||
.disabled(member.role == .administrator)
|
||||
@@ -37,7 +38,17 @@ struct RoomChangeRolesScreenSection: View {
|
||||
} header: {
|
||||
Text(title)
|
||||
.compoundListSectionHeader()
|
||||
} footer: {
|
||||
if isAdministratorsSection, context.viewState.mode == .moderator {
|
||||
Text(L10n.screenRoomChangeRoleModeratorsAdminSectionFooter)
|
||||
.compoundListSectionFooter()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private func isMemberSelected(_ member: RoomMemberDetails) -> Bool {
|
||||
// We always show administrators as selected, even on the moderators screen.
|
||||
member.role == .administrator || context.viewState.isMemberSelected(member)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user