From 6ff86c3747b6a43c9d4785ed0df14f0f2e642fba Mon Sep 17 00:00:00 2001 From: automated-signal <37887102+automated-signal@users.noreply.github.com> Date: Fri, 7 Oct 2022 12:12:11 -0700 Subject: [PATCH] Handle storyMessageRecipient updates before handling story messages Co-authored-by: Josh Perez <60019601+josh-signal@users.noreply.github.com> --- ts/textsecure/MessageReceiver.ts | 18 +++++++++--------- ts/util/onStoryRecipientUpdate.ts | 16 ++++++++++------ 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/ts/textsecure/MessageReceiver.ts b/ts/textsecure/MessageReceiver.ts index c594df945..50dd9af36 100644 --- a/ts/textsecure/MessageReceiver.ts +++ b/ts/textsecure/MessageReceiver.ts @@ -2688,15 +2688,6 @@ export default class MessageReceiver if (syncMessage.sent) { const sentMessage = syncMessage.sent; - if (sentMessage.storyMessage) { - this.handleStoryMessage( - envelope, - sentMessage.storyMessage, - sentMessage - ); - return; - } - if (sentMessage.storyMessageRecipients && sentMessage.isRecipientUpdate) { if (window.Events.getHasStoriesDisabled()) { log.info( @@ -2721,6 +2712,15 @@ export default class MessageReceiver return this.dispatchAndWait(ev); } + if (sentMessage.storyMessage) { + this.handleStoryMessage( + envelope, + sentMessage.storyMessage, + sentMessage + ); + return; + } + if (!sentMessage || !sentMessage.message) { throw new Error( 'MessageReceiver.handleSyncMessage: sync sent message was missing message' diff --git a/ts/util/onStoryRecipientUpdate.ts b/ts/util/onStoryRecipientUpdate.ts index c544e6fca..0bd79d23f 100644 --- a/ts/util/onStoryRecipientUpdate.ts +++ b/ts/util/onStoryRecipientUpdate.ts @@ -76,15 +76,15 @@ export async function onStoryRecipientUpdate( const messages = await window.Signal.Data.getMessagesBySentAt(timestamp); // Now we figure out who needs to be added and who needs to removed - messages.forEach(item => { + const handledMessages = messages.filter(item => { if (!isStory(item)) { - return; + return false; } const { sendStateByConversationId, storyDistributionListId } = item; if (!sendStateByConversationId || !storyDistributionListId) { - return; + return false; } const nextSendStateByConversationId = { @@ -136,7 +136,7 @@ export async function onStoryRecipientUpdate( log.info( 'onStoryRecipientUpdate: sendStateByConversationId does not need update' ); - return; + return true; } const message = window.MessageController.register(item.id, item); @@ -170,9 +170,13 @@ export async function onStoryRecipientUpdate( }); queueUpdateMessage(message.attributes); } + + return true; }); - window.Whisper.events.trigger('incrementProgress'); - confirm(); + if (handledMessages.length) { + window.Whisper.events.trigger('incrementProgress'); + confirm(); + } }); }