Improved contact name - uri matching
This commit is contained in:
@ -64,5 +64,5 @@ dependencies {
|
|||||||
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
|
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
|
||||||
implementation "androidx.activity:activity-ktx:1.4.0"
|
implementation "androidx.activity:activity-ktx:1.4.0"
|
||||||
implementation "androidx.fragment:fragment-ktx:1.4.1"
|
implementation "androidx.fragment:fragment-ktx:1.4.1"
|
||||||
implementation 'androidx.media:media:1.4.3'
|
implementation 'androidx.media:media:1.5.0'
|
||||||
}
|
}
|
||||||
|
|||||||
@ -207,6 +207,21 @@ class AndroidContactsActivity : AppCompatActivity() {
|
|||||||
findContact(uri)?.name ?: uri
|
findContact(uri)?.name ?: uri
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Return first sip (preferred) or tel uri of contact name or
|
||||||
|
// null if contact is not found or if it has no uris
|
||||||
|
fun contactUri(name: String): String? {
|
||||||
|
for (c in BaresipService.androidContacts)
|
||||||
|
if (c.name == name) {
|
||||||
|
if (c.uris.isNotEmpty()) {
|
||||||
|
for (u in c.uris)
|
||||||
|
if (u.startsWith("sip:"))
|
||||||
|
return u
|
||||||
|
return c.uris.first()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -123,7 +123,7 @@ class ChatsActivity: AppCompatActivity() {
|
|||||||
plusButton.setOnClickListener {
|
plusButton.setOnClickListener {
|
||||||
val uriText = peerUri.text.toString().trim()
|
val uriText = peerUri.text.toString().trim()
|
||||||
if (uriText.isNotEmpty()) {
|
if (uriText.isNotEmpty()) {
|
||||||
val contactUri = ContactsActivity.findContactUri(uriText)
|
val contactUri = Utils.contactUri(uriText)
|
||||||
val uri = if (contactUri == null)
|
val uri = if (contactUri == null)
|
||||||
Utils.uriComplete(uriText, Utils.aorDomain(aor))
|
Utils.uriComplete(uriText, Utils.aorDomain(aor))
|
||||||
else
|
else
|
||||||
|
|||||||
@ -107,7 +107,8 @@ class ContactsActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
fun findContactUri(name: String): String? {
|
// Return uri of contact name or null if contact is not found
|
||||||
|
fun contactUri(name: String): String? {
|
||||||
for (c in Contact.contacts())
|
for (c in Contact.contacts())
|
||||||
if (c.name.equals(name, ignoreCase = true))
|
if (c.name.equals(name, ignoreCase = true))
|
||||||
return c.uri.removePrefix("<")
|
return c.uri.removePrefix("<")
|
||||||
@ -116,6 +117,15 @@ class ContactsActivity : AppCompatActivity() {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Return contact name of uri or null if contact with uri is not found
|
||||||
|
fun contactName(uri: String): String? {
|
||||||
|
val userPart = Utils.uriUserPart(uri)
|
||||||
|
return if (Utils.isTelNumber(userPart))
|
||||||
|
findContact("tel:$userPart")?.name
|
||||||
|
else
|
||||||
|
findContact(uri)?.name
|
||||||
|
}
|
||||||
|
|
||||||
fun findContact(uri: String): Contact? {
|
fun findContact(uri: String): Contact? {
|
||||||
for (c in Contact.contacts()) {
|
for (c in Contact.contacts()) {
|
||||||
if (Utils.uriMatch(c.uri, uri))
|
if (Utils.uriMatch(c.uri, uri))
|
||||||
@ -130,14 +140,5 @@ class ContactsActivity : AppCompatActivity() {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return contact name of uri or uri itself if contact with uri is not found
|
|
||||||
fun contactName(uri: String): String {
|
|
||||||
val userPart = Utils.uriUserPart(uri)
|
|
||||||
return if (Utils.isTelNumber(userPart))
|
|
||||||
findContact("tel:$userPart")?.name ?: uri
|
|
||||||
else
|
|
||||||
findContact(uri)?.name ?: uri
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1414,7 +1414,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
dialog.dismiss()
|
dialog.dismiss()
|
||||||
var uriText = transferUri.text.toString().trim()
|
var uriText = transferUri.text.toString().trim()
|
||||||
if (uriText.isNotEmpty()) {
|
if (uriText.isNotEmpty()) {
|
||||||
uriText = ContactsActivity.findContactUri(uriText) ?: uriText
|
uriText = Utils.contactUri(uriText) ?: uriText
|
||||||
if (Utils.isTelNumber(uriText))
|
if (Utils.isTelNumber(uriText))
|
||||||
uriText = "tel:$uriText"
|
uriText = "tel:$uriText"
|
||||||
val uri = if (Utils.isTelUri(uriText))
|
val uri = if (Utils.isTelUri(uriText))
|
||||||
@ -1702,7 +1702,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
if (Call.calls().isEmpty()) {
|
if (Call.calls().isEmpty()) {
|
||||||
var uriText = callUri.text.toString().trim()
|
var uriText = callUri.text.toString().trim()
|
||||||
if (uriText.isNotEmpty()) {
|
if (uriText.isNotEmpty()) {
|
||||||
uriText = ContactsActivity.findContactUri(uriText) ?: uriText
|
uriText = Utils.contactUri(uriText) ?: uriText
|
||||||
if (Utils.isTelNumber(uriText))
|
if (Utils.isTelNumber(uriText))
|
||||||
uriText = "tel:$uriText"
|
uriText = "tel:$uriText"
|
||||||
val uri = if (Utils.isTelUri(uriText)) {
|
val uri = if (Utils.isTelUri(uriText)) {
|
||||||
|
|||||||
@ -321,11 +321,11 @@ object Utils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun contactName(uri: String) : String {
|
fun contactName(uri: String) : String {
|
||||||
val name = ContactsActivity.contactName(uri)
|
return ContactsActivity.contactName(uri) ?: AndroidContactsActivity.contactName(uri)
|
||||||
return if (name != uri)
|
}
|
||||||
name
|
|
||||||
else
|
fun contactUri(name: String) : String? {
|
||||||
AndroidContactsActivity.contactName(uri)
|
return ContactsActivity.contactUri(name) ?: AndroidContactsActivity.contactUri(name)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setAvatar(ctx: Context, imageView: ImageView, textView: TextView, uri: String) {
|
fun setAvatar(ctx: Context, imageView: ImageView, textView: TextView, uri: String) {
|
||||||
|
|||||||
Reference in New Issue
Block a user