Update appearance of admins when changing moderators. (#2654)

This commit is contained in:
Doug
2024-04-05 12:19:46 +01:00
committed by GitHub
parent 023b7fc608
commit 181753e43d
27 changed files with 59 additions and 44 deletions
@@ -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?";
+2
View File
@@ -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,
@@ -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)
}
}