diff --git a/app/src/main/java/org/linphone/activities/main/contact/viewmodels/ContactsListViewModel.kt b/app/src/main/java/org/linphone/activities/main/contact/viewmodels/ContactsListViewModel.kt index d5ca9ffc6..77244dd64 100644 --- a/app/src/main/java/org/linphone/activities/main/contact/viewmodels/ContactsListViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/contact/viewmodels/ContactsListViewModel.kt @@ -88,7 +88,6 @@ class ContactsListViewModel : ViewModel() { fun updateContactsList(clearCache: Boolean) { val filterValue = filter.value.orEmpty() - contactsList.value.orEmpty().forEach(ContactViewModel::destroy) if (clearCache || ( previousFilter.isNotEmpty() && ( @@ -122,6 +121,8 @@ class ContactsListViewModel : ViewModel() { private fun processMagicSearchResults(results: Array) { Log.i("[Contacts] Processing ${results.size} results") + contactsList.value.orEmpty().forEach(ContactViewModel::destroy) + val list = arrayListOf() for (result in results) { val contact = searchMatchingContact(result) ?: Contact(searchResult = result) @@ -230,8 +231,9 @@ class ContactsListViewModel : ViewModel() { if (contact != null) return contact } - if (searchResult.phoneNumber != null) { - return coreContext.contactsManager.findContactByPhoneNumber(searchResult.phoneNumber.orEmpty()) + val phoneNumber = searchResult.phoneNumber + if (phoneNumber != null) { + return coreContext.contactsManager.findContactByPhoneNumber(phoneNumber) } return null diff --git a/app/src/main/java/org/linphone/contact/Contact.kt b/app/src/main/java/org/linphone/contact/Contact.kt index f556f8961..c0f357b44 100644 --- a/app/src/main/java/org/linphone/contact/Contact.kt +++ b/app/src/main/java/org/linphone/contact/Contact.kt @@ -59,6 +59,7 @@ open class Contact() : Comparable { constructor(searchResult: SearchResult) : this() { friend = searchResult.friend + fullName = friend?.name addAddressAndPhoneNumberFromSearchResult(searchResult) } diff --git a/app/src/main/java/org/linphone/contact/ContactsManager.kt b/app/src/main/java/org/linphone/contact/ContactsManager.kt index ca345b5fb..ef3c4fba4 100644 --- a/app/src/main/java/org/linphone/contact/ContactsManager.kt +++ b/app/src/main/java/org/linphone/contact/ContactsManager.kt @@ -233,16 +233,24 @@ class ContactsManager(private val context: Context) { } val address = friend.address + var potentialContact: Contact? = null if (address != null) { val friends = coreContext.core.findFriends(address) for (f in friends) { if (f.name == friend.name) { val contact: Contact? = f.userData as? Contact if (contact != null) return contact + } else { + val contact: Contact? = f.userData as? Contact + if (contact != null) potentialContact = contact } } } + if (potentialContact != null) { + return potentialContact + } + for (list in coreContext.core.friendsLists) { for (f in list.friends) { if (f.name == friend.name) {