AzureCommunicationUI/AzureCommunicationUIDemoApp/Sources/RemoteParticipantAvatarHelper.swift (45 lines of code) (raw):

// // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. // import Foundation import AzureCommunicationCommon import AzureCommunicationUICalling struct RemoteParticipantAvatarHelper { private static func getRemoteParticipantId(_ identifier: CommunicationIdentifier) -> String? { switch identifier { case is CommunicationUserIdentifier: return (identifier as? CommunicationUserIdentifier)?.identifier case is UnknownIdentifier: return (identifier as? UnknownIdentifier)?.identifier case is PhoneNumberIdentifier: return (identifier as? PhoneNumberIdentifier)?.phoneNumber case is MicrosoftTeamsUserIdentifier: return (identifier as? MicrosoftTeamsUserIdentifier)?.userId default: return nil } } static func onRemoteParticipantJoined(to callComposite: CallComposite, identifiers: [CommunicationIdentifier]) { let avatars = ["cat", "fox", "koala", "monkey", "mouse", "octopus"] for identifier in identifiers { let id = getRemoteParticipantId(identifier) let nameIdValue = id != nil ? "\(id?.suffix(4) ?? "")" : "" var avatarImage: UIImage? var selectedAvatarName = "" if let lastSymbol = id?.last { let index = Int((lastSymbol.asciiValue ?? 0 ) % 6) selectedAvatarName = avatars[index] avatarImage = UIImage(named: selectedAvatarName) } let displayName = selectedAvatarName.isEmpty ? nameIdValue : "\(selectedAvatarName) \(nameIdValue)" let participantViewData = ParticipantViewData(avatar: avatarImage, displayName: displayName) callComposite.set(remoteParticipantViewData: participantViewData, for: identifier) { result in switch result { case .success: break case .failure(let error): print("::::RemoteParticipantAvatarHelper::onRemoteParticipantJoined::failure \(error)") } } } } }