in AzureCommunicationUI/sdk/AzureCommunicationUICalling/Sources/Presentation/SwiftUI/Calling/Grid/Cell/ParticipantGridCellViewModel.swift [69:123]
func update(participantModel: ParticipantInfoModel) {
self.participantIdentifier = participantModel.userIdentifier
let videoViewModel = getDisplayingVideoStreamModel(participantModel)
if self.videoViewModel?.videoStreamId != videoViewModel.videoStreamId ||
self.videoViewModel?.videoStreamType != videoViewModel.videoStreamType {
let newIsScreenSharing = videoViewModel.videoStreamType == .screenSharing
if newIsScreenSharing {
accessibilityProvider.postQueuedAnnouncement(
localizationProvider.getLocalizedString(.screenshareStartAccessibilityLabel))
} else if self.isScreenSharing && !newIsScreenSharing {
accessibilityProvider.postQueuedAnnouncement(
localizationProvider.getLocalizedString(.screenshareEndAccessibilityLabel))
}
self.isScreenSharing = newIsScreenSharing
self.videoViewModel = ParticipantVideoViewInfoModel(videoStreamType: videoViewModel.videoStreamType,
videoStreamId: videoViewModel.videoStreamId)
}
if self.participantName != participantModel.displayName ||
self.isMuted != participantModel.isMuted ||
self.isSpeaking != participantModel.isSpeaking ||
self.isCameraEnabled != participantModel.cameraVideoStreamModel?.videoStreamIdentifier.isEmpty ||
self.isHold != (participantModel.status == .hold) {
self.accessibilityLabel = getAccessibilityLabel(participantModel: participantModel)
}
if self.participantStatus != participantModel.status {
self.participantStatus = participantModel.status
updateParticipantNameIfNeeded(with: renderDisplayName)
self.isMuted = participantModel.isMuted && participantModel.status == .connected
}
if self.participantName != participantModel.displayName {
self.participantName = participantModel.displayName
updateParticipantNameIfNeeded(with: renderDisplayName)
}
if self.isSpeaking != participantModel.isSpeaking {
self.isSpeaking = participantModel.isSpeaking
}
if self.isTypingRtt != participantModel.isTypingRtt {
self.isTypingRtt = participantModel.isTypingRtt
}
if self.isMuted != participantModel.isMuted {
self.isMuted = participantModel.isMuted && participantModel.status == .connected
}
let isOnHold = participantModel.status == .hold
if self.isHold != isOnHold {
self.isHold = isOnHold
postParticipantStatusAccessibilityAnnouncements(isHold: self.isHold, participantModel: participantModel)
}
}