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 80512b56583f17c4a864c8f588e6d60051a47db7..fccac2df083a1da874f4cd22a92823a1884e51c4 100644 --- a/src/main/java/eu/siacs/conversations/ui/util/MyLinkify.java +++ b/src/main/java/eu/siacs/conversations/ui/util/MyLinkify.java @@ -140,13 +140,14 @@ public class MyLinkify { Uri uri = Uri.parse(urlspan.getURL()); if ("xmpp".equals(uri.getScheme())) { try { - Jid jid = new XmppUri(uri).getJid(); + XmppUri xmppUri = new XmppUri(uri); + Jid jid = xmppUri.getJid(); ListItem item = account.getBookmark(jid); if (item == null) item = roster.getContact(jid); body.replace( body.getSpanStart(urlspan), body.getSpanEnd(urlspan), - item.getDisplayName() + item.getDisplayName() + xmppUri.parameterString() ); } catch (final IllegalArgumentException e) { /* bad JID */ } } diff --git a/src/main/java/eu/siacs/conversations/utils/XmppUri.java b/src/main/java/eu/siacs/conversations/utils/XmppUri.java index 6c3075be9b7ec1194d979d961c6bc3096aae76cf..9d7236ddf3d2a8f538745e401845829914610619 100644 --- a/src/main/java/eu/siacs/conversations/utils/XmppUri.java +++ b/src/main/java/eu/siacs/conversations/utils/XmppUri.java @@ -232,6 +232,19 @@ public class XmppUri { return this.parameters.get(key); } + public String parameterString() { + final StringBuilder s = new StringBuilder(); + for (Map.Entry param : parameters.entrySet()) { + if (param.getValue() == null || param.getValue().isEmpty()) continue; + + s.append(";"); + s.append(param.getKey()); + s.append("="); + s.append(param.getValue()); + } + return s.toString(); + } + public List getFingerprints() { return this.fingerprints; }