aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/eu/siacs/conversations/entities/Message.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/eu/siacs/conversations/entities/Message.java')
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Message.java84
1 files changed, 59 insertions, 25 deletions
diff --git a/src/main/java/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java
index a390c7ca..8a83c465 100644
--- a/src/main/java/eu/siacs/conversations/entities/Message.java
+++ b/src/main/java/eu/siacs/conversations/entities/Message.java
@@ -5,9 +5,7 @@ import java.net.URL;
import java.util.Arrays;
import eu.siacs.conversations.Config;
-import eu.siacs.conversations.R;
import android.content.ContentValues;
-import android.content.Context;
import android.database.Cursor;
public class Message extends AbstractEntity {
@@ -18,7 +16,6 @@ public class Message extends AbstractEntity {
public static final int STATUS_UNSEND = 1;
public static final int STATUS_SEND = 2;
public static final int STATUS_SEND_FAILED = 3;
- public static final int STATUS_SEND_REJECTED = 4;
public static final int STATUS_WAITING = 5;
public static final int STATUS_OFFERED = 6;
public static final int STATUS_SEND_RECEIVED = 7;
@@ -145,19 +142,6 @@ public class Message extends AbstractEntity {
return body;
}
- public String getReadableBody(Context context) {
- if (encryption == ENCRYPTION_PGP) {
- return context.getText(R.string.encrypted_message_received)
- .toString();
- } else if (encryption == ENCRYPTION_DECRYPTION_FAILED) {
- return context.getText(R.string.decryption_failed).toString();
- } else if (type == TYPE_IMAGE) {
- return context.getText(R.string.image_file).toString();
- } else {
- return body.trim();
- }
- }
-
public long getTimeSent() {
return timeSent;
}
@@ -342,7 +326,9 @@ public class Message extends AbstractEntity {
.getStatus() == Message.STATUS_SEND_RECEIVED) && (message
.getStatus() == Message.STATUS_UNSEND
|| message.getStatus() == Message.STATUS_SEND || message
- .getStatus() == Message.STATUS_SEND_DISPLAYED)))));
+ .getStatus() == Message.STATUS_SEND_DISPLAYED))))
+ && !message.bodyContainsDownloadable()
+ && !this.bodyContainsDownloadable());
}
public String getMergedBody() {
@@ -379,13 +365,13 @@ public class Message extends AbstractEntity {
return prev.mergable(this);
}
}
+
+ public boolean trusted() {
+ Contact contact = this.getContact();
+ return (status > STATUS_RECEIVED || (contact != null && contact.trusted()));
+ }
public boolean bodyContainsDownloadable() {
- Contact contact = this.getContact();
- if (status <= STATUS_RECEIVED
- && (contact == null || !contact.trusted())) {
- return false;
- }
try {
URL url = new URL(this.getBody());
if (!url.getProtocol().equalsIgnoreCase("http")
@@ -396,7 +382,12 @@ public class Message extends AbstractEntity {
return false;
}
String[] pathParts = url.getPath().split("/");
- String filename = pathParts[pathParts.length - 1];
+ String filename;
+ if (pathParts.length > 0) {
+ filename = pathParts[pathParts.length - 1];
+ } else {
+ filename = pathParts[0];
+ }
String[] extensionParts = filename.split("\\.");
if (extensionParts.length == 2
&& Arrays.asList(Downloadable.VALID_EXTENSIONS).contains(
@@ -418,19 +409,28 @@ public class Message extends AbstractEntity {
}
public ImageParams getImageParams() {
- ImageParams params = new ImageParams();
+ ImageParams params = getLegacyImageParams();
+ if (params!=null) {
+ return params;
+ }
+ params = new ImageParams();
if (this.downloadable != null) {
params.size = this.downloadable.getFileSize();
}
if (body == null) {
return params;
}
- String parts[] = body.split(",");
+ String parts[] = body.split("\\|");
if (parts.length == 1) {
try {
params.size = Long.parseLong(parts[0]);
} catch (NumberFormatException e) {
params.origin = parts[0];
+ try {
+ params.url = new URL(parts[0]);
+ } catch (MalformedURLException e1) {
+ params.url = null;
+ }
}
} else if (parts.length == 3) {
try {
@@ -451,6 +451,11 @@ public class Message extends AbstractEntity {
} else if (parts.length == 4) {
params.origin = parts[0];
try {
+ params.url = new URL(parts[0]);
+ } catch (MalformedURLException e1) {
+ params.url = null;
+ }
+ try {
params.size = Long.parseLong(parts[1]);
} catch (NumberFormatException e) {
params.size = 0;
@@ -468,8 +473,37 @@ public class Message extends AbstractEntity {
}
return params;
}
+
+ public ImageParams getLegacyImageParams() {
+ ImageParams params = new ImageParams();
+ if (body == null) {
+ return params;
+ }
+ String parts[] = body.split(",");
+ if (parts.length == 3) {
+ try {
+ params.size = Long.parseLong(parts[0]);
+ } catch (NumberFormatException e) {
+ return null;
+ }
+ try {
+ params.width = Integer.parseInt(parts[1]);
+ } catch (NumberFormatException e) {
+ return null;
+ }
+ try {
+ params.height = Integer.parseInt(parts[2]);
+ } catch (NumberFormatException e) {
+ return null;
+ }
+ return params;
+ } else {
+ return null;
+ }
+ }
public class ImageParams {
+ public URL url;
public long size = 0;
public int width = 0;
public int height = 0;