Fixed contacts not displayed in app after being received through bodyless presence

This commit is contained in:
Sylvain Berfini 2025-08-21 10:05:21 +02:00
parent 0add60c628
commit 26e391cbf8

View file

@ -159,6 +159,19 @@ class ContactsManager
override fun onPresenceReceived(friendList: FriendList, friends: Array<out Friend?>) {
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)
}
}