AzureCommunicationUI/sdk/AzureCommunicationUICalling/Sources/Redux/Action/LocalUserAction.swift (68 lines of code) (raw):
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
//
import Foundation
import Combine
enum LocalUserAction: Equatable {
case cameraPreviewOnTriggered
case cameraOnTriggered
case cameraOnSucceeded(videoStreamIdentifier: String)
case cameraOnFailed(error: Error)
case cameraOffTriggered
case cameraOffSucceeded
case cameraOffFailed(error: Error)
case cameraPausedSucceeded
case cameraPausedFailed(error: Error)
case cameraSwitchTriggered
case cameraSwitchSucceeded(cameraDevice: CameraDevice)
case cameraSwitchFailed(previousCamera: LocalUserState.CameraDeviceSelectionStatus, error: Error)
case microphoneOnTriggered
case microphoneOnFailed(error: Error)
case microphoneOffTriggered
case microphoneOffFailed(error: Error)
case microphoneMuteStateUpdated(isMuted: Bool)
case microphonePreviewOn
case microphonePreviewOff
case audioDeviceChangeRequested(device: AudioDeviceType)
case audioDeviceChangeSucceeded(device: AudioDeviceType)
case audioDeviceChangeFailed(error: Error)
case participantRoleChanged(participantRole: ParticipantRoleEnum)
case setCapabilities(capabilities: Set<ParticipantCapabilityType>)
case onCapabilitiesChanged(event: CapabilitiesChangedEvent)
static func == (lhs: LocalUserAction, rhs: LocalUserAction) -> Bool {
switch (lhs, rhs) {
case let (.cameraOnFailed(lErr), .cameraOnFailed(rErr)),
let (.cameraOffFailed(lErr), .cameraOffFailed(rErr)),
let (.cameraPausedFailed(lErr), .cameraPausedFailed(rErr)),
let (.microphoneOnFailed(lErr), .microphoneOnFailed(rErr)),
let (.microphoneOffFailed(lErr), .microphoneOffFailed(rErr)),
let (.audioDeviceChangeFailed(lErr), .audioDeviceChangeFailed(rErr)):
return (lErr as NSError).code == (rErr as NSError).code
case (.cameraPreviewOnTriggered, .cameraPreviewOnTriggered),
(.cameraOnTriggered, .cameraOnTriggered),
(.cameraOffTriggered, .cameraOffTriggered),
(.cameraOffSucceeded, .cameraOffSucceeded),
(.cameraPausedSucceeded, .cameraPausedSucceeded),
(.cameraSwitchTriggered, .cameraSwitchTriggered),
(.microphoneOnTriggered, .microphoneOnTriggered),
(.microphoneOffTriggered, .microphoneOffTriggered),
(.microphonePreviewOn, .microphonePreviewOn),
(.microphonePreviewOff, .microphonePreviewOff):
return true
case let (.audioDeviceChangeRequested(lDev), .audioDeviceChangeRequested(rDev)),
let (.audioDeviceChangeSucceeded(lDev), .audioDeviceChangeSucceeded(rDev)):
return lDev == rDev
case let (.microphoneMuteStateUpdated(lMuted), .microphoneMuteStateUpdated(rMuted)):
return lMuted == rMuted
case let (.cameraOnSucceeded(lId), .cameraOnSucceeded(rId)):
return lId == rId
case let (.cameraSwitchSucceeded(lDev), .cameraSwitchSucceeded(rDev)):
return lDev == rDev
case let (.cameraSwitchFailed(lPreviousDevice, lErr), .cameraSwitchFailed(rPreviousDevice, rErr)):
return lPreviousDevice == rPreviousDevice && (lErr as NSError).code == (rErr as NSError).code
case let (.setCapabilities(lCapabilities), .setCapabilities(rCapabilities)):
return lCapabilities == rCapabilities
case let (.onCapabilitiesChanged(lEvent), .onCapabilitiesChanged(rEvent)):
return lEvent == rEvent
default:
return false
}
}
}