AzureCommunicationUI/sdk/AzureCommunicationUICalling/Sources/Redux/State/ButtonViewDataState.swift (114 lines of code) (raw):

// // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. // import Foundation import UIKit struct DefaultButtonState: Equatable { let enabled: Bool let visible: Bool } struct CustomButtonState: Equatable { let id: String let enabled: Bool let visible: Bool let image: UIImage let title: String } struct ButtonViewDataState: Equatable { let setupScreenCameraButtonState: DefaultButtonState? let setupScreenMicButtonState: DefaultButtonState? let setupScreenAudioDeviceButtonState: DefaultButtonState? let callScreenCameraButtonState: DefaultButtonState? let callScreenMicButtonState: DefaultButtonState? let callScreenAudioDeviceButtonState: DefaultButtonState? let liveCaptionsButton: DefaultButtonState? let liveCaptionsToggleButton: DefaultButtonState? let spokenLanguageButton: DefaultButtonState? let captionsLanguageButton: DefaultButtonState? let shareDiagnosticsButton: DefaultButtonState? let reportIssueButton: DefaultButtonState? let callScreenCustomButtonsState: [CustomButtonState] let callScreenHeaderCustomButtonsState: [CustomButtonState] init(setupScreenCameraButtonState: DefaultButtonState? = nil, setupScreenMicButtonState: DefaultButtonState? = nil, setupScreenAudioDeviceButtonState: DefaultButtonState? = nil, callScreenCameraButtonState: DefaultButtonState? = nil, callScreenMicButtonState: DefaultButtonState? = nil, callScreenAudioDeviceButtonState: DefaultButtonState? = nil, shareDiagnosticsButton: DefaultButtonState? = nil, reportIssueButton: DefaultButtonState? = nil, liveCaptionsButton: DefaultButtonState? = nil, liveCaptionsToggleButton: DefaultButtonState? = nil, spokenLanguageButton: DefaultButtonState? = nil, captionsLanguageButton: DefaultButtonState? = nil, callScreenCustomButtonsState: [CustomButtonState] = [], callScreenHeaderCustomButtonsState: [CustomButtonState] = [] ) { self.setupScreenCameraButtonState = setupScreenCameraButtonState self.setupScreenMicButtonState = setupScreenMicButtonState self.setupScreenAudioDeviceButtonState = setupScreenAudioDeviceButtonState self.callScreenCameraButtonState = callScreenCameraButtonState self.callScreenMicButtonState = callScreenMicButtonState self.callScreenAudioDeviceButtonState = callScreenAudioDeviceButtonState self.liveCaptionsButton = liveCaptionsButton self.liveCaptionsToggleButton = liveCaptionsToggleButton self.spokenLanguageButton = spokenLanguageButton self.captionsLanguageButton = captionsLanguageButton self.shareDiagnosticsButton = shareDiagnosticsButton self.reportIssueButton = reportIssueButton self.callScreenCustomButtonsState = callScreenCustomButtonsState self.callScreenHeaderCustomButtonsState = callScreenHeaderCustomButtonsState } static func constructInitial(setupScreenOptions: SetupScreenOptions?, callScreenOptions: CallScreenOptions?) -> ButtonViewDataState { return ButtonViewDataState( setupScreenCameraButtonState: DefaultButtonState( enabled: setupScreenOptions?.cameraButton?.enabled ?? true, visible: setupScreenOptions?.cameraButton?.visible ?? true), setupScreenMicButtonState: DefaultButtonState( enabled: setupScreenOptions?.microphoneButton?.enabled ?? true, visible: setupScreenOptions?.microphoneButton?.visible ?? true), setupScreenAudioDeviceButtonState: DefaultButtonState( enabled: setupScreenOptions?.audioDeviceButton?.enabled ?? true, visible: setupScreenOptions?.audioDeviceButton?.visible ?? true), callScreenCameraButtonState: DefaultButtonState( enabled: callScreenOptions?.controlBarOptions?.cameraButton?.enabled ?? true, visible: callScreenOptions?.controlBarOptions?.cameraButton?.visible ?? true), callScreenMicButtonState: DefaultButtonState( enabled: callScreenOptions?.controlBarOptions?.microphoneButton?.enabled ?? true, visible: callScreenOptions?.controlBarOptions?.microphoneButton?.visible ?? true), callScreenAudioDeviceButtonState: DefaultButtonState( enabled: callScreenOptions?.controlBarOptions?.audioDeviceButton?.enabled ?? true, visible: callScreenOptions?.controlBarOptions?.audioDeviceButton?.visible ?? true), shareDiagnosticsButton: DefaultButtonState( enabled: callScreenOptions?.controlBarOptions?.shareDiagnosticsButton?.enabled ?? true, visible: callScreenOptions?.controlBarOptions?.shareDiagnosticsButton?.visible ?? true), reportIssueButton: DefaultButtonState( enabled: callScreenOptions?.controlBarOptions?.reportIssueButton?.enabled ?? true, visible: callScreenOptions?.controlBarOptions?.reportIssueButton?.visible ?? true), liveCaptionsButton: DefaultButtonState( enabled: callScreenOptions?.controlBarOptions?.liveCaptionsButton?.enabled ?? true, visible: callScreenOptions?.controlBarOptions?.liveCaptionsButton?.visible ?? true), liveCaptionsToggleButton: DefaultButtonState( enabled: callScreenOptions?.controlBarOptions?.liveCaptionsToggleButton?.enabled ?? true, visible: callScreenOptions?.controlBarOptions?.liveCaptionsToggleButton?.visible ?? true), spokenLanguageButton: DefaultButtonState( enabled: callScreenOptions?.controlBarOptions?.spokenLanguageButton?.enabled ?? true, visible: callScreenOptions?.controlBarOptions?.spokenLanguageButton?.visible ?? true), captionsLanguageButton: DefaultButtonState( enabled: callScreenOptions?.controlBarOptions?.captionsLanguageButton?.enabled ?? true, visible: callScreenOptions?.controlBarOptions?.captionsLanguageButton?.visible ?? true), callScreenCustomButtonsState: callScreenOptions?.controlBarOptions?.customButtons.map { customButton in return CustomButtonState(id: customButton.id, enabled: customButton.enabled, visible: customButton.visible, image: customButton.image, title: customButton.title) } ?? [], callScreenHeaderCustomButtonsState: callScreenOptions?.headerViewData?.customButtons.map { customButton in return CustomButtonState(id: customButton.id, enabled: customButton.enabled, visible: customButton.visible, image: customButton.image, title: customButton.title) } ?? [] ) } }