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 @@ -456,6 +456,9 @@ } const { generatesNotifs } = messageSpecs[type]; const messageData = messageDatas[messageIndex]; + if (!generatesNotifs) { + return undefined; + } const doesGenerateNotif = await generatesNotifs( messageInfo, messageData, 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 @@ -152,8 +152,6 @@ ); }, - generatesNotifs: async () => undefined, - userIDs(rawMessageInfo: RawAddMembersMessageInfo): $ReadOnlyArray { return rawMessageInfo.addedUserIDs; }, diff --git a/lib/shared/messages/edit-message-spec.js b/lib/shared/messages/edit-message-spec.js --- a/lib/shared/messages/edit-message-spec.js +++ b/lib/shared/messages/edit-message-spec.js @@ -140,7 +140,5 @@ return unwrapped; }, - generatesNotifs: async () => undefined, - validator: rawEditMessageInfoValidator, }); 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 @@ -119,7 +119,5 @@ return joinResult(rawMessageInfo.type, rawMessageInfo.threadID); }, - generatesNotifs: async () => undefined, - validator: rawJoinThreadMessageInfoValidator, }); 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 @@ -119,7 +119,5 @@ return joinResult(rawMessageInfo.type, rawMessageInfo.threadID); }, - generatesNotifs: async () => undefined, - validator: rawLeaveThreadMessageInfoValidator, }); 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 @@ -106,7 +106,7 @@ rawMessageInfo: RawInfo, messageData: Data, ) => ?string, - +generatesNotifs: ( + +generatesNotifs?: ( rawMessageInfo: RawInfo, messageData: Data, params: GeneratesNotifsParams, 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 @@ -152,8 +152,6 @@ ); }, - generatesNotifs: async () => undefined, - userIDs(rawMessageInfo: RawRemoveMembersMessageInfo): $ReadOnlyArray { return rawMessageInfo.removedUserIDs; }, diff --git a/lib/shared/messages/toggle-pin-message-spec.js b/lib/shared/messages/toggle-pin-message-spec.js --- a/lib/shared/messages/toggle-pin-message-spec.js +++ b/lib/shared/messages/toggle-pin-message-spec.js @@ -155,7 +155,5 @@ return unwrapped; }, - generatesNotifs: async () => undefined, - validator: rawTogglePinMessageInfoValidator, }); diff --git a/native/root.react.js b/native/root.react.js --- a/native/root.react.js +++ b/native/root.react.js @@ -60,6 +60,7 @@ // Add custom items to expo-dev-menu import './dev-menu.js'; +import './types/message-types-validator.js'; if (Platform.OS === 'android') { UIManager.setLayoutAnimationEnabledExperimental && diff --git a/native/types/message-types-validator.js b/native/types/message-types-validator.js new file mode 100644 --- /dev/null +++ b/native/types/message-types-validator.js @@ -0,0 +1,29 @@ +// @flow +import { Alert } from 'react-native'; + +import { messageSpecs } from 'lib/shared/messages/message-specs.js'; +import { messageTypes } from 'lib/types/message-types-enum.js'; + +import { commConstants } from '../native-modules.js'; + +if (__DEV__) { + const messageTypesCpp = new Set(commConstants.NATIVE_MESSAGE_TYPES); + const missingMessageTypesCpp = []; + for (const messageName in messageTypes) { + const messageType = messageTypes[messageName]; + if ( + messageSpecs[messageType]?.generatesNotifs && + !messageTypesCpp.has(messageType) + ) { + missingMessageTypesCpp.push(messageName); + } + } + + if (missingMessageTypesCpp.length !== 0) { + Alert.alert( + 'C++ MessageSpecs missing', + 'C++ MessageSpec implementation missing for message types: ' + + missingMessageTypesCpp.join(', '), + ); + } +}