From d1b8ecb8b8f25b7a34ade27a3d4cf9560ad7f98d Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 1 Oct 2025 15:12:14 +0200 Subject: [PATCH] Hide suggestions SIP address domain if it matches default account SIP identity one + fixed suggestion avatar for phone numbers --- .../ConversationContactOrSuggestionModel.kt | 9 ++++++++- .../main/viewmodel/AddressSelectionViewModel.kt | 16 ++++++++++++++-- ...eric_address_picker_suggestion_list_cell.xml | 17 ++++++++--------- 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/main/model/ConversationContactOrSuggestionModel.kt b/app/src/main/java/org/linphone/ui/main/model/ConversationContactOrSuggestionModel.kt index 9c8a39e33..012dfd674 100644 --- a/app/src/main/java/org/linphone/ui/main/model/ConversationContactOrSuggestionModel.kt +++ b/app/src/main/java/org/linphone/ui/main/model/ConversationContactOrSuggestionModel.kt @@ -35,6 +35,7 @@ class ConversationContactOrSuggestionModel val conversationId: String = "", conversationSubject: String? = null, val friend: Friend? = null, + val defaultAccountDomain: String? = null, private val onClicked: ((Address) -> Unit)? = null ) { val id = friend?.refKey ?: address.asStringUriOnly().hashCode() @@ -48,7 +49,13 @@ class ConversationContactOrSuggestionModel address.username ?: address.domain.orEmpty() } - val sipUri = address.asStringUriOnly() + // Hide SIP address and only show username for suggestions + // on the same domain as the currently selected account + val sipUri = if (!defaultAccountDomain.isNullOrEmpty() && defaultAccountDomain == address.domain) { + address.username + } else { + address.asStringUriOnly() + } val initials = AppUtils.getInitials(conversationSubject ?: name) diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/AddressSelectionViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/AddressSelectionViewModel.kt index 1e5d7c882..bc847e6a1 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/AddressSelectionViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/AddressSelectionViewModel.kt @@ -267,6 +267,7 @@ abstract class AddressSelectionViewModel arrayListOf() } + val defaultAccountDomain = LinphoneUtils.getDefaultAccount()?.params?.domain val favoritesList = arrayListOf() val domain = corePreferences.contactsFilter // Make a quick synchronous search for favorites (in case of total results exceed magic search limit to prevent missing ones) @@ -321,6 +322,8 @@ abstract class AddressSelectionViewModel val model = ConversationContactOrSuggestionModel(address) { coreContext.startAudioCall(address) } + val avatarModel = getContactAvatarModelForAddress(address) + model.avatarModel.postValue(avatarModel) suggestionsList.add(model) continue } @@ -331,10 +334,11 @@ abstract class AddressSelectionViewModel continue } - val model = ConversationContactOrSuggestionModel(address) { + val model = ConversationContactOrSuggestionModel(address, defaultAccountDomain = defaultAccountDomain) { coreContext.startAudioCall(address) } - + val avatarModel = getContactAvatarModelForAddress(address) + model.avatarModel.postValue(avatarModel) suggestionsList.add(model) } } @@ -460,4 +464,12 @@ abstract class AddressSelectionViewModel } return conversationsList } + + @WorkerThread + private fun getContactAvatarModelForAddress(address: Address): ContactAvatarModel { + val fakeFriend = coreContext.core.createFriend() + fakeFriend.name = LinphoneUtils.getDisplayName(address) + fakeFriend.address = address + return ContactAvatarModel(fakeFriend) + } } diff --git a/app/src/main/res/layout/generic_address_picker_suggestion_list_cell.xml b/app/src/main/res/layout/generic_address_picker_suggestion_list_cell.xml index 12e98f7d5..0abff97b6 100644 --- a/app/src/main/res/layout/generic_address_picker_suggestion_list_cell.xml +++ b/app/src/main/res/layout/generic_address_picker_suggestion_list_cell.xml @@ -1,7 +1,7 @@ - + @@ -23,15 +23,14 @@ android:paddingBottom="5dp" android:background="@drawable/primary_cell_background"> -