diff --git a/Classes/Swift/Extensions/LinphoneCore/AddressExtensions.swift b/Classes/Swift/Extensions/LinphoneCore/AddressExtensions.swift index 527ad768c..766d5d7e8 100644 --- a/Classes/Swift/Extensions/LinphoneCore/AddressExtensions.swift +++ b/Classes/Swift/Extensions/LinphoneCore/AddressExtensions.swift @@ -23,14 +23,14 @@ import linphonesw extension Address { func initials() -> String? { - var initials = initials(displayName: addressBookEnhancedDisplayName()) + var initials = Address.initials(displayName: addressBookEnhancedDisplayName()) if (initials == nil || initials!.isEmpty) { initials = String(username.prefix(1)) } return initials } - private func initials(displayName: String?) -> String? { // Basic ImproveMe + static func initials(displayName: String?) -> String? { // Basic ImproveMe let separator = displayName?.contains(" ") == true ? " " : "." return displayName?.components(separatedBy: separator) .reduce("") { diff --git a/Classes/Swift/Voip/Widgets/Avatar.swift b/Classes/Swift/Voip/Widgets/Avatar.swift index 63cee8936..66611fa01 100644 --- a/Classes/Swift/Voip/Widgets/Avatar.swift +++ b/Classes/Swift/Voip/Widgets/Avatar.swift @@ -100,4 +100,17 @@ class Avatar : UIView { return shared?.toImage() } + @objc static func imageForInitials(displayName:String) -> UIImage? { + if (shared == nil) { + shared = Avatar(color:VoipTheme.primaryTextColor, textStyle: VoipTheme.call_generated_avatar_small) + PhoneMainView.instance().mainViewController.view.addSubview(shared!) + PhoneMainView.instance().mainViewController.view.sendSubviewToBack(shared!) + shared?.bounds.size = CGSize(width: size, height: size) + } + shared?.initialsLabel.text = Address.initials(displayName: displayName) + shared?.initialsLabel.isHidden = false + shared?.iconImageView.isHidden = true + return shared?.toImage() + } + } diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m index 13e08fcd4..846daaf28 100644 --- a/Classes/Utils/FastAddressBook.m +++ b/Classes/Utils/FastAddressBook.m @@ -34,7 +34,9 @@ @synchronized(LinphoneManager.instance.fastAddressBook.addressBookMap) { UIImage *retImage = [contact avatar]; if (retImage == nil) { - retImage = [UIImage imageNamed:@"avatar.png"]; + retImage = contact.friend && linphone_friend_get_addresses(contact.friend) ? + [AvatarBridge imageForAddressWithAddress:linphone_friend_get_addresses(contact.friend)->data] : + [AvatarBridge imageForInitialsWithDisplayName:[contact displayName]]; } if (retImage.size.width != retImage.size.height) { retImage = [retImage squareCrop]; @@ -109,6 +111,7 @@ } } } + return contact; }