Invited members in room's members list (#880)

* Add invited people in RoomMembersListScreen

* Optimize main thread perfomance in RoomDetailsScreenViewModel

* Fix member count in RoomDetailsScreenViewModel

* Add warning

* Add performance warnings

* Build members in RoomMembersListScreenViewModel in global queue

* Refactor RoomDetailsScreenViewModel build members process

* Localize strings

* Cleanup

* Fix RoomDetailsScreenViewModelTests UTs

* Fix UI tests

* Add RoomMembersListScreenViewModel UTs

* Add UI tests

* Amend UI tests

* Use clearAndTypeText
This commit is contained in:
Alfonso Grillo
2023-05-12 15:12:59 +02:00
committed by GitHub
parent edc9fe4612
commit 1981270840
28 changed files with 293 additions and 62 deletions
@@ -25,18 +25,8 @@ struct RoomMembersListScreen: View {
var body: some View {
ScrollView {
LazyVStack(alignment: .leading) {
Section {
ForEach(context.viewState.visibleMembers) { member in
RoomMembersListScreenMemberCell(member: member, context: context)
.id(member.id)
}
} header: {
Text(L10n.commonMemberCount(context.viewState.members.count))
.foregroundColor(.element.secondaryContent)
.font(.compound.bodyLG)
.padding(.vertical, 12)
}
.padding(.horizontal)
membersSection(data: context.viewState.visibleInvitedMembers, sectionTitle: L10n.screenRoomMemberListPendingHeaderTitle)
membersSection(data: context.viewState.visibleJoinedMembers, sectionTitle: L10n.screenRoomMemberListHeaderTitle(context.viewState.joinedMembersCount))
}
}
.searchable(text: $context.searchQuery, placement: .navigationBarDrawer(displayMode: .always))
@@ -45,6 +35,24 @@ struct RoomMembersListScreen: View {
.navigationTitle(L10n.commonPeople)
.alert(item: $context.alertInfo) { $0.alert }
}
// MARK: - Private
private func membersSection(data: [RoomMemberDetails], sectionTitle: String) -> some View {
Section {
ForEach(data, id: \.id) { member in
RoomMembersListScreenMemberCell(member: member, context: context)
}
} header: {
if !data.isEmpty {
Text(sectionTitle)
.foregroundColor(.element.secondaryContent)
.font(.compound.bodyLG)
.padding(.vertical, 12)
}
}
.padding(.horizontal)
}
}
// MARK: - Previews