Show nicks for links in notifications and other message previews

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java | 16 
src/main/java/eu/siacs/conversations/ui/util/MyLinkify.java         | 24 
src/main/java/eu/siacs/conversations/utils/UIHelper.java            |  2 
3 files changed, 27 insertions(+), 15 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java 🔗

@@ -496,21 +496,7 @@ public class MessageAdapter extends ArrayAdapter<Message> {
             if (highlightedTerm != null) {
                 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())) {
-                    try {
-                        Contact contact = roster.getContact(Jid.of(uri.getSchemeSpecificPart()));
-                        body.replace(
-                            body.getSpanStart(urlspan),
-                            body.getSpanEnd(urlspan),
-                            contact.getDisplayName()
-                        );
-                    } catch (final IllegalArgumentException e) { /* bad JID */ }
-                }
-            }
+            MyLinkify.addLinks(body, message.getConversation().getAccount());
             viewHolder.messageBody.setAutoLinkMask(0);
             viewHolder.messageBody.setText(body);
             viewHolder.messageBody.setMovementMethod(ClickableMovementMethod.getInstance());

src/main/java/eu/siacs/conversations/ui/util/MyLinkify.java 🔗

@@ -29,16 +29,22 @@
 
 package eu.siacs.conversations.ui.util;
 
+import android.net.Uri;
 import android.os.Build;
 import android.text.Editable;
+import android.text.style.URLSpan;
 import android.text.util.Linkify;
 
 import java.util.Locale;
 
+import eu.siacs.conversations.entities.Account;
+import eu.siacs.conversations.entities.Contact;
+import eu.siacs.conversations.entities.Roster;
 import eu.siacs.conversations.ui.text.FixedURLSpan;
 import eu.siacs.conversations.utils.GeoHelper;
 import eu.siacs.conversations.utils.Patterns;
 import eu.siacs.conversations.utils.XmppUri;
+import eu.siacs.conversations.xmpp.Jid;
 
 public class MyLinkify {
 
@@ -118,4 +124,22 @@ public class MyLinkify {
         }
         FixedURLSpan.fix(body);
     }
+
+    public static void addLinks(Editable body, Account account) {
+        addLinks(body, true);
+        Roster roster = account.getRoster();
+        for (final URLSpan urlspan : body.getSpans(0, body.length() - 1, URLSpan.class)) {
+            Uri uri = Uri.parse(urlspan.getURL());
+            if ("xmpp".equals(uri.getScheme())) {
+                try {
+                    Contact contact = roster.getContact(Jid.of(uri.getSchemeSpecificPart()));
+                    body.replace(
+                        body.getSpanStart(urlspan),
+                        body.getSpanEnd(urlspan),
+                        contact.getDisplayName()
+                    );
+                } catch (final IllegalArgumentException e) { /* bad JID */ }
+            }
+        }
+    }
 }

src/main/java/eu/siacs/conversations/utils/UIHelper.java 🔗

@@ -32,6 +32,7 @@ import eu.siacs.conversations.entities.Presence;
 import eu.siacs.conversations.entities.RtpSessionStatus;
 import eu.siacs.conversations.entities.Transferable;
 import eu.siacs.conversations.services.ExportBackupService;
+import eu.siacs.conversations.ui.util.MyLinkify;
 import eu.siacs.conversations.ui.util.QuoteHelper;
 import eu.siacs.conversations.xmpp.Jid;
 
@@ -322,6 +323,7 @@ public class UIHelper {
                 if (textColor != 0) {
                     StylingHelper.format(styledBody, 0, styledBody.length() - 1, textColor);
                 }
+                MyLinkify.addLinks(styledBody, message.getConversation().getAccount());
                 SpannableStringBuilder builder = new SpannableStringBuilder();
                 for (CharSequence l : CharSequenceUtils.split(styledBody, '\n')) {
                     if (l.length() > 0) {