diff --git a/js/models/messages.js b/js/models/messages.js index a685a45b5..14dfe9f11 100644 --- a/js/models/messages.js +++ b/js/models/messages.js @@ -394,14 +394,6 @@ }); } attributes.active_at = now; - if (type === 'incoming') { - // experimental - if (Whisper.ReadReceipts.forMessage(message) || message.isExpirationTimerUpdate()) { - message.unset('unread'); - } else { - attributes.unreadCount = conversation.get('unreadCount') + 1; - } - } conversation.set(attributes); if (message.isExpirationTimerUpdate()) { @@ -428,6 +420,19 @@ message.get('received_at')); } } + if (type === 'incoming') { + var readReceipt = Whisper.ReadReceipts.forMessage(message); + if (readReceipt) { + if (message.get('expireTimer') && !message.get('expirationStartTimestamp')) { + message.set('expirationStartTimestamp', readReceipt.get('read_at')); + } + } + if (readReceipt || message.isExpirationTimerUpdate()) { + message.unset('unread'); + } else { + conversation.set('unreadCount', conversation.get('unreadCount') + 1); + } + } var conversation_timestamp = conversation.get('timestamp'); if (!conversation_timestamp || message.get('sent_at') > conversation_timestamp) {