From ce77465d23478aaea2f562be69cb595473638154 Mon Sep 17 00:00:00 2001 From: Josh Perez <60019601+josh-signal@users.noreply.github.com> Date: Tue, 16 Aug 2022 19:45:03 -0400 Subject: [PATCH] Mark stories as viewed if we have a view sync during modifyTargetMessage --- ts/models/messages.ts | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/ts/models/messages.ts b/ts/models/messages.ts index d1842d49652..b6f28f57d01 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?