From 15f7120590b5696a18459f67d03299891eaa1049 Mon Sep 17 00:00:00 2001 From: Juha Heinanen Date: Fri, 12 Feb 2021 12:06:32 +0200 Subject: [PATCH] Improved checking if URI belongs to a contact. --- .../kotlin/com/tutpro/baresip/ContactsActivity.kt | 11 ++++++++--- app/src/main/kotlin/com/tutpro/baresip/Utils.kt | 13 ++++++------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/app/src/main/kotlin/com/tutpro/baresip/ContactsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ContactsActivity.kt index df8d9ec8..4e9d4a7e 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ContactsActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ContactsActivity.kt @@ -109,10 +109,15 @@ class ContactsActivity : AppCompatActivity() { } fun contactName(uri: String): String { - for (c in Contact.contacts()) - if ((Utils.uriUserPart(c.uri) == Utils.uriUserPart(uri)) && - (Utils.uriHostPart(c.uri) == Utils.uriHostPart(uri))) + val uriUser = Utils.uriUserPart(uri) + val uriHost = Utils.uriHostPart(uri) + for (c in Contact.contacts()) { + val contactUser = Utils.uriUserPart(c.uri) + if ((contactUser == uriUser) && + (Utils.isE164Number(contactUser) || + (Utils.uriHostPart(c.uri) == uriHost))) return c.name + } return uri } } diff --git a/app/src/main/kotlin/com/tutpro/baresip/Utils.kt b/app/src/main/kotlin/com/tutpro/baresip/Utils.kt index 1a8a1c99..de946cb5 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/Utils.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/Utils.kt @@ -84,16 +84,15 @@ object Utils { var u = uri if (uri.startsWith("<") && (uri.endsWith(">"))) u = uri.substring(1).substringBeforeLast(">") - if (u.contains("@") && !u.substring(4).contains(":") && - !u.contains(";")) { + if (u.contains("@")) { val user = uriUserPart(u) val host = uriHostPart(u) - if (checkE164Number(user) || (host == domain)) - return user + return if (isE164Number(user) || (host == domain)) + user else - return "$user@$host" + "$user@$host" } else { - return uri + return u } } @@ -139,7 +138,7 @@ object Utils { return checkPort(pt[0]) && pt[1] in arrayOf("udp", "tcp", "tls") } - private fun checkE164Number(no: String): Boolean { + fun isE164Number(no: String): Boolean { return Regex("^[+][1-9][0-9]{0,14}\$").matches(no) }