diff --git a/app/src/main/java/org/linphone/activities/main/chat/adapters/ChatMessagesListAdapter.kt b/app/src/main/java/org/linphone/activities/main/chat/adapters/ChatMessagesListAdapter.kt index 38a5de3f5..961d6af9e 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/adapters/ChatMessagesListAdapter.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/adapters/ChatMessagesListAdapter.kt @@ -124,7 +124,8 @@ class ChatMessagesListAdapter( ) return } - urlClickEvent.value = Event(url) + val urlWithScheme = if (!url.startsWith("http")) "http://$url" else url + urlClickEvent.value = Event(urlWithScheme) } override fun onSipAddressClicked(sipUri: String) { @@ -137,6 +138,17 @@ class ChatMessagesListAdapter( sipUriClickedEvent.value = Event(sipUri) } + override fun onEmailAddressClicked(email: String) { + if (popup?.isShowing == true) { + Log.w( + "[Chat Message Data] Long press that displayed context menu detected, aborting click on email address [$email]" + ) + return + } + val urlWithScheme = if (!email.startsWith("mailto:")) "mailto:$email" else email + urlClickEvent.value = Event(urlWithScheme) + } + override fun onCallConference(address: String, subject: String?) { callConferenceEvent.value = Event(Pair(address, subject)) } diff --git a/app/src/main/java/org/linphone/activities/main/chat/data/ChatMessageContentData.kt b/app/src/main/java/org/linphone/activities/main/chat/data/ChatMessageContentData.kt index c734d69cd..d97232dc0 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/data/ChatMessageContentData.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/data/ChatMessageContentData.kt @@ -515,6 +515,8 @@ interface OnContentClickedListener { fun onSipAddressClicked(sipUri: String) + fun onEmailAddressClicked(email: String) + fun onWebUrlClicked(url: String) fun onCallConference(address: String, subject: String?) diff --git a/app/src/main/java/org/linphone/activities/main/chat/data/ChatMessageData.kt b/app/src/main/java/org/linphone/activities/main/chat/data/ChatMessageData.kt index a70fbfd11..555a9afe7 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/data/ChatMessageData.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/data/ChatMessageData.kt @@ -218,7 +218,7 @@ class ChatMessageData(val chatMessage: ChatMessage) : GenericContactData(chatMes text.value = PatternClickableSpan() .add( Pattern.compile( - "(?:)?" + "(?:)?" ), object : PatternClickableSpan.SpannableClickedListener { override fun onSpanClicked(text: String) { @@ -227,6 +227,24 @@ class ChatMessageData(val chatMessage: ChatMessage) : GenericContactData(chatMes } } ) + .add( + Patterns.EMAIL_ADDRESS, + object : PatternClickableSpan.SpannableClickedListener { + override fun onSpanClicked(text: String) { + Log.i("[Chat Message Data] Clicked on email address: $text") + contentListener?.onEmailAddressClicked(text) + } + } + ) + .add( + Patterns.PHONE, + object : PatternClickableSpan.SpannableClickedListener { + override fun onSpanClicked(text: String) { + Log.i("[Chat Message Data] Clicked on phone number: $text") + contentListener?.onSipAddressClicked(text) + } + } + ) .add( Patterns.WEB_URL, object : PatternClickableSpan.SpannableClickedListener { @@ -235,15 +253,6 @@ class ChatMessageData(val chatMessage: ChatMessage) : GenericContactData(chatMes contentListener?.onWebUrlClicked(text) } } - ) - .add( - Patterns.PHONE, - object : PatternClickableSpan.SpannableClickedListener { - override fun onSpanClicked(text: String) { - Log.i("[Chat Message Data] Clicked on phone number: $text") - contentListener?.onSipAddressClicked(text) - } - } ).build(spannable) isTextEmoji.value = AppUtils.isTextOnlyContainingEmoji(textContent) } else {