diff --git a/js/views/conversation_view.js b/js/views/conversation_view.js index f36be03024..d19ceb6360 100644 --- a/js/views/conversation_view.js +++ b/js/views/conversation_view.js @@ -645,8 +645,24 @@ } }, onExpiredCollection: function(message) { - console.log('removing message', message.get('sent_at'), 'from collection'); - this.model.messageCollection.remove(message.id); + var removeMessage = function() { + console.log( + 'removing message', + message.get('sent_at'), + 'from collection' + ); + this.model.messageCollection.remove(message.id); + }.bind(this); + + // If a fetch is in progress, then we need to wait until that's complete to + // do this removal. Otherwise we could remove from messageCollection, then + // the async database fetch could include the removed message. + + if (this.inProgressFetch) { + this.inProgressFetch.then(removeMessage); + } else { + removeMessage(); + } }, addMessage: function(message) { diff --git a/libtextsecure/message_receiver.js b/libtextsecure/message_receiver.js index 11434168a4..befba50d2c 100644 --- a/libtextsecure/message_receiver.js +++ b/libtextsecure/message_receiver.js @@ -595,8 +595,12 @@ MessageReceiver.prototype.extend({ } if (syncMessage.sent) { var sentMessage = syncMessage.sent; + var to = sentMessage.message.group + ? 'group(' + sentMessage.message.group.id.toBinary() + ')' + : sentMessage.destination; + console.log('sent message to', - sentMessage.destination, + to, sentMessage.timestamp.toNumber(), 'from', this.getEnvelopeId(envelope)