From f8556aa46b95aea0c8006e3174e2154ee01229bf 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 c477e7400..865de117c 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 @@ -36,6 +36,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() @@ -50,7 +51,13 @@ class ConversationContactOrSuggestionModel } val sipUri = if (!corePreferences.hideSipAddresses) { - address.asStringUriOnly() + // Hide SIP address and only show username for suggestions + // on the same domain as the currently selected account + if (!defaultAccountDomain.isNullOrEmpty() && defaultAccountDomain == address.domain) { + address.username + } else { + address.asStringUriOnly() + } } else { address.username } 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 590010450..aaad25322 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 @@ -316,6 +316,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) @@ -370,6 +371,8 @@ abstract class AddressSelectionViewModel val model = ConversationContactOrSuggestionModel(address) { coreContext.startAudioCall(address) } + val avatarModel = getContactAvatarModelForAddress(address) + model.avatarModel.postValue(avatarModel) suggestionsList.add(model) continue } @@ -380,10 +383,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) } } @@ -573,4 +577,12 @@ abstract class AddressSelectionViewModel clearFilter() } } + + @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 a0fecb905..134c12a91 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"> -