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.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'
} }

View File

@ -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
}
} }
} }

View File

@ -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

View File

@ -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
}
} }
} }

View File

@ -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)) {

View File

@ -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) {