From 26e391cbf8accff7534567a99c5d67213d511b88 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 21 Aug 2025 10:05:21 +0200 Subject: [PATCH] Fixed contacts not displayed in app after being received through bodyless presence --- .../org/linphone/contacts/ContactsManager.kt | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/linphone/contacts/ContactsManager.kt b/app/src/main/java/org/linphone/contacts/ContactsManager.kt index 16a5b53a9..179166db8 100644 --- a/app/src/main/java/org/linphone/contacts/ContactsManager.kt +++ b/app/src/main/java/org/linphone/contacts/ContactsManager.kt @@ -159,6 +159,19 @@ class ContactsManager override fun onPresenceReceived(friendList: FriendList, friends: Array) { if (friendList.isSubscriptionBodyless) { Log.i("$TAG Bodyless friendlist [${friendList.displayName}] presence received") + + for (friend in friends) { + if (friend != null) { + val address = friend.address + if (address != null) { + Log.d( + "$TAG Newly discovered SIP Address [${address.asStringUriOnly()}] for friend [${friend.name}] in bodyless list [${friendList.displayName}]" + ) + newContactAddedWithSipUri(friend, address) + } + } + } + notifyContactsListChanged() } } @@ -180,7 +193,7 @@ class ContactsManager friend.addAddress(address) friend.done() - newContactAddedWithSipUri(friend, sipUri) + newContactAddedWithSipUri(friend, address) } else { Log.e("$TAG Failed to parse SIP URI [$sipUri] as Address!") } @@ -318,7 +331,8 @@ class ContactsManager } @WorkerThread - private fun newContactAddedWithSipUri(friend: Friend, sipUri: String) { + private fun newContactAddedWithSipUri(friend: Friend, address: Address) { + val sipUri = address.asStringUriOnly() if (unknownContactsAvatarsMap.keys.contains(sipUri)) { Log.d("$TAG Found SIP URI [$sipUri] in unknownContactsAvatarsMap, removing it") val oldModel = unknownContactsAvatarsMap[sipUri] @@ -329,7 +343,6 @@ class ContactsManager "$TAG Found SIP URI [$sipUri] in knownContactsAvatarsMap, forcing presence update" ) val oldModel = knownContactsAvatarsMap[sipUri] - val address = Factory.instance().createAddress(sipUri) oldModel?.update(address) } else { Log.i( @@ -343,7 +356,7 @@ class ContactsManager @WorkerThread fun newContactAdded(friend: Friend) { for (sipAddress in friend.addresses) { - newContactAddedWithSipUri(friend, sipAddress.asStringUriOnly()) + newContactAddedWithSipUri(friend, sipAddress) } }