diff --git a/app/src/main/java/org/linphone/contacts/ContactsManager.kt b/app/src/main/java/org/linphone/contacts/ContactsManager.kt
index 291fc6516..096698d92 100644
--- a/app/src/main/java/org/linphone/contacts/ContactsManager.kt
+++ b/app/src/main/java/org/linphone/contacts/ContactsManager.kt
@@ -795,16 +795,18 @@ fun Friend.getListOfSipAddresses(): ArrayList
{
fun Friend.getListOfSipAddressesAndPhoneNumbers(listener: ContactNumberOrAddressClickListener): ArrayList {
val addressesAndNumbers = arrayListOf()
- for (address in getListOfSipAddresses()) {
- val data = ContactNumberOrAddressModel(
- this,
- address,
- address.asStringUriOnly(),
- true, // SIP addresses are always enabled
- listener,
- true
- )
- addressesAndNumbers.add(data)
+ if (!corePreferences.hideSipAddresses) {
+ for (address in getListOfSipAddresses()) {
+ val data = ContactNumberOrAddressModel(
+ this,
+ address,
+ address.asStringUriOnly(),
+ true, // SIP addresses are always enabled
+ listener,
+ true
+ )
+ addressesAndNumbers.add(data)
+ }
}
if (corePreferences.hidePhoneNumbers) {
return addressesAndNumbers
@@ -825,7 +827,7 @@ fun Friend.getListOfSipAddressesAndPhoneNumbers(listener: ContactNumberOrAddress
if (address != null) {
address.clean() // To remove ;user=phone
presenceAddress = address
- if (addressesAndNumbers.find { it.address?.weakEqual(address) == true } == null) {
+ if (!corePreferences.hideSipAddresses && addressesAndNumbers.find { it.address?.weakEqual(address) == true } == null) {
val data = ContactNumberOrAddressModel(
this,
address,
diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt
index 5e05581f0..9a3718ecd 100644
--- a/app/src/main/java/org/linphone/core/CorePreferences.kt
+++ b/app/src/main/java/org/linphone/core/CorePreferences.kt
@@ -281,6 +281,10 @@ class CorePreferences
val onlyDisplaySipUriUsername: Boolean
get() = config.getBool("ui", "only_display_sip_uri_username", false)
+ @get:WorkerThread
+ val hideSipAddresses: Boolean
+ get() = config.getBool("ui", "hide_sip_addresses", false)
+
@get:WorkerThread
val disableChat: Boolean
get() = config.getBool("ui", "disable_chat_feature", false)
diff --git a/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt b/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt
index 7eebbb963..502a1d28a 100644
--- a/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt
+++ b/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt
@@ -145,6 +145,8 @@ class CurrentCallViewModel
val qualityIcon = MutableLiveData()
+ val hideSipAddresses = MutableLiveData()
+
var terminatedByUser = false
val isRemoteRecordingEvent: MutableLiveData>> by lazy {
@@ -541,6 +543,7 @@ class CurrentCallViewModel
videoUpdateInProgress.value = false
coreContext.postOnCoreThread { core ->
+ hideSipAddresses.postValue(corePreferences.hideSipAddresses)
coreContext.contactsManager.addListener(contactsListener)
core.addListener(coreListener)
diff --git a/app/src/main/java/org/linphone/ui/main/chat/model/MessageBottomSheetParticipantModel.kt b/app/src/main/java/org/linphone/ui/main/chat/model/MessageBottomSheetParticipantModel.kt
index c1c7f69ea..0480f20ac 100644
--- a/app/src/main/java/org/linphone/ui/main/chat/model/MessageBottomSheetParticipantModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/chat/model/MessageBottomSheetParticipantModel.kt
@@ -47,7 +47,7 @@ class MessageBottomSheetParticipantModel
@UiThread
fun clicked() {
- if (!isOurOwnReaction && !corePreferences.onlyDisplaySipUriUsername) {
+ if (!isOurOwnReaction && !corePreferences.onlyDisplaySipUriUsername && !corePreferences.hideSipAddresses) {
showSipUri.postValue(showSipUri.value == false)
} else {
onClick?.invoke()
diff --git a/app/src/main/java/org/linphone/ui/main/chat/model/ParticipantModel.kt b/app/src/main/java/org/linphone/ui/main/chat/model/ParticipantModel.kt
index c7f171ae6..7367f197c 100644
--- a/app/src/main/java/org/linphone/ui/main/chat/model/ParticipantModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/chat/model/ParticipantModel.kt
@@ -59,7 +59,7 @@ class ParticipantModel
@UiThread
fun onClicked() {
- if (onClicked == null && !corePreferences.onlyDisplaySipUriUsername) {
+ if (onClicked == null && !corePreferences.onlyDisplaySipUriUsername && !corePreferences.hideSipAddresses) {
showSipUri.postValue(showSipUri.value == false)
} else {
onClicked?.invoke(this)
diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationInfoViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationInfoViewModel.kt
index 080120051..ce12b415b 100644
--- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationInfoViewModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationInfoViewModel.kt
@@ -56,6 +56,8 @@ class ConversationInfoViewModel
val isGroup = MutableLiveData()
+ val hideSipAddresses = MutableLiveData()
+
val isEndToEndEncrypted = MutableLiveData()
val subject = MutableLiveData()
@@ -192,6 +194,7 @@ class ConversationInfoViewModel
showPeerSipUri.value = false
coreContext.postOnCoreThread {
+ hideSipAddresses.postValue(corePreferences.hideSipAddresses)
coreContext.contactsManager.addListener(contactsListener)
}
}
diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt
index 7ccb9d9d1..164913efb 100644
--- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt
@@ -221,8 +221,8 @@ class ContactFragment : SlidingPaneChildFragment() {
}
viewModel.startCallToDeviceToIncreaseTrustEvent.observe(viewLifecycleOwner) {
- it.consume { pair ->
- callDirectlyOrShowConfirmTrustCallDialog(pair.first, pair.second)
+ it.consume { triple ->
+ callDirectlyOrShowConfirmTrustCallDialog(triple.first, triple.second, triple.third)
}
}
@@ -303,18 +303,18 @@ class ContactFragment : SlidingPaneChildFragment() {
}
private fun showTrustProcessDialog() {
- val initials = viewModel.contact.value?.initials?.value ?: "JD"
+ val initials = viewModel.contact.value?.initials?.value.orEmpty()
val picture = viewModel.contact.value?.picturePath?.value.orEmpty()
val model = ContactTrustDialogModel(initials, picture)
val dialog = DialogUtils.getContactTrustProcessExplanationDialog(requireActivity(), model)
dialog.show()
}
- private fun callDirectlyOrShowConfirmTrustCallDialog(contactName: String, deviceSipUri: String) {
+ private fun callDirectlyOrShowConfirmTrustCallDialog(contactName: String, deviceName: String, deviceSipUri: String) {
coreContext.postOnCoreThread {
if (corePreferences.showDialogWhenCallingDeviceUuidDirectly) {
coreContext.postOnMainThread {
- showConfirmTrustCallDialog(contactName, deviceSipUri)
+ showConfirmTrustCallDialog(contactName, deviceName, deviceSipUri)
}
} else {
val address = Factory.instance().createAddress(deviceSipUri)
@@ -325,11 +325,11 @@ class ContactFragment : SlidingPaneChildFragment() {
}
}
- private fun showConfirmTrustCallDialog(contactName: String, deviceSipUri: String) {
+ private fun showConfirmTrustCallDialog(contactName: String, deviceName: String, deviceSipUri: String) {
val label = AppUtils.getFormattedString(
R.string.contact_dialog_increase_trust_level_message,
contactName,
- deviceSipUri
+ deviceName
)
val model = ConfirmationDialogModel(label)
val dialog = DialogUtils.getContactTrustCallConfirmationDialog(requireActivity(), model)
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..98d7da2f6 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
@@ -129,8 +129,8 @@ class ContactViewModel
MutableLiveData>()
}
- val startCallToDeviceToIncreaseTrustEvent: MutableLiveData>> by lazy {
- MutableLiveData>>()
+ val startCallToDeviceToIncreaseTrustEvent: MutableLiveData>> by lazy {
+ MutableLiveData>>()
}
val contactRemovedEvent: MutableLiveData> by lazy {
@@ -601,7 +601,7 @@ class ContactViewModel
) {
if (::friend.isInitialized) {
startCallToDeviceToIncreaseTrustEvent.value =
- Event(Pair(friend.name.orEmpty(), it.address.asStringUriOnly()))
+ Event(Triple(friend.name.orEmpty(), it.name, it.address.asStringUriOnly()))
}
}
)
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 c0396b1a4..71862217a 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
@@ -102,7 +102,7 @@ class ContactsListViewModel
init {
fetchInProgress.value = true
showFavourites.value = corePreferences.showFavoriteContacts
- showFilter.value = !corePreferences.hidePhoneNumbers
+ showFilter.value = !corePreferences.hidePhoneNumbers && !corePreferences.hideSipAddresses
coreContext.postOnCoreThread { core ->
updateDomainFilter()
diff --git a/app/src/main/java/org/linphone/ui/main/history/viewmodel/HistoryViewModel.kt b/app/src/main/java/org/linphone/ui/main/history/viewmodel/HistoryViewModel.kt
index 6f96dda67..e89c6990c 100644
--- a/app/src/main/java/org/linphone/ui/main/history/viewmodel/HistoryViewModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/history/viewmodel/HistoryViewModel.kt
@@ -63,6 +63,8 @@ class HistoryViewModel
val isChatRoomAvailable = MutableLiveData()
+ val hideSipAddresses = MutableLiveData()
+
val callLogFoundEvent = MutableLiveData>()
val chatRoomCreationErrorEvent: MutableLiveData> by lazy {
@@ -135,6 +137,7 @@ class HistoryViewModel
core.addListener(coreListener)
chatDisabled.postValue(corePreferences.disableChat)
videoCallDisabled.postValue(!core.isVideoEnabled)
+ hideSipAddresses.postValue(corePreferences.hideSipAddresses)
}
}
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 1c53b546e..8ad0e6640 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
@@ -22,6 +22,7 @@ package org.linphone.ui.main.model
import androidx.annotation.UiThread
import androidx.annotation.WorkerThread
import androidx.lifecycle.MutableLiveData
+import org.linphone.LinphoneApplication.Companion.corePreferences
import org.linphone.core.Address
import org.linphone.core.Friend
import org.linphone.ui.main.contacts.model.ContactAvatarModel
@@ -48,7 +49,11 @@ class ConversationContactOrSuggestionModel
address.username.orEmpty()
}
- val sipUri = address.asStringUriOnly()
+ val sipUri = if (!corePreferences.hideSipAddresses) {
+ address.asStringUriOnly()
+ } else {
+ address.username
+ }
val initials = AppUtils.getInitials(conversationSubject ?: name)
diff --git a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/AccountProfileViewModel.kt b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/AccountProfileViewModel.kt
index 617e82747..b520f0cc8 100644
--- a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/AccountProfileViewModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/AccountProfileViewModel.kt
@@ -86,6 +86,8 @@ class AccountProfileViewModel
val hideAccountSettings = MutableLiveData()
+ val hideSipAddresses = MutableLiveData()
+
val deviceId = MutableLiveData()
val showDeviceId = MutableLiveData()
@@ -179,6 +181,7 @@ class AccountProfileViewModel
coreContext.postOnCoreThread {
hideAccountSettings.postValue(corePreferences.hideAccountSettings)
+ hideSipAddresses.postValue(corePreferences.hideSipAddresses)
dialPlansLabelList.add("") // To allow removing selected dial plan
val dialPlans = Factory.instance().dialPlans.toList()
diff --git a/app/src/main/res/layout-land/call_active_fragment.xml b/app/src/main/res/layout-land/call_active_fragment.xml
index 43d947f0c..aa8d96528 100644
--- a/app/src/main/res/layout-land/call_active_fragment.xml
+++ b/app/src/main/res/layout-land/call_active_fragment.xml
@@ -100,6 +100,7 @@
android:id="@+id/address"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:visibility="@{viewModel.hideSipAddresses ? View.GONE : View.VISIBLE}"
android:text="@{viewModel.displayedAddress, default=`sip:johndoe@sip.linphone.org`}"
android:textColor="@color/bc_white"
android:textSize="14sp" />
diff --git a/app/src/main/res/layout-land/call_ended_fragment.xml b/app/src/main/res/layout-land/call_ended_fragment.xml
index 2a8e0554a..209f04667 100644
--- a/app/src/main/res/layout-land/call_ended_fragment.xml
+++ b/app/src/main/res/layout-land/call_ended_fragment.xml
@@ -78,7 +78,8 @@
android:layout_height="wrap_content"
android:text="@{viewModel.displayedAddress, default=`sip:johndoe@sip.linphone.org`}"
android:textColor="@color/bc_white"
- android:textSize="14sp" />
+ android:textSize="14sp"
+ android:visibility="@{viewModel.hideSipAddresses ? View.GONE : View.VISIBLE}" />
diff --git a/app/src/main/res/layout-land/call_incoming_fragment.xml b/app/src/main/res/layout-land/call_incoming_fragment.xml
index 26859bbc7..414a8b063 100644
--- a/app/src/main/res/layout-land/call_incoming_fragment.xml
+++ b/app/src/main/res/layout-land/call_incoming_fragment.xml
@@ -59,7 +59,7 @@
android:text="@{viewModel.displayedAddress, default=`sip:johndoe@sip.linphone.org`}"
android:textColor="@color/bc_white"
android:textSize="14sp"
- android:visibility="@{viewModel.conferenceModel.isCurrentCallInConference ? View.GONE : View.VISIBLE}" />
+ android:visibility="@{viewModel.hideSipAddresses || viewModel.conferenceModel.isCurrentCallInConference ? View.GONE : View.VISIBLE}" />
diff --git a/app/src/main/res/layout-land/call_outgoing_fragment.xml b/app/src/main/res/layout-land/call_outgoing_fragment.xml
index 2f9c0292f..63960a174 100644
--- a/app/src/main/res/layout-land/call_outgoing_fragment.xml
+++ b/app/src/main/res/layout-land/call_outgoing_fragment.xml
@@ -80,7 +80,8 @@
android:layout_height="wrap_content"
android:text="@{viewModel.displayedAddress, default=`sip:johndoe@sip.linphone.org`}"
android:textColor="@color/bc_white"
- android:textSize="14sp" />
+ android:textSize="14sp"
+ android:visibility="@{viewModel.hideSipAddresses ? View.GONE : View.VISIBLE}" />
diff --git a/app/src/main/res/layout/account_profile_fragment.xml b/app/src/main/res/layout/account_profile_fragment.xml
index 50e6706ca..6d23845d3 100644
--- a/app/src/main/res/layout/account_profile_fragment.xml
+++ b/app/src/main/res/layout/account_profile_fragment.xml
@@ -213,6 +213,7 @@
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="@string/sip_address"
+ android:visibility="@{!viewModel.hideSipAddresses || viewModel.showDeviceId ? View.VISIBLE : View.GONE, default=gone}"
app:layout_constraintStart_toStartOf="@id/details_background"
app:layout_constraintTop_toTopOf="@id/details_background"/>
@@ -233,6 +234,7 @@
android:drawableEnd="@drawable/copy"
android:drawablePadding="5dp"
app:drawableTint="?attr/color_main2_600"
+ android:visibility="@{!viewModel.hideSipAddresses || viewModel.showDeviceId ? View.VISIBLE : View.GONE, default=gone}"
app:layout_constraintStart_toEndOf="@id/sip_address_label"
app:layout_constraintEnd_toEndOf="@id/details_background"
app:layout_constraintTop_toTopOf="@id/sip_address_label"
diff --git a/app/src/main/res/layout/call_active_fragment.xml b/app/src/main/res/layout/call_active_fragment.xml
index 1d88bb538..0e638cfe1 100644
--- a/app/src/main/res/layout/call_active_fragment.xml
+++ b/app/src/main/res/layout/call_active_fragment.xml
@@ -98,7 +98,7 @@
android:text="@{viewModel.displayedAddress, default=`sip:johndoe@sip.linphone.org`}"
android:textColor="@color/bc_white"
android:textSize="14sp"
- android:visibility="@{viewModel.pipMode || viewModel.halfOpenedFolded ? View.GONE : View.VISIBLE}"
+ android:visibility="@{viewModel.hideSipAddresses || viewModel.pipMode || viewModel.halfOpenedFolded ? View.GONE : View.VISIBLE}"
app:layout_constraintTop_toBottomOf="@id/display_name"
app:layout_constraintBottom_toBottomOf="@id/hinge_bottom"
app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/layout/call_ended_fragment.xml b/app/src/main/res/layout/call_ended_fragment.xml
index dfc8431d6..1659786bc 100644
--- a/app/src/main/res/layout/call_ended_fragment.xml
+++ b/app/src/main/res/layout/call_ended_fragment.xml
@@ -75,6 +75,7 @@
android:text="@{viewModel.displayedAddress, default=`sip:johndoe@sip.linphone.org`}"
android:textColor="@color/bc_white"
android:textSize="14sp"
+ android:visibility="@{viewModel.hideSipAddresses ? View.GONE : View.VISIBLE}"
app:layout_constraintTop_toBottomOf="@id/name"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/layout/call_incoming_fragment.xml b/app/src/main/res/layout/call_incoming_fragment.xml
index c8b55177f..96e3c4895 100644
--- a/app/src/main/res/layout/call_incoming_fragment.xml
+++ b/app/src/main/res/layout/call_incoming_fragment.xml
@@ -62,7 +62,7 @@
android:text="@{viewModel.displayedAddress, default=`sip:johndoe@sip.linphone.org`}"
android:textColor="@color/bc_white"
android:textSize="14sp"
- android:visibility="@{viewModel.conferenceModel.isCurrentCallInConference ? View.GONE : View.VISIBLE}"
+ android:visibility="@{viewModel.hideSipAddresses || viewModel.conferenceModel.isCurrentCallInConference ? View.GONE : View.VISIBLE}"
app:layout_constraintTop_toBottomOf="@id/name"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/layout/call_outgoing_fragment.xml b/app/src/main/res/layout/call_outgoing_fragment.xml
index fe69ccf88..97026af94 100644
--- a/app/src/main/res/layout/call_outgoing_fragment.xml
+++ b/app/src/main/res/layout/call_outgoing_fragment.xml
@@ -100,6 +100,7 @@
android:text="@{viewModel.displayedAddress, default=`sip:johndoe@sip.linphone.org`}"
android:textColor="@color/bc_white"
android:textSize="14sp"
+ android:visibility="@{viewModel.hideSipAddresses ? View.GONE : View.VISIBLE}"
app:layout_constraintTop_toBottomOf="@id/name"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/layout/chat_info_fragment.xml b/app/src/main/res/layout/chat_info_fragment.xml
index 68a0ac254..f63d9dfec 100644
--- a/app/src/main/res/layout/chat_info_fragment.xml
+++ b/app/src/main/res/layout/chat_info_fragment.xml
@@ -155,7 +155,7 @@
android:textSize="14sp"
android:drawableEnd="@drawable/copy"
android:drawablePadding="5dp"
- android:visibility="@{viewModel.isGroup ? View.GONE : View.VISIBLE, default=gone}"
+ android:visibility="@{viewModel.isGroup || viewModel.hideSipAddresses ? View.GONE : View.VISIBLE, default=gone}"
app:drawableTint="?attr/color_main2_600"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -176,7 +176,7 @@
android:textSize="14sp"
android:drawableEnd="@drawable/copy"
android:drawablePadding="5dp"
- android:visibility="@{viewModel.showPeerSipUri ? View.VISIBLE : View.GONE, default=gone}"
+ android:visibility="@{viewModel.showPeerSipUri && !viewModel.hideSipAddresses ? View.VISIBLE : View.GONE, default=gone}"
app:drawableTint="?attr/color_main2_600"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/layout/history_fragment.xml b/app/src/main/res/layout/history_fragment.xml
index 4f9d0cc50..cbc638fa0 100644
--- a/app/src/main/res/layout/history_fragment.xml
+++ b/app/src/main/res/layout/history_fragment.xml
@@ -129,7 +129,7 @@
android:textSize="14sp"
android:maxLines="1"
android:ellipsize="end"
- android:visibility="@{viewModel.isConferenceCallLog ? View.GONE : View.VISIBLE}"
+ android:visibility="@{viewModel.isConferenceCallLog || viewModel.hideSipAddresses ? View.GONE : View.VISIBLE}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/name" />