Changes to show & use the 'apply prefix for calls & chat'
This commit is contained in:
parent
e0bc94d62d
commit
1c7886ffb7
14 changed files with 31 additions and 22 deletions
|
@ -361,7 +361,7 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
|
|||
}
|
||||
}
|
||||
|
||||
val address = coreContext.core.interpretUrl(addressToCall)
|
||||
val address = coreContext.core.interpretUrl(addressToCall, LinphoneUtils.applyInternationalPrefix())
|
||||
if (address != null) {
|
||||
addressToCall = address.asStringUriOnly()
|
||||
}
|
||||
|
@ -460,7 +460,7 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
|
|||
|
||||
val localAddress =
|
||||
coreContext.core.defaultAccount?.params?.identityAddress?.asStringUriOnly()
|
||||
val peerAddress = coreContext.core.interpretUrl(addressToIM)?.asStringUriOnly()
|
||||
val peerAddress = coreContext.core.interpretUrl(addressToIM, LinphoneUtils.applyInternationalPrefix())?.asStringUriOnly()
|
||||
Log.i("[Main Activity] Navigating to chat room with local [$localAddress] and peer [$peerAddress] addresses")
|
||||
navigateToChatRoom(localAddress, peerAddress)
|
||||
} else {
|
||||
|
|
|
@ -72,7 +72,7 @@ class ChatRoomCreationViewModel : ContactsSelectionViewModel() {
|
|||
val defaultAccount = coreContext.core.defaultAccount
|
||||
var room: ChatRoom?
|
||||
|
||||
val address = searchResult.address ?: coreContext.core.interpretUrl(searchResult.phoneNumber ?: "")
|
||||
val address = searchResult.address ?: coreContext.core.interpretUrl(searchResult.phoneNumber ?: "", LinphoneUtils.applyInternationalPrefix())
|
||||
if (address == null) {
|
||||
Log.e("[Chat Room Creation] Can't get a valid address from search result $searchResult")
|
||||
onMessageToNotifyEvent.value = Event(R.string.chat_room_creation_failed_snack)
|
||||
|
|
|
@ -79,7 +79,7 @@ class ConferenceWaitingRoomFragment : GenericFragment<ConferenceWaitingRoomFragm
|
|||
it.consume { callParams ->
|
||||
val conferenceUri = arguments?.getString("Address")
|
||||
if (conferenceUri != null) {
|
||||
val conferenceAddress = coreContext.core.interpretUrl(conferenceUri)
|
||||
val conferenceAddress = coreContext.core.interpretUrl(conferenceUri, false)
|
||||
if (conferenceAddress != null) {
|
||||
Log.i("[Conference Waiting Room] Calling conference SIP URI: ${conferenceAddress.asStringUriOnly()}")
|
||||
coreContext.startCall(conferenceAddress, callParams)
|
||||
|
|
|
@ -130,7 +130,7 @@ class ContactEditorViewModel(val c: Friend?) : ViewModel(), ContactDataInterface
|
|||
val sipAddress = address.newValue.value.orEmpty()
|
||||
if (sipAddress.isEmpty()) continue
|
||||
|
||||
val parsed = coreContext.core.interpretUrl(sipAddress)
|
||||
val parsed = coreContext.core.interpretUrl(sipAddress, false)
|
||||
if (parsed != null) contact.addAddress(parsed)
|
||||
}
|
||||
|
||||
|
|
|
@ -215,7 +215,7 @@ class ContactViewModel(friend: Friend, async: Boolean = false) : MessageNotifier
|
|||
val presenceModel = friend.getPresenceModelForUriOrTel(number)
|
||||
val hasPresence = presenceModel != null && presenceModel.basicStatus == PresenceBasicStatus.Open
|
||||
val contactAddress = presenceModel?.contact ?: number
|
||||
val address = coreContext.core.interpretUrl(contactAddress)
|
||||
val address = coreContext.core.interpretUrl(contactAddress, false)
|
||||
address?.displayName = displayName.value.orEmpty()
|
||||
val isMe = if (address != null) coreContext.core.defaultAccount?.params?.identityAddress?.weakEqual(address) ?: false else false
|
||||
val secureChatAllowed = LinphoneUtils.isLimeAvailable() && !isMe && friend.getPresenceModelForUriOrTel(number)?.hasCapability(FriendCapability.LimeX3Dh) ?: false
|
||||
|
|
|
@ -420,7 +420,7 @@ class AccountSettingsViewModel(val account: Account) : GenericSettingsViewModel(
|
|||
val audioVideoConferenceFactoryUriListener = object : SettingListenerStub() {
|
||||
override fun onTextValueChanged(newValue: String) {
|
||||
val params = account.params.clone()
|
||||
val uri = coreContext.core.interpretUrl(newValue)
|
||||
val uri = coreContext.core.interpretUrl(newValue, false)
|
||||
Log.i("[Account Settings] Forcing audio/video conference factory on proxy config ${params.identityAddress?.asString()} to value: $newValue")
|
||||
params.audioVideoConferenceFactoryAddress = uri
|
||||
account.params = params
|
||||
|
|
|
@ -166,7 +166,7 @@ class Api26Compatibility {
|
|||
val info: String
|
||||
|
||||
val remoteContact = call.remoteContact
|
||||
val conferenceAddress = if (remoteContact != null) coreContext.core.interpretUrl(remoteContact) else null
|
||||
val conferenceAddress = if (remoteContact != null) coreContext.core.interpretUrl(remoteContact, false) else null
|
||||
val conferenceInfo = if (conferenceAddress != null) coreContext.core.findConferenceInformationFromUri(conferenceAddress) else null
|
||||
if (conferenceInfo == null) {
|
||||
Log.i("[Notifications Manager] No conference info found for remote contact address $remoteContact")
|
||||
|
|
|
@ -52,7 +52,7 @@ class Api31Compatibility {
|
|||
notificationsManager: NotificationsManager
|
||||
): Notification {
|
||||
val remoteContact = call.remoteContact
|
||||
val conferenceAddress = if (remoteContact != null) coreContext.core.interpretUrl(remoteContact) else null
|
||||
val conferenceAddress = if (remoteContact != null) coreContext.core.interpretUrl(remoteContact, false) else null
|
||||
val conferenceInfo = if (conferenceAddress != null) coreContext.core.findConferenceInformationFromUri(conferenceAddress) else null
|
||||
if (conferenceInfo != null) {
|
||||
Log.i("[Notifications Manager] Displaying incoming group call notification with subject ${conferenceInfo.subject} and remote contact address $remoteContact")
|
||||
|
|
|
@ -55,7 +55,7 @@ class XiaomiCompatibility {
|
|||
val info: String
|
||||
|
||||
val remoteContact = call.remoteContact
|
||||
val conferenceAddress = if (remoteContact != null) coreContext.core.interpretUrl(remoteContact) else null
|
||||
val conferenceAddress = if (remoteContact != null) coreContext.core.interpretUrl(remoteContact, false) else null
|
||||
val conferenceInfo = if (conferenceAddress != null) coreContext.core.findConferenceInformationFromUri(conferenceAddress) else null
|
||||
if (conferenceInfo == null) {
|
||||
Log.i("[Notifications Manager] No conference info found for remote contact address $remoteContact")
|
||||
|
|
|
@ -180,7 +180,7 @@ class ContactLoader : LoaderManager.LoaderCallbacks<Cursor> {
|
|||
}
|
||||
linphoneMime, ContactsContract.CommonDataKinds.SipAddress.CONTENT_ITEM_TYPE -> {
|
||||
if (data1 == null) continue
|
||||
val address = core.interpretUrl(data1) ?: continue
|
||||
val address = core.interpretUrl(data1, true) ?: continue
|
||||
if (
|
||||
friendsAddresses.find {
|
||||
it.weakEqual(address)
|
||||
|
|
|
@ -414,7 +414,7 @@ class CoreContext(
|
|||
// Ensure audio/video conference factory URI is set on sip.linphone.org proxy configs
|
||||
if (account.params.audioVideoConferenceFactoryAddress == null) {
|
||||
val uri = corePreferences.audioVideoConferenceServerUri
|
||||
val address = core.interpretUrl(uri)
|
||||
val address = core.interpretUrl(uri, false)
|
||||
if (address != null) {
|
||||
Log.i("[Context] Setting audio/video conference factory on proxy config ${params.identityAddress?.asString()} to default value: $uri")
|
||||
params.audioVideoConferenceFactoryAddress = address
|
||||
|
@ -483,7 +483,7 @@ class CoreContext(
|
|||
|
||||
if (isLinphoneAccount) {
|
||||
core.config.setString("sip", "rls_uri", corePreferences.defaultRlsUri)
|
||||
val rlsAddress = core.interpretUrl(corePreferences.defaultRlsUri)
|
||||
val rlsAddress = core.interpretUrl(corePreferences.defaultRlsUri, false)
|
||||
if (rlsAddress != null) {
|
||||
for (friendList in core.friendsLists) {
|
||||
friendList.rlsAddress = rlsAddress
|
||||
|
@ -596,7 +596,7 @@ class CoreContext(
|
|||
fun declineCall(call: Call) {
|
||||
val voiceMailUri = corePreferences.voiceMailUri
|
||||
if (voiceMailUri != null && corePreferences.redirectDeclinedCallToVoiceMail) {
|
||||
val voiceMailAddress = core.interpretUrl(voiceMailUri)
|
||||
val voiceMailAddress = core.interpretUrl(voiceMailUri, false)
|
||||
if (voiceMailAddress != null) {
|
||||
Log.i("[Context] Redirecting call $call to voice mail URI: $voiceMailUri")
|
||||
call.redirectTo(voiceMailAddress)
|
||||
|
@ -617,7 +617,7 @@ class CoreContext(
|
|||
if (currentCall == null) {
|
||||
Log.e("[Context] Couldn't find a call to transfer")
|
||||
} else {
|
||||
val address = core.interpretUrl(addressToCall)
|
||||
val address = core.interpretUrl(addressToCall, LinphoneUtils.applyInternationalPrefix())
|
||||
if (address != null) {
|
||||
Log.i("[Context] Transferring current call to $addressToCall")
|
||||
currentCall.transferTo(address)
|
||||
|
@ -638,7 +638,7 @@ class CoreContext(
|
|||
}
|
||||
}
|
||||
|
||||
val address: Address? = core.interpretUrl(stringAddress)
|
||||
val address: Address? = core.interpretUrl(stringAddress, LinphoneUtils.applyInternationalPrefix())
|
||||
if (address == null) {
|
||||
Log.e("[Context] Failed to parse $stringAddress, abort outgoing call")
|
||||
callErrorMessageResourceId.value = Event(context.getString(R.string.call_error_network_unreachable))
|
||||
|
|
|
@ -53,7 +53,7 @@ class NotificationBroadcastReceiver : BroadcastReceiver() {
|
|||
}
|
||||
val core: Core = coreContext.core
|
||||
|
||||
val remoteAddress = core.interpretUrl(remoteSipAddress)
|
||||
val remoteAddress = core.interpretUrl(remoteSipAddress, false)
|
||||
if (remoteAddress == null) {
|
||||
Log.e("[Notification Broadcast Receiver] Couldn't interpret remote address $remoteSipAddress")
|
||||
return
|
||||
|
@ -64,7 +64,7 @@ class NotificationBroadcastReceiver : BroadcastReceiver() {
|
|||
Log.e("[Notification Broadcast Receiver] Local identity is null for notification id $notificationId")
|
||||
return
|
||||
}
|
||||
val localAddress = core.interpretUrl(localIdentity)
|
||||
val localAddress = core.interpretUrl(localIdentity, false)
|
||||
if (localAddress == null) {
|
||||
Log.e("[Notification Broadcast Receiver] Couldn't interpret local address $localIdentity")
|
||||
return
|
||||
|
@ -107,7 +107,7 @@ class NotificationBroadcastReceiver : BroadcastReceiver() {
|
|||
|
||||
val core: Core = coreContext.core
|
||||
|
||||
val remoteAddress = core.interpretUrl(remoteSipAddress)
|
||||
val remoteAddress = core.interpretUrl(remoteSipAddress, false)
|
||||
val call = if (remoteAddress != null) core.getCallByRemoteAddress2(remoteAddress) else null
|
||||
if (call == null) {
|
||||
Log.e("[Notification Broadcast Receiver] Couldn't find call from remote address $remoteSipAddress")
|
||||
|
|
|
@ -78,7 +78,7 @@ class LinphoneUtils {
|
|||
val remoteContact = call.remoteContact
|
||||
val conferenceAddress = if (call.dir == Call.Dir.Incoming) {
|
||||
if (remoteContact != null)
|
||||
coreContext.core.interpretUrl(remoteContact)
|
||||
coreContext.core.interpretUrl(remoteContact, false)
|
||||
else
|
||||
null
|
||||
} else {
|
||||
|
@ -234,5 +234,15 @@ class LinphoneUtils {
|
|||
|
||||
return list
|
||||
}
|
||||
|
||||
fun applyInternationalPrefix(): Boolean {
|
||||
val account = coreContext.core.defaultAccount
|
||||
if (account != null) {
|
||||
val params = account.params
|
||||
return params.useInternationalPrefixForCallsAndChats
|
||||
}
|
||||
|
||||
return true // Legacy behavior
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -225,8 +225,7 @@
|
|||
linphone:title="@{@string/account_settings_apply_prefix_for_calls_title}"
|
||||
linphone:subtitle="@{@string/account_settings_apply_prefix_for_calls_summary}"
|
||||
linphone:listener="@{viewModel.dialPrefixListener}"
|
||||
linphone:checked="@={viewModel.dialPrefix}"
|
||||
android:visibility="gone"/>
|
||||
linphone:checked="@={viewModel.dialPrefix}"/>
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_switch"
|
||||
|
|
Loading…
Reference in a new issue