diff --git a/ts/models/messages.ts b/ts/models/messages.ts index d1842d4965..b6f28f57d0 100644 --- a/ts/models/messages.ts +++ b/ts/models/messages.ts @@ -3021,18 +3021,36 @@ export class MessageModel extends window.Backbone.Model { } } - if ( - isStory(message.attributes) && - !message.get('expirationStartTimestamp') - ) { - message.set( - 'expirationStartTimestamp', - Math.min( - message.get('serverTimestamp') || message.get('timestamp'), - Date.now() - ) - ); - changed = true; + if (isStory(message.attributes)) { + const viewSyncs = ViewSyncs.getSingleton().forMessage(message); + + if (viewSyncs.length !== 0) { + message.set({ + readStatus: ReadStatus.Viewed, + seenStatus: SeenStatus.Seen, + }); + changed = true; + + const markReadAt = Math.min( + Date.now(), + ...viewSyncs.map(sync => sync.get('viewedAt')) + ); + this.pendingMarkRead = Math.min( + this.pendingMarkRead ?? Date.now(), + markReadAt + ); + } + + if (!message.get('expirationStartTimestamp')) { + message.set( + 'expirationStartTimestamp', + Math.min( + message.get('serverTimestamp') || message.get('timestamp'), + Date.now() + ) + ); + changed = true; + } } // Does this message have any pending, previously-received associated reactions?