diff --git a/lib/shared/messages/multimedia-message-spec.js b/lib/shared/messages/multimedia-message-spec.js --- a/lib/shared/messages/multimedia-message-spec.js +++ b/lib/shared/messages/multimedia-message-spec.js @@ -5,8 +5,8 @@ import { type MessageSpec, type MessageTitleParam, - messageNotifyTypes, type RawMessageInfoFromServerDBRowParams, + messageNotifyTypes, } from './message-spec.js'; import { joinResult } from './utils.js'; import { @@ -309,7 +309,17 @@ async notificationTexts( messageInfos: $ReadOnlyArray<MessageInfo>, threadInfo: ThreadInfo, - ): Promise<NotifTexts> { + ): Promise<?NotifTexts> { + // We don't send any notifs in the sidebarCreation case + // in order to avoid a double-notif + if ( + messageInfos.length === 3 && + messageInfos[2].type === messageTypes.SIDEBAR_SOURCE && + messageInfos[1].type === messageTypes.CREATE_SIDEBAR + ) { + return null; + } + const media = []; for (const messageInfo of messageInfos) { invariant( @@ -345,7 +355,11 @@ notificationCollapseKey( rawMessageInfo: RawMediaMessageInfo | RawImagesMessageInfo, + messageData: MediaMessageData | ImagesMessageData, ): string { + if (messageData.sidebarCreation) { + return joinResult(messageTypes.CREATE_SIDEBAR, rawMessageInfo.threadID); + } // We use the legacy constant here to collapse both types into one return joinResult( messageTypes.IMAGES, @@ -354,13 +368,7 @@ ); }, - getMessageNotifyType: async ( - rawMessageInfo: RawMediaMessageInfo | RawImagesMessageInfo, - messageData: MediaMessageData | ImagesMessageData, - ) => - messageData.sidebarCreation - ? messageNotifyTypes.SET_UNREAD - : messageNotifyTypes.NOTIF_AND_SET_UNREAD, + getMessageNotifyType: async () => messageNotifyTypes.NOTIF_AND_SET_UNREAD, includedInRepliesCount: true,