in AzureCommunicationUI/sdk/AzureCommunicationUICalling/Sources/Presentation/SwiftUI/Calling/CallingViewComponent/ControlBarViewModel.swift [252:301]
func update(localUserState: LocalUserState,
permissionState: PermissionState,
callingState: CallingState,
visibilityState: VisibilityState,
navigationState: NavigationState,
buttonViewDataState: ButtonViewDataState
) {
isShareActivityDisplayed = navigationState.supportShareSheetVisible
callingStatus = callingState.status
operationStatus = callingState.operationStatus
self.buttonViewDataState = buttonViewDataState
self.capabilities = localUserState.capabilities
if cameraPermission != permissionState.cameraPermission {
cameraPermission = permissionState.cameraPermission
}
if isCameraStateUpdating,
cameraState.operation != localUserState.cameraState.operation {
isCameraStateUpdating = localUserState.cameraState.operation != .on &&
localUserState.cameraState.operation != .off
}
cameraState = localUserState.cameraState
cameraButtonViewModel.update(iconName: cameraState.operation == .on ? .videoOn : .videoOff)
cameraButtonViewModel.update(accessibilityLabel: cameraState.operation == .on
? localizationProvider.getLocalizedString(.videoOnAccessibilityLabel)
: localizationProvider.getLocalizedString(.videoOffAccessibilityLabel))
cameraButtonViewModel.update(isDisabled: isCameraDisabled())
cameraButtonViewModel.update(isVisible: isCameraVisible())
audioState = localUserState.audioState
micButtonViewModel.update(iconName: audioState.operation == .on ? .micOn : .micOff)
micButtonViewModel.update(accessibilityLabel: audioState.operation == .on
? localizationProvider.getLocalizedString(.micOnAccessibilityLabel)
: localizationProvider.getLocalizedString(.micOffAccessibilityLabel))
micButtonViewModel.update(isDisabled: isMicDisabled())
micButtonViewModel.update(isVisible: isMicVisible())
audioDeviceButtonViewModel.update(isDisabled: isAudioDeviceDisabled())
let audioDeviceState = localUserState.audioState.device
audioDeviceButtonViewModel.update(
iconName: audioDeviceState.icon
)
audioDeviceButtonViewModel.update(
accessibilityValue: audioDeviceState.getLabel(localizationProvider: localizationProvider))
audioDeviceButtonViewModel.update(isVisible: isAudioDeviceVisible())
moreButtonViewModel.update(isDisabled: isMoreButtonDisabled())
moreButtonViewModel.update(isVisible: isMoreButtonVisible())
isDisplayed = visibilityState.currentStatus != .pipModeEntered
isMoreButtonShouldFocused = true
updateTotalButtonCount()
}