mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
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:
@@ -171,6 +171,7 @@ struct RoomMembersListScreen_Previews: PreviewProvider, TestablePreview {
|
||||
static let adminViewModel = makeViewModel(isAdmin: true, initialMode: .members)
|
||||
static let bannedViewModel = makeViewModel(isAdmin: true, initialMode: .banned)
|
||||
static let emptyBannedViewModel = makeViewModel(withBanned: false, isAdmin: false, initialMode: .members)
|
||||
static let adminInCallViewModel = makeViewModel(withInCall: true, isAdmin: true)
|
||||
|
||||
static var previews: some View {
|
||||
ElementNavigationStack {
|
||||
@@ -205,6 +206,14 @@ struct RoomMembersListScreen_Previews: PreviewProvider, TestablePreview {
|
||||
})
|
||||
.previewDisplayName("Admin: Banned")
|
||||
|
||||
ElementNavigationStack {
|
||||
RoomMembersListScreen(context: adminInCallViewModel.context)
|
||||
}
|
||||
.snapshotPreferences(expect: adminInCallViewModel.context.$viewState.map { state in
|
||||
state.canBanUsers == true
|
||||
})
|
||||
.previewDisplayName("Admin: In-Call")
|
||||
|
||||
ElementNavigationStack {
|
||||
RoomMembersListScreen(context: emptyBannedViewModel.context)
|
||||
.onAppear { emptyBannedViewModel.context.searchQuery = "Dan" }
|
||||
@@ -215,6 +224,7 @@ struct RoomMembersListScreen_Previews: PreviewProvider, TestablePreview {
|
||||
|
||||
static func makeViewModel(withInvites: Bool = false,
|
||||
withBanned: Bool = true,
|
||||
withInCall: Bool = false,
|
||||
isAdmin: Bool = false,
|
||||
initialMode: RoomMembersListScreenMode = .members) -> RoomMembersListScreenViewModel {
|
||||
let mockAdmin = RoomMemberProxyMock.mockAdmin
|
||||
@@ -228,7 +238,8 @@ struct RoomMembersListScreen_Previews: PreviewProvider, TestablePreview {
|
||||
mockAdmin,
|
||||
.mockCreator,
|
||||
.mockOwner,
|
||||
.mockModerator
|
||||
.mockModerator,
|
||||
.mockFrank
|
||||
]
|
||||
|
||||
if withBanned {
|
||||
@@ -239,6 +250,10 @@ struct RoomMembersListScreen_Previews: PreviewProvider, TestablePreview {
|
||||
members.append(.mockInvited)
|
||||
}
|
||||
|
||||
let activeRoomCallParticipants = withInCall ? [RoomMemberProxyMock.mockAlice.userID,
|
||||
RoomMemberProxyMock.mockOwner.userID,
|
||||
mockAdmin.userID] : []
|
||||
|
||||
let clientProxyMock = ClientProxyMock(.init())
|
||||
clientProxyMock.userIdentityForFallBackToServerClosure = { userID, _ in
|
||||
let identity = switch userID {
|
||||
@@ -256,6 +271,7 @@ struct RoomMembersListScreen_Previews: PreviewProvider, TestablePreview {
|
||||
return RoomMembersListScreenViewModel(initialMode: initialMode,
|
||||
userSession: UserSessionMock(.init(clientProxy: clientProxyMock)),
|
||||
roomProxy: JoinedRoomProxyMock(.init(name: "Some room",
|
||||
activeRoomCallParticipants: activeRoomCallParticipants,
|
||||
members: members,
|
||||
ownUserID: ownUserID,
|
||||
powerLevelsConfiguration: .init(canUserInvite: false))),
|
||||
|
||||
+9
@@ -55,6 +55,12 @@ struct RoomMembersListScreenMemberCell: View {
|
||||
.font(.compound.bodyLG)
|
||||
.foregroundStyle(.compound.textSecondary)
|
||||
}
|
||||
|
||||
if listEntry.isInCall {
|
||||
CompoundIcon(\.videoCallSolid, size: .small, relativeTo: .compound.bodyLG)
|
||||
.foregroundStyle(.compound.iconAccentPrimary)
|
||||
.accessibilityLabel(L10n.commonOnACall)
|
||||
}
|
||||
}
|
||||
.overlay(alignment: .bottom) {
|
||||
if !isLast {
|
||||
@@ -117,6 +123,9 @@ struct RoomMembersListMemberCell_Previews: PreviewProvider, TestablePreview {
|
||||
verificationState: .verified),
|
||||
.init(member: .init(withProxy: RoomMemberProxyMock.mockModerator),
|
||||
verificationState: .verificationViolation),
|
||||
.init(member: .init(withProxy: RoomMemberProxyMock.mockFrank),
|
||||
verificationState: .notVerified,
|
||||
isInCall: true),
|
||||
.init(member: .init(withProxy: RoomMemberProxyMock(with: .init(userID: "@nodisplayname:matrix.org",
|
||||
membership: .join))),
|
||||
verificationState: .notVerified),
|
||||
|
||||
Reference in New Issue
Block a user