diff --git a/keyserver/src/creators/message-creator.js b/keyserver/src/creators/message-creator.js --- a/keyserver/src/creators/message-creator.js +++ b/keyserver/src/creators/message-creator.js @@ -11,7 +11,7 @@ shimUnsupportedRawMessageInfos, stripLocalIDs, } from 'lib/shared/message-utils.js'; -import { pushTypes } from 'lib/shared/messages/message-spec.js'; +import { messageNotifyTypes } from 'lib/shared/messages/message-spec.js'; import { messageSpecs } from 'lib/shared/messages/message-specs.js'; import { messageTypes } from 'lib/types/message-types-enum.js'; import { @@ -442,7 +442,7 @@ } const userPushInfoPromise = generateNotifUserInfoPromise({ - pushType: pushTypes.NOTIF, + messageNotifyType: messageNotifyTypes.NOTIF_AND_SET_UNREAD, devices: userDevices, newMessageInfos: messageInfos, messageDatas, @@ -454,7 +454,7 @@ userID, }); const userRescindInfoPromise = generateNotifUserInfoPromise({ - pushType: pushTypes.RESCIND, + messageNotifyType: messageNotifyTypes.RESCIND, devices: userDevices, newMessageInfos: messageInfos, messageDatas, diff --git a/lib/push/send-utils.js b/lib/push/send-utils.js --- a/lib/push/send-utils.js +++ b/lib/push/send-utils.js @@ -28,7 +28,7 @@ shimUnsupportedRawMessageInfos, sortMessageInfoList, } from '../shared/message-utils.js'; -import { pushTypes } from '../shared/messages/message-spec.js'; +import { messageNotifyTypes } from '../shared/messages/message-spec.js'; import { messageSpecs } from '../shared/messages/message-specs.js'; import { notifTextsForMessageInfo, @@ -218,7 +218,7 @@ userPushInfoPromises[userID] = (async () => { const pushInfosWithoutSubscriptions = await generateNotifUserInfoPromise({ - pushType: pushTypes.NOTIF, + messageNotifyType: messageNotifyTypes.NOTIF_AND_SET_UNREAD, devices: pushUserThreadInfo.devices, newMessageInfos, messageDatas, @@ -240,7 +240,7 @@ userRescindInfoPromises[userID] = (async () => { const pushInfosWithoutSubscriptions = await generateNotifUserInfoPromise({ - pushType: pushTypes.RESCIND, + messageNotifyType: messageNotifyTypes.RESCIND, devices: pushUserThreadInfo.devices, newMessageInfos, messageDatas, diff --git a/lib/push/utils.js b/lib/push/utils.js --- a/lib/push/utils.js +++ b/lib/push/utils.js @@ -5,7 +5,7 @@ import type { Device, ThreadSubscriptionWithRole } from './send-utils.js'; import { oldValidUsernameRegex } from '../shared/account-utils.js'; import { isUserMentioned } from '../shared/mention-utils.js'; -import { type PushType } from '../shared/messages/message-spec.js'; +import { type MessageNotifyType } from '../shared/messages/message-spec.js'; import { messageSpecs } from '../shared/messages/message-specs.js'; import type { Platform } from '../types/device-types.js'; import { messageTypes } from '../types/message-types-enum.js'; @@ -90,7 +90,7 @@ } type GenerateNotifUserInfoPromiseInputData = { - +pushType: PushType, + +messageNotifyType: MessageNotifyType, +devices: $ReadOnlyArray, +newMessageInfos: $ReadOnlyArray, +messageDatas: $ReadOnlyArray, @@ -109,7 +109,7 @@ messageInfos: Array, }> { const { - pushType, + messageNotifyType, devices, newMessageInfos, messageDatas, @@ -139,14 +139,14 @@ } const { type } = messageInfo; - const { generatesNotifs } = messageSpecs[type]; + const { getMessageNotifyType } = messageSpecs[type]; - if (!generatesNotifs) { + if (!getMessageNotifyType) { return undefined; } const messageData = messageDatas[messageIndex]; - const doesGenerateNotif = await generatesNotifs( + const thisMessageNotifyType = await getMessageNotifyType( messageInfo, messageData, { @@ -156,7 +156,7 @@ }, ); - return doesGenerateNotif === pushType + return thisMessageNotifyType === messageNotifyType ? { messageInfo, messageData } : undefined; }), diff --git a/lib/shared/messages/change-role-message-spec.js b/lib/shared/messages/change-role-message-spec.js --- a/lib/shared/messages/change-role-message-spec.js +++ b/lib/shared/messages/change-role-message-spec.js @@ -6,7 +6,7 @@ type CreateMessageInfoParams, type MessageSpec, type NotificationTextsParams, - pushTypes, + messageNotifyTypes, type RobotextParams, } from './message-spec.js'; import { joinResult } from './utils.js'; @@ -243,7 +243,7 @@ ); }, - generatesNotifs: async () => pushTypes.NOTIF, + getMessageNotifyType: async () => messageNotifyTypes.NOTIF_AND_SET_UNREAD, canBeSidebarSource: true, diff --git a/lib/shared/messages/change-settings-message-spec.js b/lib/shared/messages/change-settings-message-spec.js --- a/lib/shared/messages/change-settings-message-spec.js +++ b/lib/shared/messages/change-settings-message-spec.js @@ -5,7 +5,7 @@ import { type MessageSpec, type NotificationTextsParams, - pushTypes, + messageNotifyTypes, type RobotextParams, } from './message-spec.js'; import { joinResult } from './utils.js'; @@ -190,7 +190,7 @@ ); }, - generatesNotifs: async () => pushTypes.NOTIF, + getMessageNotifyType: async () => messageNotifyTypes.NOTIF_AND_SET_UNREAD, canBeSidebarSource: true, diff --git a/lib/shared/messages/create-entry-message-spec.js b/lib/shared/messages/create-entry-message-spec.js --- a/lib/shared/messages/create-entry-message-spec.js +++ b/lib/shared/messages/create-entry-message-spec.js @@ -2,7 +2,7 @@ import invariant from 'invariant'; -import { type MessageSpec, pushTypes } from './message-spec.js'; +import { type MessageSpec, messageNotifyTypes } from './message-spec.js'; import { joinResult } from './utils.js'; import { messageTypes } from '../../types/message-types-enum.js'; import type { @@ -128,7 +128,7 @@ return joinResult(rawMessageInfo.creatorID, rawMessageInfo.entryID); }, - generatesNotifs: async () => pushTypes.NOTIF, + getMessageNotifyType: async () => messageNotifyTypes.NOTIF_AND_SET_UNREAD, canBeSidebarSource: true, diff --git a/lib/shared/messages/create-sidebar-message-spec.js b/lib/shared/messages/create-sidebar-message-spec.js --- a/lib/shared/messages/create-sidebar-message-spec.js +++ b/lib/shared/messages/create-sidebar-message-spec.js @@ -6,7 +6,7 @@ type CreateMessageInfoParams, type MessageSpec, type NotificationTextsParams, - pushTypes, + messageNotifyTypes, type RobotextParams, } from './message-spec.js'; import { joinResult } from './utils.js'; @@ -205,7 +205,7 @@ return joinResult(messageTypes.CREATE_SIDEBAR, rawMessageInfo.threadID); }, - generatesNotifs: async () => pushTypes.NOTIF, + getMessageNotifyType: async () => messageNotifyTypes.NOTIF_AND_SET_UNREAD, userIDs( rawMessageInfo: RawCreateSidebarMessageInfo, diff --git a/lib/shared/messages/create-sub-thread-message-spec.js b/lib/shared/messages/create-sub-thread-message-spec.js --- a/lib/shared/messages/create-sub-thread-message-spec.js +++ b/lib/shared/messages/create-sub-thread-message-spec.js @@ -6,7 +6,7 @@ type CreateMessageInfoParams, type GeneratesNotifsParams, type MessageSpec, - pushTypes, + messageNotifyTypes, } from './message-spec.js'; import { assertSingleMessageInfo } from './utils.js'; import { permissionLookup } from '../../permissions/thread-permissions.js'; @@ -155,15 +155,15 @@ }); }, - generatesNotifs: async ( + getMessageNotifyType: async ( rawMessageInfo: RawCreateSubthreadMessageInfo, messageData: CreateSubthreadMessageData, params: GeneratesNotifsParams, ) => { const { userNotMemberOfSubthreads } = params; return userNotMemberOfSubthreads.has(rawMessageInfo.childThreadID) - ? pushTypes.NOTIF - : undefined; + ? messageNotifyTypes.NOTIF_AND_SET_UNREAD + : messageNotifyTypes.SET_UNREAD; }, threadIDs( diff --git a/lib/shared/messages/create-thread-message-spec.js b/lib/shared/messages/create-thread-message-spec.js --- a/lib/shared/messages/create-thread-message-spec.js +++ b/lib/shared/messages/create-thread-message-spec.js @@ -5,7 +5,7 @@ import { type CreateMessageInfoParams, type MessageSpec, - pushTypes, + messageNotifyTypes, type RobotextParams, } from './message-spec.js'; import { assertSingleMessageInfo } from './utils.js'; @@ -205,7 +205,7 @@ }; }, - generatesNotifs: async () => pushTypes.NOTIF, + getMessageNotifyType: async () => messageNotifyTypes.NOTIF_AND_SET_UNREAD, userIDs(rawMessageInfo: RawCreateThreadMessageInfo): $ReadOnlyArray { return rawMessageInfo.initialThreadState.memberIDs; diff --git a/lib/shared/messages/delete-entry-message-spec.js b/lib/shared/messages/delete-entry-message-spec.js --- a/lib/shared/messages/delete-entry-message-spec.js +++ b/lib/shared/messages/delete-entry-message-spec.js @@ -2,7 +2,7 @@ import invariant from 'invariant'; -import { type MessageSpec, pushTypes } from './message-spec.js'; +import { type MessageSpec, messageNotifyTypes } from './message-spec.js'; import { assertSingleMessageInfo } from './utils.js'; import { messageTypes } from '../../types/message-types-enum.js'; import type { @@ -143,7 +143,7 @@ }; }, - generatesNotifs: async () => pushTypes.NOTIF, + getMessageNotifyType: async () => messageNotifyTypes.NOTIF_AND_SET_UNREAD, canBeSidebarSource: true, diff --git a/lib/shared/messages/edit-entry-message-spec.js b/lib/shared/messages/edit-entry-message-spec.js --- a/lib/shared/messages/edit-entry-message-spec.js +++ b/lib/shared/messages/edit-entry-message-spec.js @@ -2,7 +2,7 @@ import invariant from 'invariant'; -import { type MessageSpec, pushTypes } from './message-spec.js'; +import { type MessageSpec, messageNotifyTypes } from './message-spec.js'; import { joinResult } from './utils.js'; import { messageTypes } from '../../types/message-types-enum.js'; import type { @@ -128,7 +128,7 @@ return joinResult(rawMessageInfo.creatorID, rawMessageInfo.entryID); }, - generatesNotifs: async () => pushTypes.NOTIF, + getMessageNotifyType: async () => messageNotifyTypes.NOTIF_AND_SET_UNREAD, canBeSidebarSource: true, diff --git a/lib/shared/messages/message-spec.js b/lib/shared/messages/message-spec.js --- a/lib/shared/messages/message-spec.js +++ b/lib/shared/messages/message-spec.js @@ -60,11 +60,17 @@ +fetchMessageInfoByID: (messageID: string) => Promise, }; -export const pushTypes = Object.freeze({ - NOTIF: 'notif', +export const messageNotifyTypes = Object.freeze({ + // Set the thread as unread and send a push notif + NOTIF_AND_SET_UNREAD: 'notif_and_set_unread', + // Set the thread as unread but don't send a push notif. This is the default + SET_UNREAD: 'set_unread', + // Do not set the thread as unread and don't send a push notif + NONE: 'none', + // Rescind all notifs with a matching notificationCollapseKey RESCIND: 'rescind', }); -export type PushType = $Values; +export type MessageNotifyType = $Values; export type CreationSideEffectsFunc = ( messageInfo: RawInfo, @@ -117,11 +123,11 @@ rawMessageInfo: RawInfo, messageData: Data, ) => ?string, - +generatesNotifs?: ( + +getMessageNotifyType?: ( rawMessageInfo: RawInfo, messageData: Data, params: GeneratesNotifsParams, - ) => Promise, + ) => Promise, +userIDs?: (rawMessageInfo: RawInfo) => $ReadOnlyArray, +startsThread?: boolean, +threadIDs?: (rawMessageInfo: RawInfo) => $ReadOnlyArray, 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,7 +5,7 @@ import { type MessageSpec, type MessageTitleParam, - pushTypes, + messageNotifyTypes, type RawMessageInfoFromServerDBRowParams, } from './message-spec.js'; import { joinResult } from './utils.js'; @@ -354,10 +354,13 @@ ); }, - generatesNotifs: async ( + getMessageNotifyType: async ( rawMessageInfo: RawMediaMessageInfo | RawImagesMessageInfo, messageData: MediaMessageData | ImagesMessageData, - ) => (messageData.sidebarCreation ? undefined : pushTypes.NOTIF), + ) => + messageData.sidebarCreation + ? messageNotifyTypes.SET_UNREAD + : messageNotifyTypes.NOTIF_AND_SET_UNREAD, includedInRepliesCount: true, diff --git a/lib/shared/messages/reaction-message-spec.js b/lib/shared/messages/reaction-message-spec.js --- a/lib/shared/messages/reaction-message-spec.js +++ b/lib/shared/messages/reaction-message-spec.js @@ -6,7 +6,7 @@ type GeneratesNotifsParams, type MessageSpec, type MessageTitleParam, - pushTypes, + messageNotifyTypes, } from './message-spec.js'; import { assertSingleMessageInfo, joinResult } from './utils.js'; import type { PlatformDetails } from '../../types/device-types.js'; @@ -200,7 +200,7 @@ ); }, - generatesNotifs: async ( + getMessageNotifyType: async ( rawMessageInfo: RawReactionMessageInfo, messageData: ReactionMessageData, params: GeneratesNotifsParams, @@ -213,9 +213,11 @@ ); if (targetMessageInfo?.creatorID !== notifTargetUserID) { - return undefined; + return messageNotifyTypes.SET_UNREAD; } - return action === 'add_reaction' ? pushTypes.NOTIF : pushTypes.RESCIND; + return action === 'add_reaction' + ? messageNotifyTypes.NOTIF_AND_SET_UNREAD + : messageNotifyTypes.RESCIND; }, canBeSidebarSource: false, diff --git a/lib/shared/messages/restore-entry-message-spec.js b/lib/shared/messages/restore-entry-message-spec.js --- a/lib/shared/messages/restore-entry-message-spec.js +++ b/lib/shared/messages/restore-entry-message-spec.js @@ -2,7 +2,7 @@ import invariant from 'invariant'; -import { type MessageSpec, pushTypes } from './message-spec.js'; +import { type MessageSpec, messageNotifyTypes } from './message-spec.js'; import { assertSingleMessageInfo } from './utils.js'; import { messageTypes } from '../../types/message-types-enum.js'; import type { @@ -143,7 +143,7 @@ }; }, - generatesNotifs: async () => pushTypes.NOTIF, + getMessageNotifyType: async () => messageNotifyTypes.NOTIF_AND_SET_UNREAD, canBeSidebarSource: true, diff --git a/lib/shared/messages/sidebar-source-message-spec.js b/lib/shared/messages/sidebar-source-message-spec.js --- a/lib/shared/messages/sidebar-source-message-spec.js +++ b/lib/shared/messages/sidebar-source-message-spec.js @@ -3,7 +3,7 @@ import invariant from 'invariant'; import { - pushTypes, + messageNotifyTypes, type CreateMessageInfoParams, type MessageSpec, type RawMessageInfoFromServerDBRowParams, @@ -141,7 +141,7 @@ return joinResult(messageTypes.CREATE_SIDEBAR, rawMessageInfo.threadID); }, - generatesNotifs: async () => pushTypes.NOTIF, + getMessageNotifyType: async () => messageNotifyTypes.NOTIF_AND_SET_UNREAD, startsThread: true, 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 @@ -6,7 +6,7 @@ import { type MessageSpec, type NotificationTextsParams, - pushTypes, + messageNotifyTypes, type RawMessageInfoFromServerDBRowParams, } from './message-spec.js'; import { assertSingleMessageInfo, joinResult } from './utils.js'; @@ -289,7 +289,7 @@ return joinResult(messageTypes.CREATE_SIDEBAR, rawMessageInfo.threadID); }, - generatesNotifs: async () => pushTypes.NOTIF, + getMessageNotifyType: async () => messageNotifyTypes.NOTIF_AND_SET_UNREAD, includedInRepliesCount: true, diff --git a/lib/shared/messages/unsupported-message-spec.js b/lib/shared/messages/unsupported-message-spec.js --- a/lib/shared/messages/unsupported-message-spec.js +++ b/lib/shared/messages/unsupported-message-spec.js @@ -2,7 +2,7 @@ import invariant from 'invariant'; -import { pushTypes, type MessageSpec } from './message-spec.js'; +import { messageNotifyTypes, type MessageSpec } from './message-spec.js'; import { messageTypes } from '../../types/message-types-enum.js'; import type { ClientDBMessageInfo } from '../../types/message-types.js'; import { @@ -72,7 +72,7 @@ return ET`${creator} ${messageInfo.robotext}`; }, - generatesNotifs: async () => pushTypes.NOTIF, + getMessageNotifyType: async () => messageNotifyTypes.NOTIF_AND_SET_UNREAD, canBeSidebarSource: true, diff --git a/lib/shared/messages/update-relationship-message-spec.js b/lib/shared/messages/update-relationship-message-spec.js --- a/lib/shared/messages/update-relationship-message-spec.js +++ b/lib/shared/messages/update-relationship-message-spec.js @@ -7,7 +7,7 @@ type CreateMessageInfoParams, type MessageSpec, type MergeRobotextMessageItemResult, - pushTypes, + messageNotifyTypes, } from './message-spec.js'; import { assertSingleMessageInfo } from './utils.js'; import type { RobotextChatMessageInfoItem } from '../../selectors/chat-selectors.js'; @@ -349,7 +349,7 @@ return { merged, body, title, prefix }; }, - generatesNotifs: async () => pushTypes.NOTIF, + getMessageNotifyType: async () => messageNotifyTypes.NOTIF_AND_SET_UNREAD, canBeSidebarSource: true, diff --git a/native/types/message-types-validator.js b/native/types/message-types-validator.js --- a/native/types/message-types-validator.js +++ b/native/types/message-types-validator.js @@ -12,7 +12,7 @@ for (const messageName in messageTypes) { const messageType = messageTypes[messageName]; if ( - messageSpecs[messageType]?.generatesNotifs && + messageSpecs[messageType]?.getMessageNotifyType && !messageTypesCpp.has(messageType) ) { missingMessageTypesCpp.push(messageName);