diff --git a/app/src/main/java/org/thoughtcrime/securesms/attachments/DatabaseAttachmentProvider.kt b/app/src/main/java/org/thoughtcrime/securesms/attachments/DatabaseAttachmentProvider.kt index b232a1d3e6..105cabf37b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/attachments/DatabaseAttachmentProvider.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/attachments/DatabaseAttachmentProvider.kt @@ -68,17 +68,17 @@ class DatabaseAttachmentProvider(context: Context, helper: SQLCipherOpenHelper) override fun getMessageForQuote(timestamp: Long, author: Address): Long? { val messagingDatabase = DatabaseFactory.getMmsSmsDatabase(context) - return messagingDatabase.getMessageFor(timestamp, author)?.id + val message = messagingDatabase.getMessageFor(timestamp, author) + return message?.id } - override fun getAttachmentsAndLinkPreviewFor(messageID: Long): List { - val attachmentDatabase = DatabaseFactory.getAttachmentDatabase(context) - return attachmentDatabase.getAttachmentsForMessage(messageID) + override fun getAttachmentsAndLinkPreviewFor(mmsId: Long): List { + return DatabaseFactory.getAttachmentDatabase(context).getAttachmentsForMessage(mmsId) } - override fun getMessageBodyFor(messageID: Long): String { - val messagingDatabase = DatabaseFactory.getSmsDatabase(context) - return messagingDatabase.getMessage(messageID).body + override fun getMessageBodyFor(timestamp: Long, author: String): String { + val messagingDatabase = DatabaseFactory.getMmsSmsDatabase(context) + return messagingDatabase.getMessageFor(timestamp, author)!!.body } override fun getAttachmentIDsFor(messageID: Long): List { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentDatabase.java index 887ea913bc..b69f879993 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentDatabase.java @@ -37,32 +37,26 @@ import net.sqlcipher.database.SQLiteDatabase; import org.json.JSONArray; import org.json.JSONException; - +import org.session.libsession.messaging.sending_receiving.attachments.Attachment; +import org.session.libsession.messaging.sending_receiving.attachments.AttachmentId; import org.session.libsession.messaging.sending_receiving.attachments.AttachmentTransferProgress; +import org.session.libsession.messaging.sending_receiving.attachments.DatabaseAttachment; +import org.session.libsession.messaging.sending_receiving.attachments.DatabaseAttachmentAudioExtras; import org.session.libsession.utilities.MediaTypes; +import org.session.libsession.utilities.Util; +import org.session.libsignal.utilities.JsonUtil; +import org.session.libsignal.utilities.externalstorage.ExternalStorageUtil; import org.session.libsignal.utilities.logging.Log; - 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.session.libsession.messaging.sending_receiving.attachments.Attachment; -import org.session.libsession.messaging.sending_receiving.attachments.AttachmentId; -import org.session.libsession.messaging.sending_receiving.attachments.DatabaseAttachment; -import org.session.libsession.messaging.sending_receiving.attachments.DatabaseAttachmentAudioExtras; - -import org.session.libsignal.utilities.JsonUtil; -import org.session.libsession.utilities.Util; - import org.thoughtcrime.securesms.mms.MediaStream; import org.thoughtcrime.securesms.mms.MmsException; import org.thoughtcrime.securesms.mms.PartAuthority; - import org.thoughtcrime.securesms.util.BitmapDecodingException; import org.thoughtcrime.securesms.util.BitmapUtil; -import org.session.libsignal.utilities.externalstorage.ExternalStorageUtil; import org.thoughtcrime.securesms.util.MediaUtil; import org.thoughtcrime.securesms.util.MediaUtil.ThumbnailData; import org.thoughtcrime.securesms.video.EncryptedMediaDataSource; @@ -240,7 +234,11 @@ public class AttachmentDatabase extends Database { null, null, null); while (cursor != null && cursor.moveToNext()) { - results.addAll(getAttachment(cursor)); + List attachments = getAttachment(cursor); + for (DatabaseAttachment attachment : attachments) { + if (attachment.isQuote()) continue; + results.add(attachment); + } } return results; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsDatabase.java index d4861570f1..ffa4c3642a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsDatabase.java @@ -18,19 +18,19 @@ package org.thoughtcrime.securesms.database; import android.content.Context; import android.database.Cursor; + import androidx.annotation.NonNull; import androidx.annotation.Nullable; import net.sqlcipher.database.SQLiteDatabase; import net.sqlcipher.database.SQLiteQueryBuilder; +import org.session.libsession.messaging.threads.Address; +import org.session.libsession.utilities.Util; import org.thoughtcrime.securesms.database.MessagingDatabase.SyncMessageId; import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper; import org.thoughtcrime.securesms.database.model.MessageRecord; -import org.session.libsession.messaging.threads.Address; -import org.session.libsession.utilities.Util; - import java.util.HashSet; import java.util.Set; @@ -79,18 +79,16 @@ public class MmsSmsDatabase extends Database { } public @Nullable MessageRecord getMessageForTimestamp(long timestamp) { - MmsSmsDatabase db = DatabaseFactory.getMmsSmsDatabase(context); try (Cursor cursor = queryTables(PROJECTION, MmsSmsColumns.NORMALIZED_DATE_SENT + " = " + timestamp, null, null)) { - MmsSmsDatabase.Reader reader = db.readerFor(cursor); + MmsSmsDatabase.Reader reader = readerFor(cursor); return reader.getNext(); } } public @Nullable MessageRecord getMessageFor(long timestamp, String serializedAuthor) { - MmsSmsDatabase db = DatabaseFactory.getMmsSmsDatabase(context); try (Cursor cursor = queryTables(PROJECTION, MmsSmsColumns.NORMALIZED_DATE_SENT + " = " + timestamp, null, null)) { - MmsSmsDatabase.Reader reader = db.readerFor(cursor); + MmsSmsDatabase.Reader reader = readerFor(cursor); MessageRecord messageRecord; diff --git a/libsession/src/main/java/org/session/libsession/database/MessageDataProvider.kt b/libsession/src/main/java/org/session/libsession/database/MessageDataProvider.kt index d15274dfcb..66fcb15f7b 100644 --- a/libsession/src/main/java/org/session/libsession/database/MessageDataProvider.kt +++ b/libsession/src/main/java/org/session/libsession/database/MessageDataProvider.kt @@ -32,8 +32,8 @@ interface MessageDataProvider { // Quotes fun getMessageForQuote(timestamp: Long, author: Address): Long? - fun getAttachmentsAndLinkPreviewFor(messageID: Long): List - fun getMessageBodyFor(messageID: Long): String + fun getAttachmentsAndLinkPreviewFor(mmsId: Long): List + fun getMessageBodyFor(timestamp: Long, author: String): String fun getAttachmentIDsFor(messageID: Long): List fun getLinkPreviewAttachmentIDFor(messageID: Long): Long? diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/signal/IncomingMediaMessage.java b/libsession/src/main/java/org/session/libsession/messaging/messages/signal/IncomingMediaMessage.java index b65698e01a..64b8dcf2b2 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/signal/IncomingMediaMessage.java +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/signal/IncomingMediaMessage.java @@ -72,7 +72,7 @@ public class IncomingMediaMessage { Optional quote, Optional> linkPreviews) { - return new IncomingMediaMessage(from, message.getReceivedTimestamp(), -1, expiresIn, false, + return new IncomingMediaMessage(from, message.getSentTimestamp(), -1, expiresIn, false, false, Optional.fromNullable(message.getText()), group, Optional.fromNullable(attachments), quote, Optional.absent(), linkPreviews); } diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiverHandler.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiverHandler.kt index 79b063e98f..a00521a4da 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiverHandler.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiverHandler.kt @@ -154,8 +154,8 @@ fun MessageReceiver.handleVisibleMessage(message: VisibleMessage, proto: SignalS val author = Address.fromSerialized(quote.author) val messageID = MessagingConfiguration.shared.messageDataProvider.getMessageForQuote(quote.id, author) if (messageID != null) { - val attachmentsWithLinkPreview = MessagingConfiguration.shared.messageDataProvider.getAttachmentsAndLinkPreviewFor(messageID) - quoteModel = QuoteModel(quote.id, author, MessagingConfiguration.shared.messageDataProvider.getMessageBodyFor(messageID), false, attachmentsWithLinkPreview) + val attachments = MessagingConfiguration.shared.messageDataProvider.getAttachmentsAndLinkPreviewFor(messageID) + quoteModel = QuoteModel(quote.id, author, MessagingConfiguration.shared.messageDataProvider.getMessageBodyFor(quote.id, quote.author), false, attachments) } else { quoteModel = QuoteModel(quote.id, author, quote.text, true, PointerAttachment.forPointers(proto.dataMessage.quote.attachmentsList)) }