Improved contact name - uri matching

This commit is contained in:
Juha Heinanen
2022-02-14 09:54:33 +02:00
parent 80d254765c
commit 2fb842d631
6 changed files with 35 additions and 19 deletions

View File

@ -64,5 +64,5 @@ dependencies {
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
implementation "androidx.activity:activity-ktx:1.4.0"
implementation "androidx.fragment:fragment-ktx:1.4.1"
implementation 'androidx.media:media:1.4.3'
implementation 'androidx.media:media:1.5.0'
}

View File

@ -207,6 +207,21 @@ class AndroidContactsActivity : AppCompatActivity() {
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
}
}
}

View File

@ -123,7 +123,7 @@ class ChatsActivity: AppCompatActivity() {
plusButton.setOnClickListener {
val uriText = peerUri.text.toString().trim()
if (uriText.isNotEmpty()) {
val contactUri = ContactsActivity.findContactUri(uriText)
val contactUri = Utils.contactUri(uriText)
val uri = if (contactUri == null)
Utils.uriComplete(uriText, Utils.aorDomain(aor))
else

View File

@ -107,7 +107,8 @@ class ContactsActivity : AppCompatActivity() {
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())
if (c.name.equals(name, ignoreCase = true))
return c.uri.removePrefix("<")
@ -116,6 +117,15 @@ class ContactsActivity : AppCompatActivity() {
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? {
for (c in Contact.contacts()) {
if (Utils.uriMatch(c.uri, uri))
@ -130,14 +140,5 @@ class ContactsActivity : AppCompatActivity() {
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
}
}
}

View File

@ -1414,7 +1414,7 @@ class MainActivity : AppCompatActivity() {
dialog.dismiss()
var uriText = transferUri.text.toString().trim()
if (uriText.isNotEmpty()) {
uriText = ContactsActivity.findContactUri(uriText) ?: uriText
uriText = Utils.contactUri(uriText) ?: uriText
if (Utils.isTelNumber(uriText))
uriText = "tel:$uriText"
val uri = if (Utils.isTelUri(uriText))
@ -1702,7 +1702,7 @@ class MainActivity : AppCompatActivity() {
if (Call.calls().isEmpty()) {
var uriText = callUri.text.toString().trim()
if (uriText.isNotEmpty()) {
uriText = ContactsActivity.findContactUri(uriText) ?: uriText
uriText = Utils.contactUri(uriText) ?: uriText
if (Utils.isTelNumber(uriText))
uriText = "tel:$uriText"
val uri = if (Utils.isTelUri(uriText)) {

View File

@ -321,11 +321,11 @@ object Utils {
}
fun contactName(uri: String) : String {
val name = ContactsActivity.contactName(uri)
return if (name != uri)
name
else
AndroidContactsActivity.contactName(uri)
return ContactsActivity.contactName(uri) ?: AndroidContactsActivity.contactName(uri)
}
fun contactUri(name: String) : String? {
return ContactsActivity.contactUri(name) ?: AndroidContactsActivity.contactUri(name)
}
fun setAvatar(ctx: Context, imageView: ImageView, textView: TextView, uri: String) {