Add call icon next to members in call (#5941)

* feat: add call icon next to members in call

* feat: use matrix rtc room status for in-call

* chore: revert xcodeproj change

* chore: update preview tests

* chore: Update ElementX.xcscheme

* chore: undo room member status proxy

---------

Co-authored-by: Kai <nankeen@users.noreply.github.com>
This commit is contained in:
Kai
2026-08-03 12:37:31 +01:00
committed by Doug
parent 1407a1d5b4
commit 3ab0aacabf
14 changed files with 90 additions and 8 deletions
@@ -54,6 +54,30 @@ struct RoomMembersListScreenViewModelTests {
#expect(viewModel.state.visibleJoinedMembers == sortedMembers)
}
@Test
mutating func sortingCallParticipants() async throws {
setup(members: [.mockAdmin, .mockFrank, .mockAlice],
activeRoomCallParticipants: [RoomMemberProxyMock.mockFrank.userID])
let deferred = deferFulfillment(context.$viewState) { state in
state.visibleJoinedMembers.count == 3
}
try await deferred.fulfill()
// Frank is in the call, so he should be sorted to the top despite having the lowest power level.
let sortedMembers: [RoomMemberListScreenEntry] = [
.init(member: .init(withProxy: RoomMemberProxyMock.mockFrank),
verificationState: .notVerified,
isInCall: true),
.init(member: .init(withProxy: RoomMemberProxyMock.mockAdmin),
verificationState: .notVerified),
.init(member: .init(withProxy: RoomMemberProxyMock.mockAlice),
verificationState: .notVerified)
]
#expect(viewModel.state.visibleJoinedMembers == sortedMembers)
}
@Test
mutating func search() async throws {
setup(members: [.mockAlice, .mockBob])
@@ -293,8 +317,8 @@ struct RoomMembersListScreenViewModelTests {
// MARK: - Helpers
private mutating func setup(members: [RoomMemberProxyMock]) {
roomProxy = JoinedRoomProxyMock(.init(name: "test", members: members))
private mutating func setup(members: [RoomMemberProxyMock], activeRoomCallParticipants: [String] = []) {
roomProxy = JoinedRoomProxyMock(.init(name: "test", activeRoomCallParticipants: activeRoomCallParticipants, members: members))
viewModel = RoomMembersListScreenViewModel(userSession: UserSessionMock(.init()),
roomProxy: roomProxy,
userIndicatorController: UserIndicatorControllerMock(),