diff --git a/lib/shared/messages/delete-message-spec.js b/lib/shared/messages/delete-message-spec.js --- a/lib/shared/messages/delete-message-spec.js +++ b/lib/shared/messages/delete-message-spec.js @@ -3,12 +3,15 @@ import invariant from 'invariant'; import type { MessageSpec, MessageTitleParam } from './message-spec.js'; +import { messageNotifyTypes } from './message-spec.js'; +import { joinResult } from './utils.js'; import type { PlatformDetails } from '../../types/device-types.js'; import { assertMessageType, messageTypes, } from '../../types/message-types-enum.js'; import type { ClientDBMessageInfo } from '../../types/message-types.js'; +import { composableMessageNotifPrefix } from '../../types/message-types.js'; import type { DeleteMessageData, DeleteMessageInfo, @@ -129,6 +132,15 @@ return unwrapped; }, + notificationCollapseKey(rawMessageInfo: RawDeleteMessageInfo): string { + return joinResult( + composableMessageNotifPrefix, + rawMessageInfo.targetMessageID, + ); + }, + + getMessageNotifyType: async () => messageNotifyTypes.RESCIND, + canBeSidebarSource: false, canBePinned: false, 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 @@ -26,6 +26,7 @@ RawMessageInfo, } from '../../types/message-types.js'; import { + composableMessageNotifPrefix, isMediaMessageType, rawMultimediaMessageInfoValidator, } from '../../types/message-types.js'; @@ -356,16 +357,13 @@ notificationCollapseKey( rawMessageInfo: RawMediaMessageInfo | RawImagesMessageInfo, messageData: MediaMessageData | ImagesMessageData, - ): string { + ): ?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, - rawMessageInfo.threadID, - rawMessageInfo.creatorID, - ); + return rawMessageInfo.id + ? joinResult(composableMessageNotifPrefix, rawMessageInfo.id) + : null; }, getMessageNotifyType: async () => messageNotifyTypes.NOTIF_AND_SET_UNREAD, diff --git a/lib/shared/messages/text-message-spec.js b/lib/shared/messages/text-message-spec.js --- a/lib/shared/messages/text-message-spec.js +++ b/lib/shared/messages/text-message-spec.js @@ -19,6 +19,7 @@ ClientDBMessageInfo, MessageInfo, } from '../../types/message-types.js'; +import { composableMessageNotifPrefix } from '../../types/message-types.js'; import { type RawTextMessageInfo, rawTextMessageInfoValidator, @@ -283,10 +284,12 @@ rawMessageInfo: RawTextMessageInfo, messageData: TextMessageData, ): ?string { - if (!messageData.sidebarCreation) { - return null; + if (messageData.sidebarCreation) { + return joinResult(messageTypes.CREATE_SIDEBAR, rawMessageInfo.threadID); } - return joinResult(messageTypes.CREATE_SIDEBAR, rawMessageInfo.threadID); + return rawMessageInfo.id + ? joinResult(composableMessageNotifPrefix, rawMessageInfo.id) + : null; }, getMessageNotifyType: async () => messageNotifyTypes.NOTIF_AND_SET_UNREAD, diff --git a/lib/types/message-types.js b/lib/types/message-types.js --- a/lib/types/message-types.js +++ b/lib/types/message-types.js @@ -186,6 +186,8 @@ ); return message; } +export const composableMessageNotifPrefix = 'composable'; + export function messageDataLocalID(messageData: MessageData): ?string { if ( messageData.type !== messageTypes.TEXT &&