Added "Block Hidden" account setting
This commit is contained in:
@ -31,6 +31,7 @@ class Account(val accp: Long, virtualAor: String? = null) {
|
|||||||
var answerMode = if (accp != 0L) Api.account_answermode(accp) else Api.ANSWERMODE_MANUAL
|
var answerMode = if (accp != 0L) Api.account_answermode(accp) else Api.ANSWERMODE_MANUAL
|
||||||
var autoRedirect = if (accp != 0L) Api.account_sip_autoredirect(accp) else false
|
var autoRedirect = if (accp != 0L) Api.account_sip_autoredirect(accp) else false
|
||||||
var blockUnknown = false
|
var blockUnknown = false
|
||||||
|
var blockHidden = false
|
||||||
var vmUri = if (accp != 0L) Api.account_vm_uri(accp) else ""
|
var vmUri = if (accp != 0L) Api.account_vm_uri(accp) else ""
|
||||||
var vmNew = 0
|
var vmNew = 0
|
||||||
var vmOld = 0
|
var vmOld = 0
|
||||||
@ -79,6 +80,7 @@ class Account(val accp: Long, virtualAor: String? = null) {
|
|||||||
configuredRegInt = Utils.paramValue(extra, "regint").toInt()
|
configuredRegInt = Utils.paramValue(extra, "regint").toInt()
|
||||||
callHistory = Utils.paramValue(extra, "call_history") == ""
|
callHistory = Utils.paramValue(extra, "call_history") == ""
|
||||||
blockUnknown = Utils.paramExists(extra, "block_unknown")
|
blockUnknown = Utils.paramExists(extra, "block_unknown")
|
||||||
|
blockHidden = Utils.paramExists(extra, "block_hidden")
|
||||||
if (Utils.paramExists(extra, "country_code"))
|
if (Utils.paramExists(extra, "country_code"))
|
||||||
countryCode = Utils.paramValue(extra, "country_code")
|
countryCode = Utils.paramValue(extra, "country_code")
|
||||||
if (Utils.paramExists(extra, "tel_provider"))
|
if (Utils.paramExists(extra, "tel_provider"))
|
||||||
@ -182,6 +184,9 @@ class Account(val accp: Long, virtualAor: String? = null) {
|
|||||||
if (blockUnknown)
|
if (blockUnknown)
|
||||||
extra += ";block_unknown=yes"
|
extra += ";block_unknown=yes"
|
||||||
|
|
||||||
|
if (blockHidden)
|
||||||
|
extra += ";block_hidden=yes"
|
||||||
|
|
||||||
if (telProvider != "")
|
if (telProvider != "")
|
||||||
extra += ";tel_provider=${URLEncoder.encode(telProvider, "UTF-8")}"
|
extra += ";tel_provider=${URLEncoder.encode(telProvider, "UTF-8")}"
|
||||||
|
|
||||||
|
|||||||
@ -646,6 +646,33 @@ private fun AccountContent(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun BlockHidden() {
|
||||||
|
val blockHiddenTitle = stringResource(R.string.block_hidden)
|
||||||
|
val blockHiddenHelp = stringResource(R.string.block_hidden_help)
|
||||||
|
val block by viewModel.blockHidden.collectAsState()
|
||||||
|
Row(
|
||||||
|
Modifier.fillMaxWidth().padding(end = 10.dp),
|
||||||
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
|
horizontalArrangement = Arrangement.Start
|
||||||
|
) {
|
||||||
|
Text(text = blockHiddenTitle,
|
||||||
|
modifier = Modifier
|
||||||
|
.weight(1f)
|
||||||
|
.clickable {
|
||||||
|
alertTitle.value = blockHiddenTitle
|
||||||
|
alertMessage.value = blockHiddenHelp
|
||||||
|
showAlert.value = true
|
||||||
|
},
|
||||||
|
fontSize = 18.sp
|
||||||
|
)
|
||||||
|
Switch(
|
||||||
|
checked = block,
|
||||||
|
onCheckedChange = { viewModel.blockHidden.value = it }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun AudioCodecs(navController: NavController, aor: String) {
|
fun AudioCodecs(navController: NavController, aor: String) {
|
||||||
Row(
|
Row(
|
||||||
@ -1333,6 +1360,7 @@ private fun AccountContent(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
BlockUnknown()
|
BlockUnknown()
|
||||||
|
BlockHidden()
|
||||||
if (!ua.account.isMobile) {
|
if (!ua.account.isMobile) {
|
||||||
AudioCodecs(navController, aor)
|
AudioCodecs(navController, aor)
|
||||||
MediaEnc()
|
MediaEnc()
|
||||||
@ -1673,6 +1701,12 @@ private fun checkOnClick(ctx: Context, viewModel: AccountViewModel, ua: UserAgen
|
|||||||
Log.d(TAG, "New blockUnknown is ${acc.blockUnknown}")
|
Log.d(TAG, "New blockUnknown is ${acc.blockUnknown}")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val newBlockHidden = viewModel.blockHidden.value
|
||||||
|
if (newBlockHidden != acc.blockHidden) {
|
||||||
|
acc.blockHidden = newBlockHidden
|
||||||
|
Log.d(TAG, "New blockHidden is ${acc.blockHidden}")
|
||||||
|
}
|
||||||
|
|
||||||
var newVmUri = viewModel.vmUri.value.trim()
|
var newVmUri = viewModel.vmUri.value.trim()
|
||||||
if (newVmUri != acc.vmUri) {
|
if (newVmUri != acc.vmUri) {
|
||||||
if (newVmUri != "") {
|
if (newVmUri != "") {
|
||||||
|
|||||||
@ -25,6 +25,7 @@ class AccountViewModel: ViewModel() {
|
|||||||
val answerMode = MutableStateFlow(0)
|
val answerMode = MutableStateFlow(0)
|
||||||
val autoRedirect = MutableStateFlow(false)
|
val autoRedirect = MutableStateFlow(false)
|
||||||
val blockUnknown = MutableStateFlow(false)
|
val blockUnknown = MutableStateFlow(false)
|
||||||
|
val blockHidden = MutableStateFlow(false)
|
||||||
val vmUri = MutableStateFlow("")
|
val vmUri = MutableStateFlow("")
|
||||||
val countryCode = MutableStateFlow("")
|
val countryCode = MutableStateFlow("")
|
||||||
val telProvider = MutableStateFlow("")
|
val telProvider = MutableStateFlow("")
|
||||||
@ -60,6 +61,7 @@ class AccountViewModel: ViewModel() {
|
|||||||
answerMode.value = acc.answerMode
|
answerMode.value = acc.answerMode
|
||||||
autoRedirect.value = acc.autoRedirect
|
autoRedirect.value = acc.autoRedirect
|
||||||
blockUnknown.value = acc.blockUnknown
|
blockUnknown.value = acc.blockUnknown
|
||||||
|
blockHidden.value = acc.blockHidden
|
||||||
vmUri.value = acc.vmUri
|
vmUri.value = acc.vmUri
|
||||||
countryCode.value = acc.countryCode
|
countryCode.value = acc.countryCode
|
||||||
telProvider.value = acc.telProvider
|
telProvider.value = acc.telProvider
|
||||||
|
|||||||
@ -960,6 +960,8 @@ class BaresipService: Service() {
|
|||||||
getString(R.string.call_blocked),
|
getString(R.string.call_blocked),
|
||||||
Utils.friendlyUri(this, peerUri, ua.account)
|
Utils.friendlyUri(this, peerUri, ua.account)
|
||||||
)
|
)
|
||||||
|
else if (ua.account.blockHidden && peerUri.contains("anonymous"))
|
||||||
|
getString(R.string.hidden_call_blocked)
|
||||||
else if (!Utils.checkPermissions(this, arrayOf(RECORD_AUDIO)))
|
else if (!Utils.checkPermissions(this, arrayOf(RECORD_AUDIO)))
|
||||||
getString(R.string.no_calls)
|
getString(R.string.no_calls)
|
||||||
else
|
else
|
||||||
@ -969,7 +971,8 @@ class BaresipService: Service() {
|
|||||||
Api.sip_treply(callp, 486, "Busy Here")
|
Api.sip_treply(callp, 486, "Busy Here")
|
||||||
Api.bevent_stop(ev[2].toLong())
|
Api.bevent_stop(ev[2].toLong())
|
||||||
toast(toastMsg)
|
toast(toastMsg)
|
||||||
if (toastMsg.contains(getString(R.string.call_blocked))) {
|
if (toastMsg.contains(getString(R.string.call_blocked)) ||
|
||||||
|
toastMsg.contains(getString(R.string.hidden_call_blocked))) {
|
||||||
if (ua.account.callHistory)
|
if (ua.account.callHistory)
|
||||||
Blocked(
|
Blocked(
|
||||||
ua.account.aor,
|
ua.account.aor,
|
||||||
@ -1372,7 +1375,10 @@ class BaresipService: Service() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ua.account.blockUnknown && Contact.contactName(peerUri) == peerUri) {
|
val blockedHidden = ua.account.blockHidden && peerUri.contains("anonymous")
|
||||||
|
val blockedUnknown = ua.account.blockUnknown && Contact.contactName(peerUri) == peerUri
|
||||||
|
|
||||||
|
if (blockedHidden || blockedUnknown) {
|
||||||
Log.d(TAG, "Auto-rejecting incoming message by $uap from $peerUri")
|
Log.d(TAG, "Auto-rejecting incoming message by $uap from $peerUri")
|
||||||
Blocked(
|
Blocked(
|
||||||
ua.account.aor,
|
ua.account.aor,
|
||||||
@ -1380,13 +1386,14 @@ class BaresipService: Service() {
|
|||||||
"message",
|
"message",
|
||||||
GregorianCalendar().timeInMillis
|
GregorianCalendar().timeInMillis
|
||||||
).add()
|
).add()
|
||||||
toast(String.format(
|
toast(if (blockedHidden)
|
||||||
|
getString(R.string.hidden_message_blocked)
|
||||||
|
else
|
||||||
|
String.format(
|
||||||
getString(R.string.message_blocked),
|
getString(R.string.message_blocked),
|
||||||
Utils.friendlyUri(this, peerUri, ua.account)
|
Utils.friendlyUri(this, peerUri, ua.account)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
// Api.sip_treply(callp, 486, "Busy Here")
|
|
||||||
// Api.bevent_stop(bevent)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1968,6 +1975,23 @@ class BaresipService: Service() {
|
|||||||
|
|
||||||
if (isIncoming) {
|
if (isIncoming) {
|
||||||
val e164Uri = e164Uri(uri, ua.account.countryCode)
|
val e164Uri = e164Uri(uri, ua.account.countryCode)
|
||||||
|
val presentation = telecomCall.details.handlePresentation
|
||||||
|
if (ua.account.blockHidden &&
|
||||||
|
(presentation == TelecomManager.PRESENTATION_RESTRICTED ||
|
||||||
|
presentation == TelecomManager.PRESENTATION_UNKNOWN)) {
|
||||||
|
Log.d(TAG, "Auto-rejecting incoming PSTN hidden call")
|
||||||
|
telecomCall.disconnect()
|
||||||
|
toast(getString(R.string.hidden_call_blocked))
|
||||||
|
if (ua.account.callHistory) {
|
||||||
|
Blocked(
|
||||||
|
ua.account.aor,
|
||||||
|
uri,
|
||||||
|
"invite",
|
||||||
|
GregorianCalendar().timeInMillis
|
||||||
|
).add()
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
if (ua.account.blockUnknown && Contact.contactName(e164Uri) == e164Uri) {
|
if (ua.account.blockUnknown && Contact.contactName(e164Uri) == e164Uri) {
|
||||||
Log.d(TAG, "Auto-rejecting incoming PSTN call from $uri")
|
Log.d(TAG, "Auto-rejecting incoming PSTN call from $uri")
|
||||||
telecomCall.disconnect()
|
telecomCall.disconnect()
|
||||||
|
|||||||
@ -211,11 +211,13 @@
|
|||||||
<string name="dtmf_info">SIP INFO -pyyntö</string>
|
<string name="dtmf_info">SIP INFO -pyyntö</string>
|
||||||
<string name="dtmf_auto">RTP tai SIP INFO</string>
|
<string name="dtmf_auto">RTP tai SIP INFO</string>
|
||||||
<string name="answer_mode">Vastaustapa</string>
|
<string name="answer_mode">Vastaustapa</string>
|
||||||
<string name="answer_mode_help">Valitsee tulevien puheluiden vastaustavan.</string>
|
<string name="answer_mode_help">Valitsee tulevien puheluiden vastaustavan</string>
|
||||||
<string name="manual">Manuaalinen</string>
|
<string name="manual">Manuaalinen</string>
|
||||||
<string name="auto">Automaattinen</string>
|
<string name="auto">Automaattinen</string>
|
||||||
<string name="block_unknown">Estä tuntemattomat</string>
|
<string name="block_unknown">Estä vieraat</string>
|
||||||
<string name="block_unknown_help">Estä puhelut ja viestit, joiden lähdettä ei löydy yhteystiedoista.</string>
|
<string name="block_unknown_help">Estä puhelut ja viestit, joiden lähdettä ei löydy yhteystiedoista.</string>
|
||||||
|
<string name="block_hidden">Estä tuntemattomat</string>
|
||||||
|
<string name="block_hidden_help">Estä puhelut ja viestit, joiden lähde on tuntematon.</string>
|
||||||
<string name="redirect_mode">Uudelleenohjaustapa</string>
|
<string name="redirect_mode">Uudelleenohjaustapa</string>
|
||||||
<string name="redirect_mode_help">Valitsee toteutetaanko puhelun uudelleenohjauspyyntö
|
<string name="redirect_mode_help">Valitsee toteutetaanko puhelun uudelleenohjauspyyntö
|
||||||
automaattisesti vai kysytäänkö vahvistusta.</string>
|
automaattisesti vai kysytäänkö vahvistusta.</string>
|
||||||
@ -273,8 +275,10 @@
|
|||||||
<string name="missed_calls_count">%1$d vastaamatonta puhelua</string>
|
<string name="missed_calls_count">%1$d vastaamatonta puhelua</string>
|
||||||
<string name="transfer_request_to">Puhelun siirtopyyntö kohteeseen</string>
|
<string name="transfer_request_to">Puhelun siirtopyyntö kohteeseen</string>
|
||||||
<string name="call_auto_rejected">Automaattisesti hylätty puhelu soittajalta \`%1$s\`</string>
|
<string name="call_auto_rejected">Automaattisesti hylätty puhelu soittajalta \`%1$s\`</string>
|
||||||
<string name="call_blocked">Estetty puhelu hylätty soittajalta \`%1$s\`</string>
|
<string name="call_blocked">Estetty puhelu vieraalta soittajalta \`%1$s\`</string>
|
||||||
<string name="message_blocked">Estetty viesti hylätty lähettäjältä \`%1$s\`</string>
|
<string name="hidden_call_blocked">Estetty puhelu tuntemattomalta soittajalta</string>
|
||||||
|
<string name="message_blocked">Estetty viesti vieraalta lähettäjältä \`%1$s\`</string>
|
||||||
|
<string name="hidden_message_blocked">Estetty viesti tuntemattomalta lähettäjältä</string>
|
||||||
<!-- Blocked Activity -->
|
<!-- Blocked Activity -->
|
||||||
<string name="blocked">Estetyt</string>
|
<string name="blocked">Estetyt</string>
|
||||||
<string name="blocked_calls">Estetyt puhelut</string>
|
<string name="blocked_calls">Estetyt puhelut</string>
|
||||||
|
|||||||
@ -213,8 +213,10 @@
|
|||||||
if confirmation is requested.</string>
|
if confirmation is requested.</string>
|
||||||
<string name="manual">Manual</string>
|
<string name="manual">Manual</string>
|
||||||
<string name="auto">Automatic</string>
|
<string name="auto">Automatic</string>
|
||||||
<string name="block_unknown">Block Unknown</string>
|
<string name="block_unknown">Block Strangers</string>
|
||||||
<string name="block_unknown_help">Block calls and messages from peers that are not found in contacts.</string>
|
<string name="block_unknown_help">Block calls and messages from peers that are not found in contacts.</string>
|
||||||
|
<string name="block_hidden">Block Hidden</string>
|
||||||
|
<string name="block_hidden_help">Block calls and messages from peers with hidden identification.</string>
|
||||||
<string name="voicemail_uri">Voicemail URI</string>
|
<string name="voicemail_uri">Voicemail URI</string>
|
||||||
<string name="voicemain_uri_help">SIP URI for checking of voicemail messages. If left empty, voicemail
|
<string name="voicemain_uri_help">SIP URI for checking of voicemail messages. If left empty, voicemail
|
||||||
messages (Message Waiting Indications) are not subscribed to.
|
messages (Message Waiting Indications) are not subscribed to.
|
||||||
@ -266,7 +268,9 @@
|
|||||||
<string name="transfer_request_to">Call transfer request to</string>
|
<string name="transfer_request_to">Call transfer request to</string>
|
||||||
<string name="call_auto_rejected">Auto-rejected call from \`%1$s\`</string>
|
<string name="call_auto_rejected">Auto-rejected call from \`%1$s\`</string>
|
||||||
<string name="call_blocked">Auto-rejected blocked call from \`%1$s\`</string>
|
<string name="call_blocked">Auto-rejected blocked call from \`%1$s\`</string>
|
||||||
|
<string name="hidden_call_blocked">Auto-rejected hidden call</string>
|
||||||
<string name="message_blocked">Auto-rejected blocked message from \`%1$s\`</string>
|
<string name="message_blocked">Auto-rejected blocked message from \`%1$s\`</string>
|
||||||
|
<string name="hidden_message_blocked">Auto-rejected hidden message</string>
|
||||||
<!-- Blocked Activity -->
|
<!-- Blocked Activity -->
|
||||||
<string name="blocked">Blocked</string>
|
<string name="blocked">Blocked</string>
|
||||||
<string name="blocked_calls">Blocked Calls</string>
|
<string name="blocked_calls">Blocked Calls</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user