From 07387d353746e33c0e4dfeb332ef25ad0d1b44be Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 27 Mar 2025 13:22:04 +0100 Subject: [PATCH] Fixed LDAP/remote CardDAV results not always displayed when making a search in contacts list --- .../ui/main/contacts/viewmodel/ContactViewModel.kt | 4 +++- .../ui/main/contacts/viewmodel/ContactsListViewModel.kt | 8 +++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt index a4a3c5c40..45eebf837 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt @@ -309,7 +309,9 @@ class ContactViewModel @WorkerThread fun refreshContactInfo() { isFavourite.postValue(friend.starred) - isStored.postValue(friend.inList()) + // Do not show edit contact button for contacts not stored in a FriendList or + // if they are in a temporary one (for example if they are from a remote directory such as LDAP or CardDAV) + isStored.postValue(!coreContext.contactsManager.isContactTemporary(friend)) contact.value?.destroy() contact.postValue(ContactAvatarModel(friend)) diff --git a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt index 4bc593c23..15596e869 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt @@ -295,7 +295,13 @@ class ContactsListViewModel for (result in results) { val friend = result.friend if (friend != null) { - if (coreContext.contactsManager.isContactTemporary(friend, allowNullFriendList = true)) continue + val isFromRemoteDirectory = result.hasSourceFlag(MagicSearch.Source.LdapServers) || result.hasSourceFlag(MagicSearch.Source.RemoteCardDAV) + // Only display friends from temporary friend lists if their source flag show they + // were fetched from a remote contact directory (and not the local friend list) + if (!isFromRemoteDirectory && coreContext.contactsManager.isContactTemporary(friend, allowNullFriendList = true)) { + Log.i("$TAG Do not show friend [${friend.name}] which is in a temporary friend list") + continue + } if (friend.refKey.orEmpty().isEmpty()) { if (friend.vcard != null) {