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) {