diff --git a/ts/groups.ts b/ts/groups.ts index dfc691549..9b736288c 100644 --- a/ts/groups.ts +++ b/ts/groups.ts @@ -2842,18 +2842,6 @@ async function updateGroup( activeAt = newAttributes.active_at; } - conversation.set({ - ...newAttributes, - active_at: activeAt, - temporaryMemberCount: isInGroup - ? undefined - : newAttributes.temporaryMemberCount, - }); - - if (idChanged) { - conversation.trigger('idUpdated', conversation, 'groupId', previousId); - } - // Save all synthetic messages describing group changes let syntheticSentAt = initialSentAt - (groupChangeMessages.length + 1); const changeMessagesToSave = groupChangeMessages.map(changeMessage => { @@ -2915,6 +2903,21 @@ async function updateGroup( }); } + // We update group membership last to ensure that all notifications are in place before + // the group updates happen on the model. + + conversation.set({ + ...newAttributes, + active_at: activeAt, + temporaryMemberCount: isInGroup + ? undefined + : newAttributes.temporaryMemberCount, + }); + + if (idChanged) { + conversation.trigger('idUpdated', conversation, 'groupId', previousId); + } + // No need for convo.updateLastMessage(), 'newmessage' handler does that }