in azure-communication-ui/calling/src/main/java/com/azure/android/communication/ui/calling/presentation/fragment/calling/localuser/LocalParticipantViewModel.kt [50:89]
fun update(
displayName: String?,
audioOperationalStatus: AudioOperationalStatus,
videoStreamID: String?,
numberOfRemoteParticipants: Int,
callingState: CallingStatus,
cameraDeviceSelectionStatus: CameraDeviceSelectionStatus,
camerasCount: Int,
pipStatus: VisibilityStatus,
avMode: CallCompositeAudioVideoMode,
isOverlayDisplayedOverGrid: Boolean,
) {
val viewMode = getLocalParticipantViewMode(numberOfRemoteParticipants)
val displayVideo = shouldDisplayVideo(videoStreamID)
val displayFullScreenAvatar =
shouldDisplayFullScreenAvatar(displayVideo, viewMode, callingState)
videoStatusFlow.value = VideoModel(displayVideo, videoStreamID, viewMode)
displayNameStateFlow.value = displayName
localUserMutedStateFlow.value = audioOperationalStatus == AudioOperationalStatus.OFF
displayFullScreenAvatarFlow.value = displayFullScreenAvatar
displaySwitchCameraButtonFlow.value =
displayVideo &&
viewMode == LocalParticipantViewMode.FULL_SCREEN && camerasCount > 1 &&
pipStatus == VisibilityStatus.VISIBLE
displayPipSwitchCameraButtonFlow.value =
displayVideo &&
viewMode == LocalParticipantViewMode.SELFIE_PIP &&
camerasCount > 1 &&
pipStatus == VisibilityStatus.VISIBLE
enableCameraSwitchFlow.value =
cameraDeviceSelectionStatus != CameraDeviceSelectionStatus.SWITCHING &&
callingState != CallingStatus.LOCAL_HOLD
cameraDeviceSelectionFlow.value = cameraDeviceSelectionStatus
numberOfRemoteParticipantsFlow.value = numberOfRemoteParticipants
isVisibleFlow.value = isVisible(displayVideo, pipStatus, displayFullScreenAvatar, avMode)
isOverlayDisplayedFlow.value = isOverlayDisplayedOverGrid
}