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(); + } }); }