From 785b117b86f9241c08a4031db547cebe0efdae98 Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Wed, 7 Jun 2017 14:34:05 -0700 Subject: [PATCH] Mark older messages as read when we get out-of-order read receipt FREEBIE --- js/models/messages.js | 4 ++++ js/read_receipts.js | 22 ++++++++++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/js/models/messages.js b/js/models/messages.js index 9829ebf13..23840ff37 100644 --- a/js/models/messages.js +++ b/js/models/messages.js @@ -457,6 +457,10 @@ } if (readReceipt || message.isExpirationTimerUpdate()) { message.unset('unread'); + // This is primarily to allow the conversation to mark all older messages as + // read, as is done when we receive a read receipt for a message we already + // know about. + Whisper.ReadReceipts.notifyConversation(message); } else { conversation.set('unreadCount', conversation.get('unreadCount') + 1); } diff --git a/js/read_receipts.js b/js/read_receipts.js index 9e92aee79..50d37ab08 100644 --- a/js/read_receipts.js +++ b/js/read_receipts.js @@ -29,19 +29,21 @@ if (message) { this.remove(receipt); message.markRead(receipt.get('read_at')).then(function() { - var conversation = ConversationController.get({ - id: message.get('conversationId') - }); - - if (conversation) { - // notify frontend listeners - conversation.onReadMessage(message); - } - }); + this.notifyConversation(message); + }.bind(this)); } else { console.log('No message for read receipt'); } }.bind(this)); - } + }, + notifyConversation: function(message) { + var conversation = ConversationController.get({ + id: message.get('conversationId') + }); + + if (conversation) { + conversation.onReadMessage(message); + } + }, }))(); })();