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