From 6508873e57b1e5dcfce716e455fe66df2bacae8b Mon Sep 17 00:00:00 2001 From: jubb Date: Mon, 15 Mar 2021 15:03:23 +1100 Subject: [PATCH] fix: fix the sent / receive timestamps for linking quotes --- .../thoughtcrime/securesms/database/Storage.kt | 18 ++++++------------ .../messages/signal/IncomingTextMessage.java | 3 ++- .../sending_receiving/MessageSender.kt | 11 +++++------ 3 files changed, 13 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt b/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt index 3b70783d9a..e23dd2a6e3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt @@ -8,6 +8,7 @@ import org.session.libsession.messaging.jobs.AttachmentUploadJob import org.session.libsession.messaging.jobs.Job import org.session.libsession.messaging.jobs.JobQueue import org.session.libsession.messaging.jobs.MessageSendJob +import org.session.libsession.messaging.messages.signal.IncomingEncryptedMessage import org.session.libsession.messaging.messages.signal.IncomingGroupMessage import org.session.libsession.messaging.messages.signal.IncomingTextMessage import org.session.libsession.messaging.messages.signal.OutgoingTextMessage @@ -135,11 +136,7 @@ class Storage(context: Context, helper: SQLCipherOpenHelper) : Database(context, } val mediaMessage = IncomingMediaMessage.from(message, senderAddress, senderRecipient.expireMessages * 1000L, group, signalServiceAttachments, quote, linkPreviews) mmsDatabase.beginTransaction() - if (group.isPresent) { - mmsDatabase.insertSecureDecryptedMessageInbox(mediaMessage, message.threadID ?: -1, message.sentTimestamp!!) - } else { - mmsDatabase.insertSecureDecryptedMessageInbox(mediaMessage, message.threadID ?: -1) - } + mmsDatabase.insertSecureDecryptedMessageInbox(mediaMessage, message.threadID ?: -1, message.sentTimestamp ?: 0) } if (insertResult.isPresent) { mmsDatabase.setTransactionSuccessful() @@ -163,14 +160,11 @@ class Storage(context: Context, helper: SQLCipherOpenHelper) : Database(context, smsDatabase.insertMessageOutbox(message.threadID ?: -1, textMessage, message.sentTimestamp!!) } else { val textMessage = IncomingTextMessage.from(message, senderAddress, group, senderRecipient.expireMessages * 1000L) - if (group.isPresent) { - smsDatabase.insertMessageInbox(textMessage, message.sentTimestamp!!) - } else { - smsDatabase.insertMessageInbox(textMessage) - } + val encrypted = IncomingEncryptedMessage(textMessage, textMessage.messageBody) + smsDatabase.insertMessageInbox(encrypted, message.sentTimestamp ?: 0) } - if (insertResult.isPresent) { - messageID = insertResult.get().messageId + insertResult.orNull()?.let { result -> + messageID = result.messageId } } return messageID diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/signal/IncomingTextMessage.java b/libsession/src/main/java/org/session/libsession/messaging/messages/signal/IncomingTextMessage.java index 31be71cf3d..35b9d40a2c 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/signal/IncomingTextMessage.java +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/signal/IncomingTextMessage.java @@ -2,6 +2,7 @@ package org.session.libsession.messaging.messages.signal; import android.os.Parcel; import android.os.Parcelable; + import androidx.annotation.Nullable; import org.session.libsession.messaging.messages.visible.VisibleMessage; @@ -100,7 +101,7 @@ public class IncomingTextMessage implements Parcelable { Optional group, long expiresInMillis) { - return new IncomingTextMessage(sender, 1, message.getReceivedTimestamp(), message.getText(), group, expiresInMillis, false); + return new IncomingTextMessage(sender, 1, message.getSentTimestamp(), message.getText(), group, expiresInMillis, false); } public int getSubscriptionId() { diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt index 5fae947a38..675ff03553 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt @@ -12,9 +12,6 @@ import org.session.libsession.messaging.messages.control.ClosedGroupControlMessa import org.session.libsession.messaging.messages.control.ConfigurationMessage import org.session.libsession.messaging.messages.control.ExpirationTimerUpdate import org.session.libsession.messaging.messages.visible.* -import org.session.libsession.messaging.sending_receiving.attachments.Attachment as SignalAttachment -import org.session.libsession.messaging.sending_receiving.linkpreview.LinkPreview as SignalLinkPreview -import org.session.libsession.messaging.sending_receiving.quotes.QuoteModel as SignalQuote import org.session.libsession.messaging.opengroups.OpenGroupAPI import org.session.libsession.messaging.opengroups.OpenGroupMessage import org.session.libsession.messaging.threads.Address @@ -29,6 +26,9 @@ import org.session.libsignal.service.loki.api.crypto.ProofOfWork import org.session.libsignal.service.loki.utilities.hexEncodedPublicKey import org.session.libsignal.utilities.Base64 import org.session.libsignal.utilities.logging.Log +import org.session.libsession.messaging.sending_receiving.attachments.Attachment as SignalAttachment +import org.session.libsession.messaging.sending_receiving.linkpreview.LinkPreview as SignalLinkPreview +import org.session.libsession.messaging.sending_receiving.quotes.QuoteModel as SignalQuote object MessageSender { @@ -151,10 +151,9 @@ object MessageSender { } val recipient = message.recipient!! val base64EncodedData = Base64.encodeBytes(wrappedMessage) - val timestamp = System.currentTimeMillis() - val nonce = ProofOfWork.calculate(base64EncodedData, recipient, timestamp, message.ttl.toInt()) ?: throw Error.ProofOfWorkCalculationFailed + val nonce = ProofOfWork.calculate(base64EncodedData, recipient, message.sentTimestamp!!, message.ttl.toInt()) ?: throw Error.ProofOfWorkCalculationFailed // Send the result - val snodeMessage = SnodeMessage(recipient, base64EncodedData, message.ttl, timestamp, nonce) + val snodeMessage = SnodeMessage(recipient, base64EncodedData, message.ttl, message.sentTimestamp!!, nonce) if (destination is Destination.Contact && message is VisibleMessage && !isSelfSend) { SnodeConfiguration.shared.broadcaster.broadcast("sendingMessage", message.sentTimestamp!!) }