From 620b71a649f020e54d876b40537f45fa264839ec Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg <scott@nonnenberg.com> Date: Fri, 11 Aug 2017 17:06:48 -0700 Subject: [PATCH] Maintain original received time when processing queued/error msgs FREEBIE --- js/background.js | 4 +--- js/libtextsecure.js | 6 ++++++ libtextsecure/message_receiver.js | 6 ++++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/js/background.js b/js/background.js index e4c3a7cd3..b933c8374 100644 --- a/js/background.js +++ b/js/background.js @@ -288,13 +288,11 @@ } function initIncomingMessage(data) { - var now = new Date().getTime(); - var message = new Whisper.Message({ source : data.source, sourceDevice : data.sourceDevice, sent_at : data.timestamp, - received_at : now, + received_at : data.receivedAt || Date.now(), conversationId : data.source, type : 'incoming', unread : 1 diff --git a/js/libtextsecure.js b/js/libtextsecure.js index 98d20df5c..58b788ab1 100644 --- a/js/libtextsecure.js +++ b/js/libtextsecure.js @@ -38332,6 +38332,7 @@ MessageReceiver.prototype.extend({ } return; } + var receivedAt = Date.now(); this.incoming.push(textsecure.crypto.decryptWebsocketMessage(request.body, this.signalingKey).then(function(plaintext) { var envelope = textsecure.protobuf.Envelope.decode(plaintext); @@ -38343,6 +38344,8 @@ MessageReceiver.prototype.extend({ return request.respond(200, 'OK'); } + envelope.receivedAt = receivedAt; + return this.addToCache(envelope, plaintext).then(function() { request.respond(200, 'OK'); this.queueEnvelope(envelope); @@ -38687,6 +38690,7 @@ MessageReceiver.prototype.extend({ source : envelope.source, sourceDevice : envelope.sourceDevice, timestamp : envelope.timestamp.toNumber(), + receivedAt : envelope.receivedAt, message : message }; return this.dispatchAndWait(ev); @@ -38923,6 +38927,7 @@ MessageReceiver.prototype.extend({ tryMessageAgain: function(from, ciphertext, message) { var address = libsignal.SignalProtocolAddress.fromString(from); var sentAt = message.sent_at || Date.now(); + var receivedAt = message.received_at || Date.now(); var ourNumber = textsecure.storage.user.getNumber(); var number = address.getName(); @@ -38940,6 +38945,7 @@ MessageReceiver.prototype.extend({ var envelope = { source: number, sourceDevice: device, + receivedAt: receivedAt, timestamp: { toNumber: function() { return sentAt; diff --git a/libtextsecure/message_receiver.js b/libtextsecure/message_receiver.js index 2b3d8ce9b..180e007e6 100644 --- a/libtextsecure/message_receiver.js +++ b/libtextsecure/message_receiver.js @@ -81,6 +81,7 @@ MessageReceiver.prototype.extend({ } return; } + var receivedAt = Date.now(); this.incoming.push(textsecure.crypto.decryptWebsocketMessage(request.body, this.signalingKey).then(function(plaintext) { var envelope = textsecure.protobuf.Envelope.decode(plaintext); @@ -92,6 +93,8 @@ MessageReceiver.prototype.extend({ return request.respond(200, 'OK'); } + envelope.receivedAt = receivedAt; + return this.addToCache(envelope, plaintext).then(function() { request.respond(200, 'OK'); this.queueEnvelope(envelope); @@ -436,6 +439,7 @@ MessageReceiver.prototype.extend({ source : envelope.source, sourceDevice : envelope.sourceDevice, timestamp : envelope.timestamp.toNumber(), + receivedAt : envelope.receivedAt, message : message }; return this.dispatchAndWait(ev); @@ -672,6 +676,7 @@ MessageReceiver.prototype.extend({ tryMessageAgain: function(from, ciphertext, message) { var address = libsignal.SignalProtocolAddress.fromString(from); var sentAt = message.sent_at || Date.now(); + var receivedAt = message.received_at || Date.now(); var ourNumber = textsecure.storage.user.getNumber(); var number = address.getName(); @@ -689,6 +694,7 @@ MessageReceiver.prototype.extend({ var envelope = { source: number, sourceDevice: device, + receivedAt: receivedAt, timestamp: { toNumber: function() { return sentAt;