mirror of
https://github.com/oxen-io/session-android.git
synced 2024-11-25 02:55:23 +00:00
7c47ea5cec
1) We now delay MMS notifications until a payload is received, or there's an error downloading the payload. This makes group messages more consistent. 2) All "text" parts of an MMS are combined into a second text record, which is stored in the MMS row directly rather than as a distinct part. This allows for immediate text loading, which means there's no chance a ConversationItem will resize. To do this, we need to include MMS in the big DB migration that's already staged for this application update. It's also an "application-level" migration, because we need the MasterSecret to do it. 3) On conversation display, all image-based parts now have their thumbnails loaded asynchronously. This allows for smooth-scrolling. The thumbnails are also scaled more accurately.
48 lines
1.3 KiB
Java
48 lines
1.3 KiB
Java
package org.thoughtcrime.securesms.mms;
|
|
|
|
import android.util.Log;
|
|
|
|
import org.thoughtcrime.securesms.util.Util;
|
|
|
|
import java.io.UnsupportedEncodingException;
|
|
|
|
import ws.com.google.android.mms.ContentType;
|
|
import ws.com.google.android.mms.pdu.CharacterSets;
|
|
import ws.com.google.android.mms.pdu.PduBody;
|
|
|
|
public class PartParser {
|
|
public static String getMessageText(PduBody body) {
|
|
String bodyText = null;
|
|
|
|
for (int i=0;i<body.getPartsNum();i++) {
|
|
if (ContentType.isTextType(Util.toIsoString(body.getPart(i).getContentType()))) {
|
|
String partText;
|
|
|
|
try {
|
|
partText = new String(body.getPart(i).getData(),
|
|
CharacterSets.getMimeName(body.getPart(i).getCharset()));
|
|
} catch (UnsupportedEncodingException e) {
|
|
Log.w("PartParser", e);
|
|
partText = "Unsupported Encoding!";
|
|
}
|
|
|
|
bodyText = (bodyText == null) ? partText : bodyText + " " + partText;
|
|
}
|
|
}
|
|
|
|
return bodyText;
|
|
}
|
|
|
|
public static PduBody getNonTextParts(PduBody body) {
|
|
PduBody stripped = new PduBody();
|
|
|
|
for (int i=0;i<body.getPartsNum();i++) {
|
|
if (!ContentType.isTextType(Util.toIsoString(body.getPart(i).getContentType()))) {
|
|
stripped.addPart(body.getPart(i));
|
|
}
|
|
}
|
|
|
|
return stripped;
|
|
}
|
|
}
|