mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
Sort members in the member list by power level and show mods and admins. (#2448)
This commit is contained in:
@@ -77,7 +77,9 @@ struct RoomMembersListScreen_Previews: PreviewProvider, TestablePreview {
|
||||
let members: [RoomMemberProxyMock] = [
|
||||
.mockAlice,
|
||||
.mockBob,
|
||||
.mockCharlie
|
||||
.mockCharlie,
|
||||
.mockAdmin,
|
||||
.mockModerator
|
||||
]
|
||||
return RoomMembersListScreenViewModel(roomProxy: RoomProxyMock(with: .init(displayName: "Some room", members: members)),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
|
||||
+32
-10
@@ -31,28 +31,50 @@ struct RoomMembersListScreenMemberCell: View {
|
||||
avatarSize: .user(on: .roomDetails),
|
||||
imageProvider: context.imageProvider)
|
||||
.accessibilityHidden(true)
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
Text(member.name ?? "")
|
||||
.font(.compound.bodyMDSemibold)
|
||||
.foregroundColor(.compound.textPrimary)
|
||||
.lineLimit(1)
|
||||
Text(member.id)
|
||||
.font(.compound.bodySM)
|
||||
.foregroundColor(.compound.textSecondary)
|
||||
.lineLimit(1)
|
||||
|
||||
HStack(alignment: .firstTextBaseline, spacing: 4) {
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
Text(member.name ?? "")
|
||||
.font(.compound.bodyMDSemibold)
|
||||
.foregroundColor(.compound.textPrimary)
|
||||
.lineLimit(1)
|
||||
Text(member.id)
|
||||
.font(.compound.bodySM)
|
||||
.foregroundColor(.compound.textSecondary)
|
||||
.lineLimit(1)
|
||||
}
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
if let role {
|
||||
Text(role)
|
||||
.font(.compound.bodyXS)
|
||||
.foregroundStyle(.compound.textSecondary)
|
||||
}
|
||||
}
|
||||
}
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.accessibilityElement(children: .combine)
|
||||
}
|
||||
}
|
||||
|
||||
var role: String? {
|
||||
switch member.role {
|
||||
case .administrator:
|
||||
L10n.screenRoomMemberListRoleAdministrator
|
||||
case .moderator:
|
||||
L10n.screenRoomMemberListRoleModerator
|
||||
case .user:
|
||||
nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct RoomMembersListMemberCell_Previews: PreviewProvider, TestablePreview {
|
||||
static let members: [RoomMemberProxyMock] = [
|
||||
.mockAlice,
|
||||
.mockBob,
|
||||
.mockCharlie
|
||||
.mockCharlie,
|
||||
.mockModerator
|
||||
]
|
||||
static let viewModel = RoomMembersListScreenViewModel(roomProxy: RoomProxyMock(with: .init(displayName: "Some room", members: members)),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
|
||||
Reference in New Issue
Block a user