diff options
author | Christian Schneppe <christian@pix-art.de> | 2019-02-09 14:34:49 +0100 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2019-02-09 14:34:49 +0100 |
commit | 7aa49998425b768244715b19c9779202c0145230 (patch) | |
tree | 9c26023bfe027ac232df19a8e041fdd15265e5b1 /src/main/java/de/pixart/messenger/entities | |
parent | 42c3129b66fe555c37fa67b6421230199cc64968 (diff) |
show web link previews in chat
fixes #113
Diffstat (limited to 'src/main/java/de/pixart/messenger/entities')
-rw-r--r-- | src/main/java/de/pixart/messenger/entities/Message.java | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/main/java/de/pixart/messenger/entities/Message.java b/src/main/java/de/pixart/messenger/entities/Message.java index ba44a10ae..178a8e425 100644 --- a/src/main/java/de/pixart/messenger/entities/Message.java +++ b/src/main/java/de/pixart/messenger/entities/Message.java @@ -5,6 +5,7 @@ import android.database.Cursor; import android.graphics.Color; import android.text.SpannableStringBuilder; import android.util.Log; +import android.webkit.URLUtil; import java.lang.ref.WeakReference; import java.net.MalformedURLException; @@ -14,15 +15,18 @@ import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; +import java.util.regex.Pattern; import de.pixart.messenger.Config; import de.pixart.messenger.crypto.axolotl.FingerprintStatus; import de.pixart.messenger.services.AvatarService; +import de.pixart.messenger.ui.util.MyLinkify; import de.pixart.messenger.utils.CryptoHelper; import de.pixart.messenger.utils.Emoticons; import de.pixart.messenger.utils.GeoHelper; import de.pixart.messenger.utils.MessageUtils; import de.pixart.messenger.utils.MimeUtils; +import de.pixart.messenger.utils.Patterns; import de.pixart.messenger.utils.UIHelper; import de.pixart.messenger.utils.XmppUri; import rocks.xmpp.addr.Jid; @@ -108,6 +112,7 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable private Boolean isGeoUri = null; private Boolean isXmppUri = null; + private Boolean isWebUri = null; private Boolean isEmojisOnly = null; private Boolean treatAsDownloadable = null; private FileParams fileParams = null; @@ -602,6 +607,7 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable this.getBody().length() + message.getBody().length() <= Config.MAX_DISPLAY_MESSAGE_CHARS && !message.isGeoUri()&& !this.isGeoUri() && + !this.isWebUri() && !message.treatAsDownloadable() && !this.treatAsDownloadable() && !message.getBody().startsWith(ME_COMMAND) && @@ -767,7 +773,7 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable public synchronized boolean isXmppUri() { if (isXmppUri == null) { - isXmppUri = XmppUri.isXmppUri(body.trim()); + isXmppUri = XmppUri.XMPP_URI.matcher(body).matches(); } return isXmppUri; } @@ -779,6 +785,14 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable return isGeoUri; } + public synchronized boolean isWebUri() { + String url = body.toLowerCase().trim(); + if (isWebUri == null) { + isWebUri = URLUtil.isValidUrl(url) && Patterns.WEB_URL.matcher(url).matches(); + } + return isWebUri; + } + public synchronized void resetFileParams() { this.fileParams = null; } |