diff --git a/src/org/thoughtcrime/securesms/database/Address.java b/src/org/thoughtcrime/securesms/database/Address.java
index b9fa0e496..a14b7a8a1 100644
--- a/src/org/thoughtcrime/securesms/database/Address.java
+++ b/src/org/thoughtcrime/securesms/database/Address.java
@@ -16,16 +16,11 @@ import com.google.i18n.phonenumbers.PhoneNumberUtil;
import com.google.i18n.phonenumbers.Phonenumber;
import com.google.i18n.phonenumbers.ShortNumberInfo;
-import org.thoughtcrime.securesms.util.DelimiterUtil;
import org.thoughtcrime.securesms.util.GroupUtil;
import org.thoughtcrime.securesms.util.NumberUtil;
import org.thoughtcrime.securesms.util.Prefs;
-import org.thoughtcrime.securesms.util.Util;
-import java.util.Collections;
import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
import java.util.Set;
import java.util.concurrent.atomic.AtomicReference;
import java.util.regex.Pattern;
@@ -78,29 +73,6 @@ public class Address implements Parcelable, Comparable
{
return new Address(getExternalAddressFormatter(context).format(external));
}
- public static @NonNull List fromSerializedList(@NonNull String serialized, char delimiter) {
- String[] escapedAddresses = DelimiterUtil.split(serialized, delimiter);
- List addresses = new LinkedList<>();
-
- for (String escapedAddress : escapedAddresses) {
- addresses.add(Address.fromSerialized(DelimiterUtil.unescape(escapedAddress, delimiter)));
- }
-
- return addresses;
- }
-
- public static @NonNull String toSerializedList(@NonNull List addresses, char delimiter) {
- Collections.sort(addresses);
-
- List escapedAddresses = new LinkedList<>();
-
- for (Address address : addresses) {
- escapedAddresses.add(DelimiterUtil.escape(address.serialize(), delimiter));
- }
-
- return Util.join(escapedAddresses, delimiter + "");
- }
-
private static @NonNull ExternalAddressFormatter getExternalAddressFormatter(Context context) {
String localNumber = Prefs.getLocalNumber(context);
@@ -138,11 +110,6 @@ public class Address implements Parcelable, Comparable {
public boolean isDcContact() { return address.startsWith(DC_CONTACT_PREFIX); };
- public @NonNull String toGroupString() {
- if (!isGroup()) throw new AssertionError("Not group: " + address);
- return address;
- }
-
public @NonNull String toPhoneString() {
if (!isPhone()) throw new AssertionError("Not e164: " + address);
return address;
diff --git a/src/org/thoughtcrime/securesms/database/AttachmentDatabase.java b/src/org/thoughtcrime/securesms/database/AttachmentDatabase.java
index 6cf25bf31..047a40733 100644
--- a/src/org/thoughtcrime/securesms/database/AttachmentDatabase.java
+++ b/src/org/thoughtcrime/securesms/database/AttachmentDatabase.java
@@ -16,19 +16,13 @@
*/
package org.thoughtcrime.securesms.database;
-import android.annotation.SuppressLint;
-import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
-import android.graphics.Bitmap;
-import android.media.MediaMetadataRetriever;
-import android.os.Build;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
import android.util.Log;
-import android.util.Pair;
import net.sqlcipher.database.SQLiteDatabase;
@@ -39,26 +33,15 @@ import org.thoughtcrime.securesms.attachments.DatabaseAttachment;
import org.thoughtcrime.securesms.crypto.AttachmentSecret;
import org.thoughtcrime.securesms.crypto.ClassicDecryptingPartInputStream;
import org.thoughtcrime.securesms.crypto.ModernDecryptingPartInputStream;
-import org.thoughtcrime.securesms.crypto.ModernEncryptingPartOutputStream;
import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper;
-import org.thoughtcrime.securesms.mms.MmsException;
import org.thoughtcrime.securesms.util.JsonUtils;
-import org.thoughtcrime.securesms.util.MediaUtil;
-import org.thoughtcrime.securesms.util.MediaUtil.ThumbnailData;
-import org.thoughtcrime.securesms.util.Util;
-import org.thoughtcrime.securesms.video.EncryptedMediaDataSource;
import java.io.File;
-import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
-import java.io.OutputStream;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
public class AttachmentDatabase extends Database {
@@ -77,7 +60,6 @@ public class AttachmentDatabase extends Database {
public static final String SIZE = "data_size";
static final String FILE_NAME = "file_name";
public static final String THUMBNAIL = "thumbnail";
- static final String THUMBNAIL_ASPECT_RATIO = "aspect_ratio";
public static final String UNIQUE_ID = "unique_id";
static final String DIGEST = "digest";
static final String VOICE_NOTE = "voice_note";
@@ -88,41 +70,12 @@ public class AttachmentDatabase extends Database {
static final String WIDTH = "width";
static final String HEIGHT = "height";
- public static final String DIRECTORY = "parts";
-
public static final int TRANSFER_PROGRESS_DONE = 0;
public static final int TRANSFER_PROGRESS_STARTED = 1;
- public static final int TRANSFER_PROGRESS_PENDING = 2;
public static final int TRANSFER_PROGRESS_FAILED = 3;
private static final String PART_ID_WHERE = ROW_ID + " = ? AND " + UNIQUE_ID + " = ?";
- private static final String[] PROJECTION = new String[] {ROW_ID,
- MMS_ID, CONTENT_TYPE, NAME, CONTENT_DISPOSITION,
- CONTENT_LOCATION, DATA, THUMBNAIL, TRANSFER_STATE,
- SIZE, FILE_NAME, THUMBNAIL, THUMBNAIL_ASPECT_RATIO,
- UNIQUE_ID, DIGEST, FAST_PREFLIGHT_ID, VOICE_NOTE,
- QUOTE, DATA_RANDOM, THUMBNAIL_RANDOM, WIDTH, HEIGHT};
-
- public static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" + ROW_ID + " INTEGER PRIMARY KEY, " +
- MMS_ID + " INTEGER, " + "seq" + " INTEGER DEFAULT 0, " +
- CONTENT_TYPE + " TEXT, " + NAME + " TEXT, " + "chset" + " INTEGER, " +
- CONTENT_DISPOSITION + " TEXT, " + "fn" + " TEXT, " + "cid" + " TEXT, " +
- CONTENT_LOCATION + " TEXT, " + "ctt_s" + " INTEGER, " +
- "ctt_t" + " TEXT, " + "encrypted" + " INTEGER, " +
- TRANSFER_STATE + " INTEGER, "+ DATA + " TEXT, " + SIZE + " INTEGER, " +
- FILE_NAME + " TEXT, " + THUMBNAIL + " TEXT, " + THUMBNAIL_ASPECT_RATIO + " REAL, " +
- UNIQUE_ID + " INTEGER NOT NULL, " + DIGEST + " BLOB, " + FAST_PREFLIGHT_ID + " TEXT, " +
- VOICE_NOTE + " INTEGER DEFAULT 0, " + DATA_RANDOM + " BLOB, " + THUMBNAIL_RANDOM + " BLOB, " +
- QUOTE + " INTEGER DEFAULT 0, " + WIDTH + " INTEGER DEFAULT 0, " + HEIGHT + " INTEGER DEFAULT 0);";
-
- public static final String[] CREATE_INDEXS = {
- "CREATE INDEX IF NOT EXISTS part_mms_id_index ON " + TABLE_NAME + " (" + MMS_ID + ");",
- "CREATE INDEX IF NOT EXISTS pending_push_index ON " + TABLE_NAME + " (" + TRANSFER_STATE + ");",
- };
-
- private final ExecutorService thumbnailExecutor = Util.newSingleThreadedLifoExecutor();
-
private final AttachmentSecret attachmentSecret;
public AttachmentDatabase(Context context, SQLCipherOpenHelper databaseHelper, AttachmentSecret attachmentSecret) {
@@ -139,52 +92,6 @@ public class AttachmentDatabase extends Database {
else return dataStream;
}
- public @NonNull InputStream getThumbnailStream(@NonNull AttachmentId attachmentId)
- throws IOException
- {
- Log.w(TAG, "getThumbnailStream(" + attachmentId + ")");
- InputStream dataStream = getDataStream(attachmentId, THUMBNAIL, 0);
-
- if (dataStream != null) {
- return dataStream;
- }
-
- try {
- InputStream generatedStream = thumbnailExecutor.submit(new ThumbnailFetchCallable(attachmentId)).get();
-
- if (generatedStream == null) throw new FileNotFoundException("No thumbnail stream available: " + attachmentId);
- else return generatedStream;
- } catch (InterruptedException ie) {
- throw new AssertionError("interrupted");
- } catch (ExecutionException ee) {
- Log.w(TAG, ee);
- throw new IOException(ee);
- }
- }
-
- public @Nullable DatabaseAttachment getAttachment(@NonNull AttachmentId attachmentId)
- {
- SQLiteDatabase database = databaseHelper.getReadableDatabase();
- Cursor cursor = null;
-
- try {
- cursor = database.query(TABLE_NAME, PROJECTION, PART_ID_WHERE, attachmentId.toStrings(), null, null, null);
-
- if (cursor != null && cursor.moveToFirst()) {
- List list = getAttachment(cursor);
-
- if (list != null && list.size() > 0) {
- return list.get(0);
- }
- }
-
- return null;
- } finally {
- if (cursor != null)
- cursor.close();
- }
- }
-
@SuppressWarnings("WeakerAccess")
@VisibleForTesting
protected @Nullable InputStream getDataStream(AttachmentId attachmentId, String dataType, long offset)
@@ -250,31 +157,6 @@ public class AttachmentDatabase extends Database {
}
- private @NonNull DataInfo setAttachmentData(@NonNull InputStream in)
- throws MmsException
- {
- try {
- File partsDirectory = context.getDir(DIRECTORY, Context.MODE_PRIVATE);
- File dataFile = File.createTempFile("part", ".mms", partsDirectory);
- return setAttachmentData(dataFile, in);
- } catch (IOException e) {
- throw new MmsException(e);
- }
- }
-
- private @NonNull DataInfo setAttachmentData(@NonNull File destination, @NonNull InputStream in)
- throws MmsException
- {
- try {
- Pair out = ModernEncryptingPartOutputStream.createFor(attachmentSecret, destination, false);
- long length = Util.copy(in, out.second);
-
- return new DataInfo(destination, length, out.first);
- } catch (IOException e) {
- throw new MmsException(e);
- }
- }
-
public List getAttachment(@NonNull Cursor cursor) {
try {
if (cursor.getColumnIndex(AttachmentDatabase.ATTACHMENT_JSON_ALIAS) != -1) {
@@ -335,110 +217,12 @@ public class AttachmentDatabase extends Database {
}
}
-
- @SuppressWarnings("WeakerAccess")
- @VisibleForTesting
- protected void updateAttachmentThumbnail(AttachmentId attachmentId, InputStream in, float aspectRatio)
- throws MmsException
- {
- Log.w(TAG, "updating part thumbnail for #" + attachmentId);
-
- DataInfo thumbnailFile = setAttachmentData(in);
-
- SQLiteDatabase database = databaseHelper.getWritableDatabase();
- ContentValues values = new ContentValues(2);
-
- values.put(THUMBNAIL, thumbnailFile.file.getAbsolutePath());
- values.put(THUMBNAIL_ASPECT_RATIO, aspectRatio);
- values.put(THUMBNAIL_RANDOM, thumbnailFile.random);
-
- database.update(TABLE_NAME, values, PART_ID_WHERE, attachmentId.toStrings());
-
- Cursor cursor = database.query(TABLE_NAME, new String[] {MMS_ID}, PART_ID_WHERE, attachmentId.toStrings(), null, null, null);
-
- try {
- if (cursor != null && cursor.moveToFirst()) {
-// notifyConversationListeners(
-// DatabaseFactory.getMmsDatabase(context).getThreadIdForMessage(cursor.getLong(cursor.getColumnIndexOrThrow(MMS_ID))));
- }
- } finally {
- if (cursor != null) cursor.close();
- }
- }
-
-
- @VisibleForTesting
- class ThumbnailFetchCallable implements Callable {
-
- private final AttachmentId attachmentId;
-
- ThumbnailFetchCallable(AttachmentId attachmentId) {
- this.attachmentId = attachmentId;
- }
-
- @Override
- public @Nullable InputStream call() throws Exception {
- Log.w(TAG, "Executing thumbnail job...");
- final InputStream stream = getDataStream(attachmentId, THUMBNAIL, 0);
-
- if (stream != null) {
- return stream;
- }
-
- DatabaseAttachment attachment = getAttachment(attachmentId);
-
- if (attachment == null || !attachment.hasData()) {
- return null;
- }
-
- ThumbnailData data = null;
-
- if (MediaUtil.isVideoType(attachment.getContentType())) {
- data = generateVideoThumbnail(attachmentId);
- }
-
- if (data == null) {
- return null;
- }
-
- updateAttachmentThumbnail(attachmentId, data.toDataStream(), data.getAspectRatio());
-
- return getDataStream(attachmentId, THUMBNAIL, 0);
- }
-
- @SuppressLint("NewApi")
- private ThumbnailData generateVideoThumbnail(AttachmentId attachmentId) {
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
- Log.w(TAG, "Video thumbnails not supported...");
- return null;
- }
-
- DataInfo dataInfo = getAttachmentDataFileInfo(attachmentId, DATA);
-
- if (dataInfo == null) {
- Log.w(TAG, "No data file found for video thumbnail...");
- return null;
- }
-
- EncryptedMediaDataSource dataSource = new EncryptedMediaDataSource(attachmentSecret, dataInfo.file, dataInfo.random, dataInfo.length);
- MediaMetadataRetriever retriever = new MediaMetadataRetriever();
- retriever.setDataSource(dataSource);
-
- Bitmap bitmap = retriever.getFrameAtTime(1000);
-
- Log.w(TAG, "Generated video thumbnail...");
- return new ThumbnailData(bitmap);
- }
- }
-
private static class DataInfo {
private final File file;
- private final long length;
private final byte[] random;
private DataInfo(File file, long length, byte[] random) {
this.file = file;
- this.length = length;
this.random = random;
}
}
diff --git a/src/org/thoughtcrime/securesms/database/CursorList.java b/src/org/thoughtcrime/securesms/database/CursorList.java
index 1f795e0ca..f9902b3cb 100644
--- a/src/org/thoughtcrime/securesms/database/CursorList.java
+++ b/src/org/thoughtcrime/securesms/database/CursorList.java
@@ -1,8 +1,6 @@
package org.thoughtcrime.securesms.database;
-import android.database.ContentObserver;
import android.database.Cursor;
-import android.database.MatrixCursor;
import android.support.annotation.NonNull;
import java.io.Closeable;
@@ -31,15 +29,6 @@ public class CursorList implements List, Closeable {
this.modelBuilder = modelBuilder;
}
- public static CursorList emptyList() {
- //noinspection ConstantConditions,unchecked
- return (CursorList) new CursorList(emptyCursor(), null);
- }
-
- private static Cursor emptyCursor() {
- return new MatrixCursor(new String[] { "a" }, 0);
- }
-
@Override
public int size() {
return cursor.getCount();
@@ -186,14 +175,6 @@ public class CursorList implements List, Closeable {
}
}
- public void registerContentObserver(@NonNull ContentObserver observer) {
- cursor.registerContentObserver(observer);
- }
-
- public void unregisterContentObserver(@NonNull ContentObserver observer) {
- cursor.unregisterContentObserver(observer);
- }
-
public interface ModelBuilder {
T build(@NonNull Cursor cursor);
}
diff --git a/src/org/thoughtcrime/securesms/database/CursorRecyclerViewAdapter.java b/src/org/thoughtcrime/securesms/database/CursorRecyclerViewAdapter.java
index 31b9cc42a..a2a8f16b1 100644
--- a/src/org/thoughtcrime/securesms/database/CursorRecyclerViewAdapter.java
+++ b/src/org/thoughtcrime/securesms/database/CursorRecyclerViewAdapter.java
@@ -67,14 +67,6 @@ public abstract class CursorRecyclerViewAdapter {
-
- @JsonProperty(value = "l")
- private List failures;
-
- public NetworkFailureList() {
- this.failures = new LinkedList<>();
- }
-
- public NetworkFailureList(List failures) {
- this.failures = failures;
- }
-
- @Override
- public int size() {
- if (failures == null) return 0;
- else return failures.size();
- }
-
- @Override
- @JsonIgnore
- public List getList() {
- return failures;
- }
-}
diff --git a/src/org/thoughtcrime/securesms/database/loaders/ThreadMediaLoader.java b/src/org/thoughtcrime/securesms/database/loaders/ThreadMediaLoader.java
index 0649a7a22..09bed100c 100644
--- a/src/org/thoughtcrime/securesms/database/loaders/ThreadMediaLoader.java
+++ b/src/org/thoughtcrime/securesms/database/loaders/ThreadMediaLoader.java
@@ -11,12 +11,10 @@ import org.thoughtcrime.securesms.util.AbstractCursorLoader;
public class ThreadMediaLoader extends AbstractCursorLoader {
private final Address address;
- private final boolean gallery;
public ThreadMediaLoader(@NonNull Context context, @NonNull Address address, boolean gallery) {
super(context);
this.address = address;
- this.gallery = gallery;
}
@Override
diff --git a/src/org/thoughtcrime/securesms/database/model/DisplayRecord.java b/src/org/thoughtcrime/securesms/database/model/DisplayRecord.java
index 7fda6d328..7204da394 100644
--- a/src/org/thoughtcrime/securesms/database/model/DisplayRecord.java
+++ b/src/org/thoughtcrime/securesms/database/model/DisplayRecord.java
@@ -41,9 +41,6 @@ public abstract class DisplayRecord {
private final long dateReceived;
private final long threadId;
private final String body;
- private final int deliveryStatus;
- private final int deliveryReceiptCount;
- private final int readReceiptCount;
DisplayRecord(Context context, String body, Recipient recipient, long dateSent,
long dateReceived, long threadId, int deliveryStatus, int deliveryReceiptCount,
@@ -56,9 +53,6 @@ public abstract class DisplayRecord {
this.dateReceived = dateReceived;
this.type = type;
this.body = body;
- this.deliveryReceiptCount = deliveryReceiptCount;
- this.readReceiptCount = readReceiptCount;
- this.deliveryStatus = deliveryStatus;
}
public @NonNull String getBody() {
@@ -102,10 +96,6 @@ public abstract class DisplayRecord {
return threadId;
}
- public boolean isKeyExchange() {
- return false;
- }
-
public boolean isEndSession() {
return false;
}
diff --git a/src/org/thoughtcrime/securesms/database/model/MediaMmsMessageRecord.java b/src/org/thoughtcrime/securesms/database/model/MediaMmsMessageRecord.java
deleted file mode 100644
index b4f17ede0..000000000
--- a/src/org/thoughtcrime/securesms/database/model/MediaMmsMessageRecord.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * Copyright (C) 2012 Moxie Marlinspike
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package org.thoughtcrime.securesms.database.model;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.text.SpannableString;
-
-import org.thoughtcrime.securesms.R;
-import org.thoughtcrime.securesms.contactshare.Contact;
-import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatch;
-import org.thoughtcrime.securesms.database.documents.NetworkFailure;
-import org.thoughtcrime.securesms.mms.SlideDeck;
-import org.thoughtcrime.securesms.recipients.Recipient;
-
-import java.util.List;
-
-/**
- * Represents the message record model for MMS messages that contain
- * media (ie: they've been downloaded).
- *
- * @author Moxie Marlinspike
- *
- */
-
-public class MediaMmsMessageRecord extends MmsMessageRecord {
- private final static String TAG = MediaMmsMessageRecord.class.getSimpleName();
-
- private final Context context;
- private final int partCount;
-
- public MediaMmsMessageRecord(Context context, long id, Recipient conversationRecipient,
- Recipient individualRecipient, int recipientDeviceId,
- long dateSent, long dateReceived, int deliveryReceiptCount,
- long threadId, String body,
- @NonNull SlideDeck slideDeck,
- int partCount, long mailbox,
- List mismatches,
- List failures, int subscriptionId,
- long expiresIn, long expireStarted, int readReceiptCount,
- @Nullable Quote quote, @Nullable List contacts)
- {
- super(context, id, body, conversationRecipient, individualRecipient, recipientDeviceId, dateSent,
- dateReceived, threadId, 0, deliveryReceiptCount, mailbox, mismatches, failures,
- subscriptionId, expiresIn, expireStarted, slideDeck, readReceiptCount, quote, contacts);
-
- this.context = context.getApplicationContext();
- this.partCount = partCount;
- }
-
- public int getPartCount() {
- return partCount;
- }
-
- @Override
- public boolean isMmsNotification() {
- return false;
- }
-
- @Override
- public SpannableString getDisplayBody() {
- if (isLegacyMessage()) {
- return emphasisAdded(context.getString(R.string.MessageRecord_message_encrypted_with_a_legacy_protocol_version_that_is_no_longer_supported));
- }
-
- return super.getDisplayBody();
- }
-}
diff --git a/src/org/thoughtcrime/securesms/database/model/MessageRecord.java b/src/org/thoughtcrime/securesms/database/model/MessageRecord.java
index f6b14bc3e..89b4a4640 100644
--- a/src/org/thoughtcrime/securesms/database/model/MessageRecord.java
+++ b/src/org/thoughtcrime/securesms/database/model/MessageRecord.java
@@ -17,20 +17,13 @@
package org.thoughtcrime.securesms.database.model;
import android.content.Context;
-import android.text.Spannable;
import android.text.SpannableString;
-import android.text.style.RelativeSizeSpan;
-import android.text.style.StyleSpan;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.database.MmsSmsColumns;
-import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatch;
-import org.thoughtcrime.securesms.database.documents.NetworkFailure;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.ExpirationUtil;
-import java.util.List;
-
/**
* The base class for message record models that are displayed in
* conversations, as opposed to models that are displayed in a thread list.
@@ -44,10 +37,7 @@ public abstract class MessageRecord extends DisplayRecord {
private static final int MAX_DISPLAY_LENGTH = 2000;
private final Recipient individualRecipient;
- private final int recipientDeviceId;
private final long id;
- private final List mismatches;
- private final List networkFailures;
private final int subscriptionId;
private final long expiresIn;
private final long expireStarted;
@@ -56,8 +46,6 @@ public abstract class MessageRecord extends DisplayRecord {
Recipient individualRecipient, int recipientDeviceId,
long dateSent, long dateReceived, long threadId,
int deliveryStatus, int deliveryReceiptCount, long type,
- List mismatches,
- List networkFailures,
int subscriptionId, long expiresIn, long expireStarted,
int readReceiptCount)
{
@@ -65,25 +53,17 @@ public abstract class MessageRecord extends DisplayRecord {
threadId, deliveryStatus, deliveryReceiptCount, type, readReceiptCount);
this.id = id;
this.individualRecipient = individualRecipient;
- this.recipientDeviceId = recipientDeviceId;
- this.mismatches = mismatches;
- this.networkFailures = networkFailures;
this.subscriptionId = subscriptionId;
this.expiresIn = expiresIn;
this.expireStarted = expireStarted;
}
public abstract boolean isMms();
- public abstract boolean isMmsNotification();
public boolean isSecure() {
return MmsSmsColumns.Types.isSecureType(type);
}
- public boolean isLegacyMessage() {
- return MmsSmsColumns.Types.isLegacyType(type);
- }
-
@Override
public SpannableString getDisplayBody() {
if (isGroupUpdate() && isOutgoing()) {
@@ -147,51 +127,23 @@ public abstract class MessageRecord extends DisplayRecord {
return false;
}
- public boolean isBundleKeyExchange() {
- return false;
- }
-
public boolean isIdentityUpdate() {
return false;
}
- public boolean isCorruptedKeyExchange() {
- return false;
- }
-
- public boolean isInvalidVersionKeyExchange() {
- return false;
- }
-
public boolean isUpdate() {
return isGroupAction() || isJoined() || isExpirationTimerUpdate() || isCallLog() ||
isEndSession() || isIdentityUpdate() || isIdentityVerified() || isIdentityDefault();
}
- public boolean isMediaPending() {
- return false;
- }
-
public Recipient getIndividualRecipient() {
return individualRecipient;
}
- public int getRecipientDeviceId() {
- return recipientDeviceId;
- }
-
public long getType() {
return type;
}
- protected SpannableString emphasisAdded(String sequence) {
- SpannableString spannable = new SpannableString(sequence);
- spannable.setSpan(new RelativeSizeSpan(0.9f), 0, sequence.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- spannable.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 0, sequence.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
-
- return spannable;
- }
-
public boolean equals(Object other) {
return other != null &&
other instanceof MessageRecord &&
@@ -203,15 +155,7 @@ public abstract class MessageRecord extends DisplayRecord {
return (int)getId();
}
- public int getSubscriptionId() {
- return subscriptionId;
- }
-
public long getExpiresIn() {
return expiresIn;
}
-
- public long getExpireStarted() {
- return expireStarted;
- }
}
diff --git a/src/org/thoughtcrime/securesms/database/model/MmsMessageRecord.java b/src/org/thoughtcrime/securesms/database/model/MmsMessageRecord.java
deleted file mode 100644
index fdf72a476..000000000
--- a/src/org/thoughtcrime/securesms/database/model/MmsMessageRecord.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.thoughtcrime.securesms.database.model;
-
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import org.thoughtcrime.securesms.contactshare.Contact;
-import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatch;
-import org.thoughtcrime.securesms.database.documents.NetworkFailure;
-import org.thoughtcrime.securesms.mms.Slide;
-import org.thoughtcrime.securesms.mms.SlideDeck;
-import org.thoughtcrime.securesms.recipients.Recipient;
-
-import java.util.LinkedList;
-import java.util.List;
-
-public abstract class MmsMessageRecord extends MessageRecord {
-
- private final @NonNull SlideDeck slideDeck;
- private final @Nullable Quote quote;
- private final @NonNull List contacts = new LinkedList<>();
-
- MmsMessageRecord(Context context, long id, String body, Recipient conversationRecipient,
- Recipient individualRecipient, int recipientDeviceId, long dateSent,
- long dateReceived, long threadId, int deliveryStatus, int deliveryReceiptCount,
- long type, List mismatches,
- List networkFailures, int subscriptionId, long expiresIn,
- long expireStarted, @NonNull SlideDeck slideDeck, int readReceiptCount,
- @Nullable Quote quote, @NonNull List contacts)
- {
- super(context, id, body, conversationRecipient, individualRecipient, recipientDeviceId, dateSent, dateReceived, threadId, deliveryStatus, deliveryReceiptCount, type, mismatches, networkFailures, subscriptionId, expiresIn, expireStarted, readReceiptCount);
-
- this.slideDeck = slideDeck;
- this.quote = quote;
-
- this.contacts.addAll(contacts);
- }
-
- @Override
- public boolean isMms() {
- return true;
- }
-
- @NonNull
- public SlideDeck getSlideDeck() {
- return slideDeck;
- }
-
- @Override
- public boolean isMediaPending() {
- for (Slide slide : getSlideDeck().getSlides()) {
- if (slide.isInProgress() || slide.isPendingDownload()) {
- return true;
- }
- }
-
- return false;
- }
-
- public boolean containsMediaSlide() {
- return slideDeck.containsMediaSlide();
- }
-
- public @Nullable Quote getQuote() {
- return quote;
- }
-
- public @NonNull List getSharedContacts() {
- return contacts;
- }
-}
diff --git a/src/org/thoughtcrime/securesms/database/model/NotificationMmsMessageRecord.java b/src/org/thoughtcrime/securesms/database/model/NotificationMmsMessageRecord.java
deleted file mode 100644
index b71634258..000000000
--- a/src/org/thoughtcrime/securesms/database/model/NotificationMmsMessageRecord.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2012 Moxie Marlinspike
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package org.thoughtcrime.securesms.database.model;
-
-import android.content.Context;
-import android.text.SpannableString;
-
-import org.thoughtcrime.securesms.R;
-import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatch;
-import org.thoughtcrime.securesms.database.documents.NetworkFailure;
-import org.thoughtcrime.securesms.mms.SlideDeck;
-import org.thoughtcrime.securesms.recipients.Recipient;
-
-import java.util.Collections;
-import java.util.LinkedList;
-
-/**
- * Represents the message record model for MMS messages that are
- * notifications (ie: they're pointers to undownloaded media).
- *
- * @author Moxie Marlinspike
- *
- */
-
-public class NotificationMmsMessageRecord extends MmsMessageRecord {
-
- private final byte[] contentLocation;
- private final long messageSize;
- private final long expiry;
- private final int status;
- private final byte[] transactionId;
-
- public NotificationMmsMessageRecord(Context context, long id, Recipient conversationRecipient,
- Recipient individualRecipient, int recipientDeviceId,
- long dateSent, long dateReceived, int deliveryReceiptCount,
- long threadId, byte[] contentLocation, long messageSize,
- long expiry, int status, byte[] transactionId, long mailbox,
- int subscriptionId, SlideDeck slideDeck, int readReceiptCount)
- {
- super(context, id, "", conversationRecipient, individualRecipient, recipientDeviceId,
- dateSent, dateReceived, threadId, 0, deliveryReceiptCount, mailbox,
- new LinkedList(), new LinkedList(), subscriptionId,
- 0, 0, slideDeck, readReceiptCount, null, Collections.emptyList());
-
- this.contentLocation = contentLocation;
- this.messageSize = messageSize;
- this.expiry = expiry;
- this.status = status;
- this.transactionId = transactionId;
- }
-
- public byte[] getTransactionId() {
- return transactionId;
- }
-
- public int getStatus() {
- return this.status;
- }
-
- public byte[] getContentLocation() {
- return contentLocation;
- }
-
- public long getMessageSize() {
- return (messageSize + 1023) / 1024;
- }
-
- public long getExpiration() {
- return expiry * 1000;
- }
-
- @Override
- public boolean isOutgoing() {
- return false;
- }
-
- @Override
- public boolean isSecure() {
- return false;
- }
-
- @Override
- public boolean isPending() {
- return false;
- }
-
- @Override
- public boolean isMmsNotification() {
- return true;
- }
-
- @Override
- public boolean isMediaPending() {
- return true;
- }
-
- @Override
- public SpannableString getDisplayBody() {
- return emphasisAdded(context.getString(R.string.NotificationMmsMessageRecord_error_downloading_mms_message));
- }
-}
diff --git a/src/org/thoughtcrime/securesms/database/model/Quote.java b/src/org/thoughtcrime/securesms/database/model/Quote.java
deleted file mode 100644
index 8a05765e4..000000000
--- a/src/org/thoughtcrime/securesms/database/model/Quote.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.thoughtcrime.securesms.database.model;
-
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import org.thoughtcrime.securesms.database.Address;
-import org.thoughtcrime.securesms.mms.SlideDeck;
-
-public class Quote {
-
- private final long id;
- private final Address author;
- private final String text;
- private final SlideDeck attachment;
-
- public Quote(long id, @NonNull Address author, @Nullable String text, @NonNull SlideDeck attachment) {
- this.id = id;
- this.author = author;
- this.text = text;
- this.attachment = attachment;
- }
-
- public long getId() {
- return id;
- }
-
- public @NonNull Address getAuthor() {
- return author;
- }
-
- public @Nullable String getText() {
- return text;
- }
-
- public @NonNull SlideDeck getAttachment() {
- return attachment;
- }
-}
diff --git a/src/org/thoughtcrime/securesms/database/model/SmsMessageRecord.java b/src/org/thoughtcrime/securesms/database/model/SmsMessageRecord.java
deleted file mode 100644
index b622d7688..000000000
--- a/src/org/thoughtcrime/securesms/database/model/SmsMessageRecord.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2012 Moxie Marlinspike
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-package org.thoughtcrime.securesms.database.model;
-
-import android.content.Context;
-import android.text.SpannableString;
-
-import org.thoughtcrime.securesms.R;
-import org.thoughtcrime.securesms.database.MmsSmsColumns;
-import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatch;
-import org.thoughtcrime.securesms.recipients.Recipient;
-
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * The message record model which represents standard SMS messages.
- *
- * @author Moxie Marlinspike
- *
- */
-
-public class SmsMessageRecord extends MessageRecord {
-
- public SmsMessageRecord(Context context, long id,
- String body, Recipient recipient,
- Recipient individualRecipient,
- int recipientDeviceId,
- long dateSent, long dateReceived,
- int deliveryReceiptCount,
- long type, long threadId,
- int status, List mismatches,
- int subscriptionId, long expiresIn, long expireStarted,
- int readReceiptCount)
- {
- super(context, id, body, recipient, individualRecipient, recipientDeviceId,
- dateSent, dateReceived, threadId, status, deliveryReceiptCount, type,
- mismatches, new LinkedList<>(), subscriptionId,
- expiresIn, expireStarted, readReceiptCount);
- }
-
- public long getType() {
- return type;
- }
-
- @Override
- public SpannableString getDisplayBody() {
- if (isCorruptedKeyExchange()) {
- return emphasisAdded(context.getString(R.string.SmsMessageRecord_received_corrupted_key_exchange_message));
- } else if (isInvalidVersionKeyExchange()) {
- return emphasisAdded(context.getString(R.string.SmsMessageRecord_received_key_exchange_message_for_invalid_protocol_version));
- } else if (MmsSmsColumns.Types.isLegacyType(type)) {
- return emphasisAdded(context.getString(R.string.MessageRecord_message_encrypted_with_a_legacy_protocol_version_that_is_no_longer_supported));
- } else if (isBundleKeyExchange()) {
- return emphasisAdded(context.getString(R.string.SmsMessageRecord_received_message_with_new_safety_number_tap_to_process));
- } else if (isKeyExchange() && isOutgoing()) {
- return new SpannableString("");
- } else if (isKeyExchange() && !isOutgoing()) {
- return emphasisAdded(context.getString(R.string.ConversationItem_received_key_exchange_message_tap_to_process));
- } else if (isEndSession() && isOutgoing()) {
- return emphasisAdded(context.getString(R.string.SmsMessageRecord_secure_session_reset));
- } else if (isEndSession()) {
- return emphasisAdded(context.getString(R.string.SmsMessageRecord_secure_session_reset_s, getIndividualRecipient().toShortString()));
- } else {
- return super.getDisplayBody();
- }
- }
-
- @Override
- public boolean isMms() {
- return false;
- }
-
- @Override
- public boolean isMmsNotification() {
- return false;
- }
-}