From 5321918b2d9e821c9738ae22241c141b89fd9d0f Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 1 Sep 2020 11:35:31 +0200 Subject: [PATCH] Added setting to replace SIP URIs by username --- .../activities/call/viewmodels/CallViewModel.kt | 3 ++- .../viewmodels/ChatRoomCreationContactViewModel.kt | 2 +- .../main/chat/viewmodels/DevicesListGroupViewModel.kt | 3 ++- .../chat/viewmodels/GroupInfoParticipantViewModel.kt | 3 ++- .../main/dialer/viewmodels/DialerViewModel.kt | 3 ++- .../main/history/viewmodels/CallLogViewModel.kt | 2 +- .../settings/viewmodels/AccountSettingsViewModel.kt | 3 +++ app/src/main/java/org/linphone/core/CorePreferences.kt | 6 ++++++ .../org/linphone/notifications/NotificationsManager.kt | 2 +- app/src/main/java/org/linphone/utils/LinphoneUtils.kt | 10 ++++++++++ app/src/main/res/layout/settings_account_cell.xml | 2 +- app/src/main/res/layout/side_menu_account_cell.xml | 2 +- app/src/main/res/layout/side_menu_fragment.xml | 2 +- 13 files changed, 33 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/call/viewmodels/CallViewModel.kt b/app/src/main/java/org/linphone/activities/call/viewmodels/CallViewModel.kt index 4040ae733..737d7271f 100644 --- a/app/src/main/java/org/linphone/activities/call/viewmodels/CallViewModel.kt +++ b/app/src/main/java/org/linphone/activities/call/viewmodels/CallViewModel.kt @@ -33,6 +33,7 @@ import org.linphone.core.Call import org.linphone.core.CallListenerStub import org.linphone.core.tools.Log import org.linphone.utils.Event +import org.linphone.utils.LinphoneUtils class CallViewModelFactory(private val call: Call) : ViewModelProvider.NewInstanceFactory() { @@ -46,7 +47,7 @@ class CallViewModelFactory(private val call: Call) : open class CallViewModel(val call: Call) : GenericContactViewModel(call.remoteAddress) { val address: String by lazy { call.remoteAddress.clean() // To remove gruu if any - call.remoteAddress.asStringUriOnly() + LinphoneUtils.getDisplayableAddress(call.remoteAddress) } val isPaused = MutableLiveData() diff --git a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatRoomCreationContactViewModel.kt b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatRoomCreationContactViewModel.kt index d5b4ad114..f7f67e5c2 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatRoomCreationContactViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatRoomCreationContactViewModel.kt @@ -48,7 +48,7 @@ class ChatRoomCreationContactViewModel(private val searchResult: SearchResult) : } val sipUri: String by lazy { - searchResult.phoneNumber ?: searchResult.address?.asStringUriOnly() ?: "" + searchResult.phoneNumber ?: LinphoneUtils.getDisplayableAddress(searchResult.address) } val address: Address? by lazy { diff --git a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/DevicesListGroupViewModel.kt b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/DevicesListGroupViewModel.kt index 693d9203d..714ddfe40 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/DevicesListGroupViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/DevicesListGroupViewModel.kt @@ -25,6 +25,7 @@ import org.linphone.R import org.linphone.contact.GenericContactViewModel import org.linphone.core.ChatRoomSecurityLevel import org.linphone.core.Participant +import org.linphone.utils.LinphoneUtils class DevicesListGroupViewModel(private val participant: Participant) : GenericContactViewModel(participant.address) { override val securityLevel: ChatRoomSecurityLevel @@ -48,7 +49,7 @@ class DevicesListGroupViewModel(private val participant: Participant) : GenericC } } - val sipUri: String = participant.address.asStringUriOnly() + val sipUri: String get() = LinphoneUtils.getDisplayableAddress(participant.address) val isExpanded = MutableLiveData() diff --git a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/GroupInfoParticipantViewModel.kt b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/GroupInfoParticipantViewModel.kt index b65a570e3..9e1d8d20f 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/GroupInfoParticipantViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/GroupInfoParticipantViewModel.kt @@ -23,12 +23,13 @@ import androidx.lifecycle.MutableLiveData import org.linphone.activities.main.chat.GroupChatRoomMember import org.linphone.contact.GenericContactViewModel import org.linphone.core.ChatRoomSecurityLevel +import org.linphone.utils.LinphoneUtils class GroupInfoParticipantViewModel(private val participant: GroupChatRoomMember) : GenericContactViewModel(participant.address) { override val securityLevel: ChatRoomSecurityLevel get() = participant.securityLevel - val sipUri: String = participant.address.asStringUriOnly() + val sipUri: String get() = LinphoneUtils.getDisplayableAddress(participant.address) val isAdmin = MutableLiveData() diff --git a/app/src/main/java/org/linphone/activities/main/dialer/viewmodels/DialerViewModel.kt b/app/src/main/java/org/linphone/activities/main/dialer/viewmodels/DialerViewModel.kt index 9d7526ca3..ddba352f2 100644 --- a/app/src/main/java/org/linphone/activities/main/dialer/viewmodels/DialerViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/dialer/viewmodels/DialerViewModel.kt @@ -27,6 +27,7 @@ import org.linphone.activities.main.dialer.NumpadDigitListener import org.linphone.core.* import org.linphone.core.tools.Log import org.linphone.utils.Event +import org.linphone.utils.LinphoneUtils import org.linphone.utils.LogsUploadViewModel class DialerViewModel : LogsUploadViewModel() { @@ -183,7 +184,7 @@ class DialerViewModel : LogsUploadViewModel() { private fun setLastOutgoingCallAddress() { val callLog = coreContext.core.lastOutgoingCallLog if (callLog != null) { - enteredUri.value = callLog.remoteAddress.asStringUriOnly() + enteredUri.value = LinphoneUtils.getDisplayableAddress(callLog.remoteAddress) } } } diff --git a/app/src/main/java/org/linphone/activities/main/history/viewmodels/CallLogViewModel.kt b/app/src/main/java/org/linphone/activities/main/history/viewmodels/CallLogViewModel.kt index f9cd0bebd..a44e8751c 100644 --- a/app/src/main/java/org/linphone/activities/main/history/viewmodels/CallLogViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/history/viewmodels/CallLogViewModel.kt @@ -45,7 +45,7 @@ class CallLogViewModelFactory(private val callLog: CallLog) : class CallLogViewModel(val callLog: CallLog) : GenericContactViewModel(callLog.remoteAddress) { val peerSipUri: String by lazy { callLog.remoteAddress.clean() // To remove gruu if any - callLog.remoteAddress.asStringUriOnly() + LinphoneUtils.getDisplayableAddress(callLog.remoteAddress) } val statusIconResource: Int by lazy { diff --git a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/AccountSettingsViewModel.kt b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/AccountSettingsViewModel.kt index 9f4e4ae4c..b0dec1976 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/AccountSettingsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/AccountSettingsViewModel.kt @@ -26,6 +26,7 @@ import java.lang.NumberFormatException import java.util.* import kotlin.collections.ArrayList import org.linphone.LinphoneApplication.Companion.coreContext +import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.R import org.linphone.activities.main.settings.SettingListenerStub import org.linphone.core.* @@ -65,6 +66,8 @@ class AccountSettingsViewModel(val proxyConfig: ProxyConfig) : GenericSettingsVi MutableLiveData>() } + val displayUsernameInsteadOfIdentity = corePreferences.replaceSipUriByUsername + private var proxyConfigToDelete: ProxyConfig? = null val listener: CoreListenerStub = object : CoreListenerStub() { diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index d5ca50e22..1688e0d8e 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -68,6 +68,12 @@ class CorePreferences constructor(private val context: Context) { config.setBool("app", "full_screen_activities", value) } + var replaceSipUriByUsername: Boolean + get() = config.getBool("app", "replace_sip_uri_by_username", false) + set(value) { + config.setBool("app", "replace_sip_uri_by_username", value) + } + /** -1 means auto, 0 no, 1 yes */ var darkMode: Int get() { diff --git a/app/src/main/java/org/linphone/notifications/NotificationsManager.kt b/app/src/main/java/org/linphone/notifications/NotificationsManager.kt index c4622f0f8..b980635b0 100644 --- a/app/src/main/java/org/linphone/notifications/NotificationsManager.kt +++ b/app/src/main/java/org/linphone/notifications/NotificationsManager.kt @@ -342,7 +342,7 @@ class NotificationsManager(private val context: Context) { } private fun displayIncomingCallNotification(call: Call, useAsForeground: Boolean = false) { - val address = call.remoteAddress.asStringUriOnly() + val address = LinphoneUtils.getDisplayableAddress(call.remoteAddress) val notifiable = getNotifiableForCall(call) if (notifiable.notificationId == currentForegroundServiceNotificationId) { diff --git a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt index 22fbd8e34..6bd12da4c 100644 --- a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt +++ b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt @@ -28,6 +28,7 @@ import java.text.DateFormat import java.text.SimpleDateFormat import java.util.* import org.linphone.LinphoneApplication.Companion.coreContext +import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.R import org.linphone.core.* import org.linphone.core.tools.Log @@ -43,6 +44,15 @@ class LinphoneUtils { return address.displayName ?: address.username ?: "" } + fun getDisplayableAddress(address: Address?): String { + if (address == null) return "[null]" + return if (corePreferences.replaceSipUriByUsername) { + address.username ?: address.asStringUriOnly() + } else { + address.asStringUriOnly() + } + } + fun isLimeAvailable(): Boolean { val core = coreContext.core return core.limeX3DhAvailable() && core.limeX3DhEnabled() && diff --git a/app/src/main/res/layout/settings_account_cell.xml b/app/src/main/res/layout/settings_account_cell.xml index 6c38e82de..7759a300f 100644 --- a/app/src/main/res/layout/settings_account_cell.xml +++ b/app/src/main/res/layout/settings_account_cell.xml @@ -27,7 +27,7 @@