in AzureCommunicationUI/AzureCommunicationUIDemoApp/Sources/Views/CallingDemoView.swift [805:896]
func startCallWithDeprecatedLaunch() async {
if let credential = try? await getTokenCredential(),
let callComposite = try? await createCallComposite() {
let link = getMeetingLink()
var localOptions = getLocalOptions(callComposite: callComposite)
switch envConfigSubject.selectedMeetingType {
case .groupCall:
let uuid = try? parseUUID(from: link)
// Checking if UUID parsing was successful
if let uuid = uuid {
if envConfigSubject.displayName.isEmpty {
// Launch call composite without displayName
callComposite.launch(remoteOptions: RemoteOptions(for: .groupCall(groupId: uuid),
credential: credential),
localOptions: localOptions)
} else {
// Launch call composite with displayName
callComposite.launch(remoteOptions: RemoteOptions(for: .groupCall(groupId: uuid),
credential: credential,
displayName: envConfigSubject.displayName),
localOptions: localOptions)
}
} else {
// Handle the case where UUID parsing fails
showError(for: DemoError.invalidGroupCallId.getErrorCode())
return
}
case .teamsMeeting:
if !envConfigSubject.teamsMeetingLink.isEmpty {
if envConfigSubject.displayName.isEmpty {
callComposite.launch(
remoteOptions: RemoteOptions(for: .teamsMeeting(teamsLink:
envConfigSubject.teamsMeetingLink),
credential: credential),
localOptions: localOptions
)
} else {
callComposite.launch(
remoteOptions: RemoteOptions(for: .teamsMeeting(teamsLink:
envConfigSubject.teamsMeetingLink),
credential: credential,
displayName: envConfigSubject.displayName),
localOptions: localOptions
)
}
} else if !envConfigSubject.teamsMeetingId.isEmpty && !envConfigSubject.teamsMeetingPasscode.isEmpty {
if envConfigSubject.displayName.isEmpty {
callComposite.launch(
remoteOptions: RemoteOptions(for: .teamsMeetingId(meetingId:
envConfigSubject.teamsMeetingId,
meetingPasscode:
envConfigSubject.teamsMeetingPasscode),
credential: credential),
localOptions: localOptions
)
} else {
callComposite.launch(
remoteOptions: RemoteOptions(for: .teamsMeetingId(meetingId:
envConfigSubject.teamsMeetingId,
meetingPasscode:
envConfigSubject.teamsMeetingPasscode),
credential: credential,
displayName: envConfigSubject.displayName),
localOptions: localOptions
)
}
}
case .oneToNCall:
let ids: [String] = link.split(separator: ",").map {
String($0).trimmingCharacters(in: .whitespacesAndNewlines)
}
let communicationIdentifiers: [CommunicationIdentifier] =
ids.map { createCommunicationIdentifier(fromRawId: $0) }
callComposite.launch(participants: communicationIdentifiers,
localOptions: localOptions)
case .roomCall:
if envConfigSubject.displayName.isEmpty {
callComposite.launch(remoteOptions:
RemoteOptions(for: .roomCall(roomId: link),
credential: credential),
localOptions: localOptions)
} else {
callComposite.launch(
remoteOptions: RemoteOptions(for:
.roomCall(roomId: link),
credential: credential,
displayName: envConfigSubject.displayName),
localOptions: localOptions)
}
}
}
}