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 @@ -9,6 +9,7 @@ shimUnsupportedRawMessageInfos, stripLocalIDs, } from 'lib/shared/message-utils'; +import { pushTypes } from 'lib/shared/messages/message-spec'; import { messageSpecs } from 'lib/shared/messages/message-specs'; import { messageTypes, @@ -396,7 +397,9 @@ fetchMessageInfoByID: (messageID: string) => fetchMessageInfoByID(viewer, messageID), }); - return doesGenerateNotif ? messageInfo : undefined; + return doesGenerateNotif && doesGenerateNotif === pushTypes.NOTIF + ? messageInfo + : undefined; }), ); } diff --git a/lib/shared/messages/add-members-message-spec.js b/lib/shared/messages/add-members-message-spec.js --- a/lib/shared/messages/add-members-message-spec.js +++ b/lib/shared/messages/add-members-message-spec.js @@ -177,7 +177,7 @@ ); }, - generatesNotifs: async () => false, + generatesNotifs: async () => undefined, userIDs(rawMessageInfo: RawAddMembersMessageInfo): $ReadOnlyArray { return rawMessageInfo.addedUserIDs; 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 @@ -21,12 +21,13 @@ robotextForMessageInfo, removeCreatorAsViewer, } from '../message-utils'; -import type { - CreateMessageInfoParams, - MessageSpec, - MessageTitleParam, - NotificationTextsParams, - RobotextParams, +import { + pushTypes, + type CreateMessageInfoParams, + type MessageSpec, + type MessageTitleParam, + type NotificationTextsParams, + type RobotextParams, } from './message-spec'; import { joinResult } from './utils'; @@ -192,5 +193,5 @@ ); }, - generatesNotifs: async () => true, + generatesNotifs: async () => pushTypes.NOTIF, }); 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 @@ -23,11 +23,12 @@ removeCreatorAsViewer, } from '../message-utils'; import { threadLabel } from '../thread-utils'; -import type { - MessageSpec, - MessageTitleParam, - NotificationTextsParams, - RobotextParams, +import { + pushTypes, + type MessageSpec, + type MessageTitleParam, + type NotificationTextsParams, + type RobotextParams, } from './message-spec'; import { joinResult } from './utils'; @@ -190,5 +191,5 @@ ); }, - generatesNotifs: async () => true, + generatesNotifs: async () => pushTypes.NOTIF, }); 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 @@ -22,10 +22,11 @@ removeCreatorAsViewer, } from '../message-utils'; import { stringForUser } from '../user-utils'; -import type { - MessageSpec, - MessageTitleParam, - NotificationTextsParams, +import { + pushTypes, + type MessageSpec, + type MessageTitleParam, + type NotificationTextsParams, } from './message-spec'; import { joinResult } from './utils'; @@ -179,5 +180,5 @@ return joinResult(rawMessageInfo.creatorID, rawMessageInfo.entryID); }, - generatesNotifs: async () => true, + generatesNotifs: async () => pushTypes.NOTIF, }); 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 @@ -24,11 +24,12 @@ } from '../message-utils'; import { stringForUser } from '../user-utils'; import { hasMinCodeVersion } from '../version-utils'; -import type { - CreateMessageInfoParams, - MessageSpec, - MessageTitleParam, - RobotextParams, +import { + pushTypes, + type CreateMessageInfoParams, + type MessageSpec, + type MessageTitleParam, + type RobotextParams, } from './message-spec'; import { assertSingleMessageInfo } from './utils'; @@ -236,7 +237,7 @@ }; }, - generatesNotifs: async () => true, + generatesNotifs: async () => pushTypes.NOTIF, userIDs(rawMessageInfo: RawCreateSidebarMessageInfo): $ReadOnlyArray { return rawMessageInfo.initialThreadState.memberIDs; 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 @@ -22,12 +22,13 @@ robotextForMessageInfo, removeCreatorAsViewer, } from '../message-utils'; -import type { - CreateMessageInfoParams, - MessageSpec, - MessageTitleParam, - NotificationTextsParams, - GeneratesNotifsParams, +import { + pushTypes, + type CreateMessageInfoParams, + type MessageSpec, + type MessageTitleParam, + type NotificationTextsParams, + type GeneratesNotifsParams, } from './message-spec'; import { assertSingleMessageInfo } from './utils'; @@ -165,7 +166,9 @@ params: GeneratesNotifsParams, ) => { const { userNotMemberOfSubthreads } = params; - return userNotMemberOfSubthreads.has(rawMessageInfo.childThreadID); + return userNotMemberOfSubthreads.has(rawMessageInfo.childThreadID) + ? pushTypes.NOTIF + : undefined; }, 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 @@ -21,12 +21,13 @@ removeCreatorAsViewer, } from '../message-utils'; import { stringForUser } from '../user-utils'; -import type { - CreateMessageInfoParams, - MessageSpec, - MessageTitleParam, - NotificationTextsParams, - RobotextParams, +import { + pushTypes, + type CreateMessageInfoParams, + type MessageSpec, + type MessageTitleParam, + type NotificationTextsParams, + type RobotextParams, } from './message-spec'; import { assertSingleMessageInfo } from './utils'; @@ -202,7 +203,7 @@ }; }, - generatesNotifs: async () => true, + generatesNotifs: async () => pushTypes.NOTIF, 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 @@ -22,10 +22,11 @@ removeCreatorAsViewer, } from '../message-utils'; import { stringForUser } from '../user-utils'; -import type { - MessageSpec, - MessageTitleParam, - NotificationTextsParams, +import { + pushTypes, + type MessageSpec, + type MessageTitleParam, + type NotificationTextsParams, } from './message-spec'; import { assertSingleMessageInfo } from './utils'; @@ -153,5 +154,5 @@ }; }, - generatesNotifs: async () => true, + generatesNotifs: async () => pushTypes.NOTIF, }); 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 @@ -22,10 +22,11 @@ removeCreatorAsViewer, } from '../message-utils'; import { stringForUser } from '../user-utils'; -import type { - MessageSpec, - MessageTitleParam, - NotificationTextsParams, +import { + pushTypes, + type MessageSpec, + type MessageTitleParam, + type NotificationTextsParams, } from './message-spec'; import { joinResult } from './utils'; @@ -179,5 +180,5 @@ return joinResult(rawMessageInfo.creatorID, rawMessageInfo.entryID); }, - generatesNotifs: async () => true, + generatesNotifs: async () => pushTypes.NOTIF, }); diff --git a/lib/shared/messages/join-thread-message-spec.js b/lib/shared/messages/join-thread-message-spec.js --- a/lib/shared/messages/join-thread-message-spec.js +++ b/lib/shared/messages/join-thread-message-spec.js @@ -134,5 +134,5 @@ return joinResult(rawMessageInfo.type, rawMessageInfo.threadID); }, - generatesNotifs: async () => false, + generatesNotifs: async () => undefined, }); diff --git a/lib/shared/messages/leave-thread-message-spec.js b/lib/shared/messages/leave-thread-message-spec.js --- a/lib/shared/messages/leave-thread-message-spec.js +++ b/lib/shared/messages/leave-thread-message-spec.js @@ -134,5 +134,5 @@ return joinResult(rawMessageInfo.type, rawMessageInfo.threadID); }, - generatesNotifs: async () => false, + generatesNotifs: async () => undefined, }); 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 @@ -73,6 +73,12 @@ +fetchMessageInfoByID: (messageID: string) => Promise, }; +export const pushTypes = Object.freeze({ + NOTIF: 'notif', + RESCIND: 'rescind', +}); +export type PushType = $Values; + export type MessageSpec = { +messageContentForServerDB?: (data: Data | RawInfo) => string, +messageContentForClientDB?: (data: RawInfo) => string, @@ -112,7 +118,7 @@ +generatesNotifs: ( rawMessageInfo: RawInfo, 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 @@ -47,11 +47,12 @@ import { threadIsGroupChat } from '../thread-utils'; import { stringForUser } from '../user-utils'; import { hasMinCodeVersion } from '../version-utils'; -import type { - MessageSpec, - MessageTitleParam, - NotificationTextsParams, - RawMessageInfoFromServerDBRowParams, +import { + pushTypes, + type MessageSpec, + type MessageTitleParam, + type NotificationTextsParams, + type RawMessageInfoFromServerDBRowParams, } from './message-spec'; import { joinResult } from './utils'; @@ -318,7 +319,8 @@ ); }, - generatesNotifs: async () => true, + generatesNotifs: async () => pushTypes.NOTIF, + 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 @@ -22,11 +22,12 @@ import { threadIsGroupChat } from '../thread-utils'; import { stringForUser } from '../user-utils'; import { hasMinCodeVersion } from '../version-utils'; -import type { - MessageSpec, - MessageTitleParam, - NotificationTextsParams, - GeneratesNotifsParams, +import { + pushTypes, + type MessageSpec, + type MessageTitleParam, + type NotificationTextsParams, + type GeneratesNotifsParams, } from './message-spec'; import { assertSingleMessageInfo, joinResult } from './utils'; @@ -217,6 +218,8 @@ const targetMessageInfo = await fetchMessageInfoByID( rawMessageInfo.targetMessageID, ); - return targetMessageInfo?.creatorID === notifTargetUserID; + return targetMessageInfo?.creatorID === notifTargetUserID + ? pushTypes.NOTIF + : undefined; }, }); diff --git a/lib/shared/messages/remove-members-message-spec.js b/lib/shared/messages/remove-members-message-spec.js --- a/lib/shared/messages/remove-members-message-spec.js +++ b/lib/shared/messages/remove-members-message-spec.js @@ -177,7 +177,7 @@ ); }, - generatesNotifs: async () => false, + generatesNotifs: async () => undefined, userIDs(rawMessageInfo: RawRemoveMembersMessageInfo): $ReadOnlyArray { return rawMessageInfo.removedUserIDs; 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 @@ -22,10 +22,11 @@ removeCreatorAsViewer, } from '../message-utils'; import { stringForUser } from '../user-utils'; -import type { - MessageSpec, - MessageTitleParam, - NotificationTextsParams, +import { + pushTypes, + type MessageSpec, + type MessageTitleParam, + type NotificationTextsParams, } from './message-spec'; import { assertSingleMessageInfo } from './utils'; @@ -153,5 +154,5 @@ }; }, - generatesNotifs: async () => true, + generatesNotifs: async () => pushTypes.NOTIF, }); 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 @@ -177,7 +177,7 @@ return params.notificationTexts([sourceMessageInfo], threadInfo); }, - generatesNotifs: async () => false, + generatesNotifs: async () => undefined, 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 @@ -24,10 +24,11 @@ } from '../markdown'; import { threadIsGroupChat } from '../thread-utils'; import { stringForUser } from '../user-utils'; -import type { - MessageSpec, - NotificationTextsParams, - RawMessageInfoFromServerDBRowParams, +import { + pushTypes, + type MessageSpec, + type NotificationTextsParams, + type RawMessageInfoFromServerDBRowParams, } from './message-spec'; import { assertSingleMessageInfo } from './utils'; @@ -195,6 +196,7 @@ } }, - generatesNotifs: async () => true, + generatesNotifs: async () => pushTypes.NOTIF, + 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 @@ -16,7 +16,11 @@ robotextForMessageInfo, removeCreatorAsViewer, } from '../message-utils'; -import type { MessageSpec, MessageTitleParam } from './message-spec'; +import { + pushTypes, + type MessageSpec, + type MessageTitleParam, +} from './message-spec'; export const unsupportedMessageSpec: MessageSpec< null, @@ -90,5 +94,5 @@ return `${creator} ${messageInfo.robotext}`; }, - generatesNotifs: async () => true, + generatesNotifs: async () => pushTypes.NOTIF, }); 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 @@ -24,11 +24,12 @@ } from '../message-utils'; import { stringForUser } from '../user-utils'; import { hasMinCodeVersion } from '../version-utils'; -import type { - CreateMessageInfoParams, - MessageSpec, - MessageTitleParam, - RobotextParams, +import { + pushTypes, + type CreateMessageInfoParams, + type MessageSpec, + type MessageTitleParam, + type RobotextParams, } from './message-spec'; import { assertSingleMessageInfo } from './utils'; @@ -197,5 +198,5 @@ }; }, - generatesNotifs: async () => true, + generatesNotifs: async () => pushTypes.NOTIF, });