From 2ebc92d0e6eaa4ce1cfa63780be5a8af9a3c41a6 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Tue, 16 Aug 2022 13:25:56 -0500 Subject: [PATCH 1/2] Show nicks for links in notifications and other message previews --- .../ui/adapter/MessageAdapter.java | 16 +------------ .../conversations/ui/util/MyLinkify.java | 24 +++++++++++++++++++ .../siacs/conversations/utils/UIHelper.java | 2 ++ 3 files changed, 27 insertions(+), 15 deletions(-) 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 12153206ce12f162fb8d9fb797956c14e77a4235..5a30d5be9e22d047370de30cf8814b273f204140 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -496,21 +496,7 @@ public class MessageAdapter extends ArrayAdapter { 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()); diff --git a/src/main/java/eu/siacs/conversations/ui/util/MyLinkify.java b/src/main/java/eu/siacs/conversations/ui/util/MyLinkify.java index b72c5aa864ab9dc9422cbcf0f29555a3a8be51a4..f48d7536742464d521b07a014422f2d813bcca8f 100644 --- a/src/main/java/eu/siacs/conversations/ui/util/MyLinkify.java +++ b/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 */ } + } + } + } } diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java index b3d19a28989edd8f7509313f29680754eeb547a1..578bb2c89af778fcdce6318832222aedc941f2dc 100644 --- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java +++ b/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) { From 6537387f718cfcb1560ce7f76d55a64f7ee5d7cd Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Tue, 16 Aug 2022 13:35:43 -0500 Subject: [PATCH 2/2] Get XMPP URI names from bookmarks as well --- .../java/eu/siacs/conversations/ui/util/MyLinkify.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/ui/util/MyLinkify.java b/src/main/java/eu/siacs/conversations/ui/util/MyLinkify.java index f48d7536742464d521b07a014422f2d813bcca8f..8ded49f1ddbd9f358cb342d5363bd46c87f96e60 100644 --- a/src/main/java/eu/siacs/conversations/ui/util/MyLinkify.java +++ b/src/main/java/eu/siacs/conversations/ui/util/MyLinkify.java @@ -38,7 +38,7 @@ 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.ListItem; import eu.siacs.conversations.entities.Roster; import eu.siacs.conversations.ui.text.FixedURLSpan; import eu.siacs.conversations.utils.GeoHelper; @@ -132,11 +132,13 @@ public class MyLinkify { Uri uri = Uri.parse(urlspan.getURL()); if ("xmpp".equals(uri.getScheme())) { try { - Contact contact = roster.getContact(Jid.of(uri.getSchemeSpecificPart())); + Jid jid = new XmppUri(uri).getJid(); + ListItem item = account.getBookmark(jid); + if (item == null) item = roster.getContact(jid); body.replace( body.getSpanStart(urlspan), body.getSpanEnd(urlspan), - contact.getDisplayName() + item.getDisplayName() ); } catch (final IllegalArgumentException e) { /* bad JID */ } }