AzureCommunicationUI/sdk/AzureCommunicationUICalling/Sources/CallCompositeOptions/CallConfiguration.swift (80 lines of code) (raw):

// // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. // import Foundation import AzureCommunicationCommon struct CallConfiguration { let groupId: UUID? let meetingLink: String? let meetingId: String? let meetingPasscode: String? let callId: String? let compositeCallType: CompositeCallType let diagnosticConfig: DiagnosticConfig let participants: [CommunicationIdentifier]? let roomId: String? init(locator: JoinLocator?, participants: [CommunicationIdentifier]?, callId: String?) { if let locator = locator { self.callId = nil switch locator { case let .groupCall(groupId: groupId): self.groupId = groupId self.meetingLink = nil self.participants = nil self.meetingId = nil self.meetingPasscode = nil self.roomId = nil self.compositeCallType = .groupCall case let .teamsMeetingId(meetingId: meetingId, meetingPasscode: meetingPasscode): self.groupId = nil self.meetingLink = nil self.participants = nil self.meetingId = meetingId self.meetingPasscode = meetingPasscode self.roomId = nil self.compositeCallType = .teamsMeeting case let .teamsMeeting(teamsLink: meetingLink): self.groupId = nil self.participants = nil self.meetingLink = meetingLink self.meetingId = nil self.meetingPasscode = nil self.compositeCallType = .teamsMeeting self.roomId = nil case let .roomCall(roomId: roomId): self.roomId = roomId self.groupId = nil self.meetingLink = nil self.meetingId = nil self.meetingPasscode = nil self.compositeCallType = .roomsCall self.participants = nil } } else if participants != nil { self.participants = participants self.roomId = nil self.meetingId = nil self.meetingPasscode = nil self.groupId = nil self.meetingLink = nil self.compositeCallType = .oneToNOutgoing self.callId = nil } else { self.participants = nil self.roomId = nil self.meetingId = nil self.meetingPasscode = nil self.groupId = nil self.meetingLink = nil self.compositeCallType = .oneToOneIncoming self.callId = callId } self.diagnosticConfig = DiagnosticConfig() } } enum CompositeCallType { case groupCall case teamsMeeting case oneToNOutgoing case oneToOneIncoming case roomsCall }