diff --git a/Classes/Swift/Extensions/LinphoneCore/AddressExtensions.swift b/Classes/Swift/Extensions/LinphoneCore/AddressExtensions.swift index 0208a1f20..527ad768c 100644 --- a/Classes/Swift/Extensions/LinphoneCore/AddressExtensions.swift +++ b/Classes/Swift/Extensions/LinphoneCore/AddressExtensions.swift @@ -31,7 +31,8 @@ extension Address { } private func initials(displayName: String?) -> String? { // Basic ImproveMe - return displayName?.components(separatedBy: " ") + let separator = displayName?.contains(" ") == true ? " " : "." + return displayName?.components(separatedBy: separator) .reduce("") { ($0.isEmpty ? "" : "\($0.first?.uppercased() ?? "")") + ($1.isEmpty ? "" : "\($1.first?.uppercased() ?? "")") diff --git a/Classes/Swift/Voip/Widgets/Avatar.swift b/Classes/Swift/Voip/Widgets/Avatar.swift index 5042f1b57..63cee8936 100644 --- a/Classes/Swift/Voip/Widgets/Avatar.swift +++ b/Classes/Swift/Voip/Widgets/Avatar.swift @@ -84,3 +84,20 @@ class Avatar : UIView { } + +@objc class AvatarBridge : NSObject { // Ugly work around to tap into the swift Avatars, until rest of the app is reworked in Swift. + static var shared : Avatar? = nil + static let size = 50.0 + @objc static func imageForAddress(address:OpaquePointer) -> 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) + } + let sAddr = Address.getSwiftObject(cObject: address) + shared?.fillFromAddress(address: sAddr) + return shared?.toImage() + } + +} diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m index a4a4e10a2..13e08fcd4 100644 --- a/Classes/Utils/FastAddressBook.m +++ b/Classes/Utils/FastAddressBook.m @@ -24,6 +24,7 @@ #import "LinphoneManager.h" #import "ContactsListView.h" #import "Utils.h" +#import "linphoneapp-Swift.h" @implementation FastAddressBook { CNContactStore* store; @@ -46,7 +47,11 @@ if ([LinphoneManager isMyself:addr] && [LinphoneUtils hasSelfAvatar]) { return [LinphoneUtils selfAvatar]; } - return [FastAddressBook imageForContact:[FastAddressBook getContactWithAddress:addr]]; + UIImage *contactImage = [[FastAddressBook getContactWithAddress:addr] avatar]; + if (contactImage) + return contactImage; + else + return [AvatarBridge imageForAddressWithAddress:addr]; } + (UIImage *)imageForSecurityLevel:(LinphoneChatRoomSecurityLevel)level {