aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/entities
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2019-02-09 14:34:49 +0100
committerChristian Schneppe <christian@pix-art.de>2019-02-09 14:34:49 +0100
commit7aa49998425b768244715b19c9779202c0145230 (patch)
tree9c26023bfe027ac232df19a8e041fdd15265e5b1 /src/main/java/de/pixart/messenger/entities
parent42c3129b66fe555c37fa67b6421230199cc64968 (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.java16
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;
}