AzureCommunicationUI/sdk/AzureCommunicationUICalling/Sources/CallCompositeOptions/CallCompositeCallState.swift (114 lines of code) (raw):

// // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. // import UIKit import AzureCore /// Defines values for call state. public struct CallState: Equatable, RequestStringConvertible { internal enum CallStateKV { case none case earlyMedia case connecting case ringing case connected case localHold case disconnecting case disconnected case inLobby case remoteHold case unknown(String) var rawValue: String { switch self { case .none: return "none" case .earlyMedia: return "earlyMedia" case .connecting: return "connecting" case .ringing: return "ringing" case .connected: return "connected" case .localHold: return "localHold" case .disconnecting: return "disconnecting" case .disconnected: return "disconnected" case .inLobby: return "inLobby" case .remoteHold: return "remoteHold" case .unknown(let value): return value } } init(rawValue: String) { switch rawValue.lowercased() { case "none": self = .none case "earlyMedia": self = .earlyMedia case "connecting": self = .connecting case "ringing": self = .ringing case "connected": self = .connected case "localHold": self = .localHold case "disconnecting": self = .disconnecting case "disconnected": self = .disconnected case "inLobby": self = .inLobby case "remoteHold": self = .remoteHold default: self = .unknown(rawValue.lowercased()) } } } private let value: CallStateKV private let callEndReasonCode: Int? private let callEndReasonSubCode: Int? private let callIdInternal: String? public var requestString: String { return value.rawValue } public var callEndReasonCodeInt: Int? { return callEndReasonCode } public var callEndReasonSubCodeInt: Int? { return callEndReasonSubCode } public var callId: String? { return callIdInternal } private init(rawValue: String) { self.value = CallStateKV(rawValue: rawValue) let callEndSuccess = 0 self.callEndReasonCode = callEndSuccess self.callEndReasonSubCode = callEndSuccess self.callIdInternal = nil } init(rawValue: String, callEndReasonCode: Int?, callEndReasonSubCode: Int?, callId: String) { self.value = CallStateKV(rawValue: rawValue) self.callEndReasonCode = callEndReasonCode self.callEndReasonSubCode = callEndReasonSubCode self.callIdInternal = callId } public static func == (lhs: CallState, rhs: CallState) -> Bool { return lhs.requestString == rhs.requestString } /// None - disposed or applicable very early in lifetime of a call. public static let none: CallState = .init(rawValue: "none") /// Early Media. public static let earlyMedia: CallState = .init(rawValue: "earlyMedia") /// Call is being connected. public static let connecting: CallState = .init(rawValue: "connecting") /// Call is ringing. public static let ringing: CallState = .init(rawValue: "ringing") /// Call is connected. public static let connected: CallState = .init(rawValue: "connected") /// Call held by local participant. public static let localHold: CallState = .init(rawValue: "localHold") /// None - disposed or applicable very early in lifetime of a call. public static let disconnecting: CallState = .init(rawValue: "disconnecting") /// Call is being disconnected. public static let disconnected: CallState = .init(rawValue: "disconnected") /// In Lobby. public static let inLobby: CallState = .init(rawValue: "inLobby") /// Call held by a remote participant. public static let remoteHold: CallState = .init(rawValue: "remoteHold") }