From e5e49530dd19a6224240c18cc9c646d8c11c71f0 Mon Sep 17 00:00:00 2001 From: "benoit.martins" Date: Wed, 12 Apr 2023 18:06:37 +0200 Subject: [PATCH] Change presence value in AvatarBridge with PresenceModel.consolidatedPresence --- Classes/Swift/Voip/Widgets/Avatar.swift | 33 ++++++++++++++++++++++--- Classes/Utils/FastAddressBook.m | 2 +- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/Classes/Swift/Voip/Widgets/Avatar.swift b/Classes/Swift/Voip/Widgets/Avatar.swift index 80b2b7f98..365bfd0a7 100644 --- a/Classes/Swift/Voip/Widgets/Avatar.swift +++ b/Classes/Swift/Voip/Widgets/Avatar.swift @@ -111,7 +111,11 @@ class Avatar : UIView { let avatarWithPresence = UIView(frame: CGRect(x: 0, y: 0, width: size, height: size)) let avatarImageWihtoutPresence = UIImageView(image: shared?.toImage()) - let iconPresenceView = UIImageView(image: UIImage(named:"led_connected")) + let contactAddress = Address.getSwiftObject(cObject: address).contact() + var iconPresenceView = UIImageView() + if contactAddress != nil { + iconPresenceView = updatePresenceImage(contact: Address.getSwiftObject(cObject: address).contact()!) + } avatarWithPresence.addSubview(avatarImageWihtoutPresence) avatarWithPresence.addSubview(iconPresenceView) @@ -120,7 +124,8 @@ class Avatar : UIView { return avatarWithPresence.toImage() } - @objc static func imageForInitials(displayName:String) -> UIImage? { + @objc static func imageForInitials(contact:Contact) -> UIImage? { + let displayName: String = contact.displayName if (shared == nil) { prepareIt() } @@ -133,7 +138,7 @@ class Avatar : UIView { let avatarWithPresence = UIView(frame: CGRect(x: 0, y: 0, width: size, height: size)) let avatarImageWihtoutPresence = UIImageView(image: shared?.toImage()) - let iconPresenceView = UIImageView(image: UIImage(named:"led_connected")) + let iconPresenceView = updatePresenceImage(contact: contact) avatarWithPresence.addSubview(avatarImageWihtoutPresence) avatarWithPresence.addSubview(iconPresenceView) @@ -142,4 +147,26 @@ class Avatar : UIView { return avatarWithPresence.toImage() } + @objc static func updatePresenceImage(contact:Contact) -> UIImageView { + + let friend = Friend.getSwiftObject(cObject: contact.friend) + + var presenceModel : PresenceModel? + var hasPresence : Bool? = false + + var imageName = ""; + + if friend.address?.asStringUriOnly() != nil { + presenceModel = friend.getPresenceModelForUriOrTel(uriOrTel: (friend.address?.asStringUriOnly())!) + hasPresence = presenceModel != nil && presenceModel!.basicStatus == PresenceBasicStatus.Open + } + + if (hasPresence! && presenceModel?.consolidatedPresence == ConsolidatedPresence.Online) { + imageName = "led_connected"; + } else { + imageName = "led_inprogress"; + } + + return UIImageView(image: UIImage(named:imageName)) + } } diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m index 74e2fbe3e..66ee7c873 100644 --- a/Classes/Utils/FastAddressBook.m +++ b/Classes/Utils/FastAddressBook.m @@ -36,7 +36,7 @@ if (retImage == nil) { retImage = contact.friend && linphone_friend_get_addresses(contact.friend) ? [AvatarBridge imageForAddressWithAddress:linphone_friend_get_addresses(contact.friend)->data] : - [AvatarBridge imageForInitialsWithDisplayName:[contact displayName]]; + [AvatarBridge imageForInitialsWithContact:contact]; } if (retImage.size.width != retImage.size.height) { retImage = [retImage squareCrop];