Show params still for nice xmpp uri links

Stephen Paul Weber created

Since params can cause different behaviours and you don't want to be tricked
into clicking on one that will do something.

Change summary

src/main/java/eu/siacs/conversations/ui/util/MyLinkify.java |  5 +-
src/main/java/eu/siacs/conversations/utils/XmppUri.java     | 13 +++++++
2 files changed, 16 insertions(+), 2 deletions(-)

Detailed changes

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 */ }
             }

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<String, String> 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<Fingerprint> getFingerprints() {
         return this.fingerprints;
     }