From 14000d5178ab2ac5f34945ad19f25f3061e3f9e6 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Thu, 28 Oct 2021 21:22:44 -0500 Subject: [PATCH] Show contact name in an xmpp: link When rendering an xmpp: link, show not the raw URI, but the contact name (if there is one) or JID (if there is not). --- .../ui/adapter/MessageAdapter.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java index ccb40418a941d6e81c323d5865e022a624687e72..c23f935b1fbee07b68182411afdc13d6fdc0a6b6 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -6,6 +6,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.graphics.Typeface; +import android.net.Uri; import android.preference.PreferenceManager; import android.text.Spannable; import android.text.SpannableString; @@ -14,6 +15,7 @@ import android.text.format.DateUtils; import android.text.style.ForegroundColorSpan; import android.text.style.RelativeSizeSpan; import android.text.style.StyleSpan; +import android.text.style.URLSpan; import android.util.DisplayMetrics; import android.view.View; import android.view.ViewGroup; @@ -41,11 +43,13 @@ import eu.siacs.conversations.Config; import eu.siacs.conversations.R; import eu.siacs.conversations.crypto.axolotl.FingerprintStatus; import eu.siacs.conversations.entities.Account; +import eu.siacs.conversations.entities.Contact; import eu.siacs.conversations.entities.Conversation; import eu.siacs.conversations.entities.Conversational; import eu.siacs.conversations.entities.DownloadableFile; -import eu.siacs.conversations.entities.Message; import eu.siacs.conversations.entities.Message.FileParams; +import eu.siacs.conversations.entities.Message; +import eu.siacs.conversations.entities.Roster; import eu.siacs.conversations.entities.RtpSessionStatus; import eu.siacs.conversations.entities.Transferable; import eu.siacs.conversations.persistance.FileBackend; @@ -493,6 +497,18 @@ public class MessageAdapter extends ArrayAdapter { StylingHelper.highlight(activity, body, highlightedTerm, StylingHelper.isDarkText(viewHolder.messageBody)); } MyLinkify.addLinks(body, true); + Roster roster = message.getConversation().getAccount().getRoster(); + for (final URLSpan urlspan : body.getSpans(0, body.length() - 1, URLSpan.class)) { + Uri uri = Uri.parse(urlspan.getURL()); + if ("xmpp".equals(uri.getScheme())) { + Contact contact = roster.getContact(Jid.of(uri.getSchemeSpecificPart())); + body.replace( + body.getSpanStart(urlspan), + body.getSpanEnd(urlspan), + contact.getDisplayName() + ); + } + } viewHolder.messageBody.setAutoLinkMask(0); viewHolder.messageBody.setText(EmojiWrapper.transform(body)); viewHolder.messageBody.setMovementMethod(ClickableMovementMethod.getInstance());