Improved checking if URI belongs to a contact.

This commit is contained in:
Juha Heinanen
2021-02-12 12:06:32 +02:00
parent 7b2821d82a
commit 15f7120590
2 changed files with 14 additions and 10 deletions
@@ -109,10 +109,15 @@ class ContactsActivity : AppCompatActivity() {
} }
fun contactName(uri: String): String { fun contactName(uri: String): String {
for (c in Contact.contacts()) val uriUser = Utils.uriUserPart(uri)
if ((Utils.uriUserPart(c.uri) == Utils.uriUserPart(uri)) && val uriHost = Utils.uriHostPart(uri)
(Utils.uriHostPart(c.uri) == 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 c.name
}
return uri return uri
} }
} }
@@ -84,16 +84,15 @@ object Utils {
var u = uri var u = uri
if (uri.startsWith("<") && (uri.endsWith(">"))) if (uri.startsWith("<") && (uri.endsWith(">")))
u = uri.substring(1).substringBeforeLast(">") u = uri.substring(1).substringBeforeLast(">")
if (u.contains("@") && !u.substring(4).contains(":") && if (u.contains("@")) {
!u.contains(";")) {
val user = uriUserPart(u) val user = uriUserPart(u)
val host = uriHostPart(u) val host = uriHostPart(u)
if (checkE164Number(user) || (host == domain)) return if (isE164Number(user) || (host == domain))
return user user
else else
return "$user@$host" "$user@$host"
} else { } else {
return uri return u
} }
} }
@@ -139,7 +138,7 @@ object Utils {
return checkPort(pt[0]) && pt[1] in arrayOf("udp", "tcp", "tls") 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) return Regex("^[+][1-9][0-9]{0,14}\$").matches(no)
} }