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