diff --git a/lib/shared/message-utils.js b/lib/shared/message-utils.js --- a/lib/shared/message-utils.js +++ b/lib/shared/message-utils.js @@ -170,6 +170,17 @@ return messageSpec.rawMessageInfoFromMessageData(messageData, id); } +function messageDataFromRawMessageInfo( + rawMessageInfo: RawMessageInfo, +): MessageData { + const messageSpec = messageSpecs[rawMessageInfo.type]; + invariant( + messageSpec.messageDataFromRawMessageInfo, + `we're not aware of messageType ${rawMessageInfo.type}`, + ); + return messageSpec.messageDataFromRawMessageInfo(rawMessageInfo); +} + function mostRecentMessageTimestamp( messageInfos: $ReadOnlyArray, previousTimestamp: number, @@ -684,6 +695,7 @@ sortMessageInfoList, sortMessageIDs, rawMessageInfoFromMessageData, + messageDataFromRawMessageInfo, mostRecentMessageTimestamp, usersInMessageInfos, shimUnsupportedRawMessageInfos, 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 @@ -110,6 +110,13 @@ return { ...messageData, id }; }, + messageDataFromRawMessageInfo( + rawMessageInfo: RawAddMembersMessageInfo, + ): AddMembersMessageData { + const { id, ...rest } = rawMessageInfo; + return { ...rest }; + }, + robotext(messageInfo: AddMembersMessageInfo): EntityText { const users = messageInfo.addedMembers; invariant(users.length !== 0, 'added who??'); 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 @@ -127,6 +127,13 @@ return { ...messageData, id }; }, + messageDataFromRawMessageInfo( + rawMessageInfo: RawChangeRoleMessageInfo, + ): ChangeRoleMessageData { + const { id, ...rest } = rawMessageInfo; + return { ...rest }; + }, + robotext( messageInfo: ChangeRoleMessageInfo, params: RobotextParams, 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 @@ -115,6 +115,13 @@ return { ...messageData, id }; }, + messageDataFromRawMessageInfo( + rawMessageInfo: RawChangeSettingsMessageInfo, + ): ChangeSettingsMessageData { + const { id, ...rest } = rawMessageInfo; + return { ...rest }; + }, + robotext( messageInfo: ChangeSettingsMessageInfo, params: RobotextParams, 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 @@ -110,6 +110,13 @@ return { ...messageData, id }; }, + messageDataFromRawMessageInfo( + rawMessageInfo: RawCreateEntryMessageInfo, + ): CreateEntryMessageData { + const { id, ...rest } = rawMessageInfo; + return { ...rest }; + }, + robotext(messageInfo: CreateEntryMessageInfo): EntityText { const date = prettyDate(messageInfo.date); const creator = ET.user({ userInfo: messageInfo.creator }); 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 @@ -142,6 +142,13 @@ return { ...messageData, id }; }, + messageDataFromRawMessageInfo( + rawMessageInfo: RawCreateSidebarMessageInfo, + ): CreateSidebarMessageData { + const { id, ...rest } = rawMessageInfo; + return { ...rest }; + }, + robotext( messageInfo: CreateSidebarMessageInfo, params: RobotextParams, 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 @@ -116,6 +116,13 @@ return { ...messageData, id }; }, + messageDataFromRawMessageInfo( + rawMessageInfo: RawCreateSubthreadMessageInfo, + ): CreateSubthreadMessageData { + const { id, ...rest } = rawMessageInfo; + return { ...rest }; + }, + robotext(messageInfo: CreateSubthreadMessageInfo): EntityText { const threadEntity = ET.thread({ display: 'shortName', 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 @@ -124,6 +124,13 @@ return { ...messageData, id }; }, + messageDataFromRawMessageInfo( + rawMessageInfo: RawCreateThreadMessageInfo, + ): CreateThreadMessageData { + const { id, ...rest } = rawMessageInfo; + return { ...rest }; + }, + robotext( messageInfo: CreateThreadMessageInfo, params: RobotextParams, 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 @@ -109,6 +109,13 @@ return { ...messageData, id }; }, + messageDataFromRawMessageInfo( + rawMessageInfo: RawDeleteEntryMessageInfo, + ): DeleteEntryMessageData { + const { id, ...rest } = rawMessageInfo; + return { ...rest }; + }, + robotext(messageInfo: DeleteEntryMessageInfo): EntityText { const date = prettyDate(messageInfo.date); const creator = ET.user({ userInfo: messageInfo.creator }); 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 @@ -110,6 +110,13 @@ return { ...messageData, id }; }, + messageDataFromRawMessageInfo( + rawMessageInfo: RawEditEntryMessageInfo, + ): EditEntryMessageData { + const { id, ...rest } = rawMessageInfo; + return { ...rest }; + }, + robotext(messageInfo: EditEntryMessageInfo): EntityText { const date = prettyDate(messageInfo.date); const creator = ET.user({ userInfo: messageInfo.creator }); 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 @@ -115,6 +115,13 @@ return { ...messageData, id }; }, + messageDataFromRawMessageInfo( + rawMessageInfo: RawEditMessageInfo, + ): EditMessageData { + const { id, ...rest } = rawMessageInfo; + return { ...rest }; + }, + shimUnsupportedMessageInfo( rawMessageInfo: RawEditMessageInfo, platformDetails: ?PlatformDetails, 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 @@ -74,6 +74,13 @@ return { ...messageData, id }; }, + messageDataFromRawMessageInfo( + rawMessageInfo: RawJoinThreadMessageInfo, + ): JoinThreadMessageData { + const { id, ...rest } = rawMessageInfo; + return { ...rest }; + }, + robotext( messageInfo: JoinThreadMessageInfo, params: RobotextParams, 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 @@ -74,6 +74,13 @@ return { ...messageData, id }; }, + messageDataFromRawMessageInfo( + rawMessageInfo: RawLeaveThreadMessageInfo, + ): LeaveThreadMessageData { + const { id, ...rest } = rawMessageInfo; + return { ...rest }; + }, + robotext( messageInfo: LeaveThreadMessageInfo, params: RobotextParams, 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 @@ -88,6 +88,7 @@ params: CreateMessageInfoParams, ) => ?Info, +rawMessageInfoFromMessageData?: (messageData: Data, id: ?string) => RawInfo, + +messageDataFromRawMessageInfo?: (rawMessageInfo: RawInfo) => Data, +robotext?: (messageInfo: Info, params: RobotextParams) => EntityText, +shimUnsupportedMessageInfo?: ( rawMessageInfo: RawInfo, 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 @@ -220,6 +220,13 @@ } }, + messageDataFromRawMessageInfo( + rawMessageInfo: RawMediaMessageInfo | RawImagesMessageInfo, + ): MediaMessageData | ImagesMessageData { + const { id, ...rest } = rawMessageInfo; + return { ...rest }; + }, + shimUnsupportedMessageInfo( rawMessageInfo: RawMediaMessageInfo | RawImagesMessageInfo, platformDetails: ?PlatformDetails, 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 @@ -136,6 +136,13 @@ return { ...messageData, id }; }, + messageDataFromRawMessageInfo( + rawMessageInfo: RawReactionMessageInfo, + ): ReactionMessageData { + const { id, ...rest } = rawMessageInfo; + return { ...rest }; + }, + shimUnsupportedMessageInfo( rawMessageInfo: RawReactionMessageInfo, platformDetails: ?PlatformDetails, 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 @@ -111,6 +111,13 @@ return { ...messageData, id }; }, + messageDataFromRawMessageInfo( + rawMessageInfo: RawRemoveMembersMessageInfo, + ): RemoveMembersMessageData { + const { id, ...rest } = rawMessageInfo; + return { ...rest }; + }, + robotext(messageInfo: RemoveMembersMessageInfo): EntityText { const users = messageInfo.removedMembers; invariant(users.length !== 0, 'added who??'); 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 @@ -109,6 +109,13 @@ return { ...messageData, id }; }, + messageDataFromRawMessageInfo( + rawMessageInfo: RawRestoreEntryMessageInfo, + ): RestoreEntryMessageData { + const { id, ...rest } = rawMessageInfo; + return { ...rest }; + }, + robotext(messageInfo: RestoreEntryMessageInfo): EntityText { const date = prettyDate(messageInfo.date); const creator = ET.user({ userInfo: messageInfo.creator }); 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 @@ -130,6 +130,13 @@ return { ...messageData, id }; }, + messageDataFromRawMessageInfo( + rawMessageInfo: RawSidebarSourceMessageInfo, + ): SidebarSourceMessageData { + const { id, ...rest } = rawMessageInfo; + return { ...rest }; + }, + notificationTexts(): Promise { invariant( false, 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 @@ -196,6 +196,13 @@ } }, + messageDataFromRawMessageInfo( + rawMessageInfo: RawTextMessageInfo, + ): TextMessageData { + const { id, ...rest } = rawMessageInfo; + return { ...rest }; + }, + async notificationTexts( messageInfos: $ReadOnlyArray, threadInfo: ThreadInfo, 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 @@ -124,6 +124,13 @@ return { ...messageData, id }; }, + messageDataFromRawMessageInfo( + rawMessageInfo: RawTogglePinMessageInfo, + ): TogglePinMessageData { + const { id, ...rest } = rawMessageInfo; + return { ...rest }; + }, + robotext( messageInfo: TogglePinMessageInfo, params: RobotextParams, 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 @@ -225,6 +225,15 @@ return { ...messageData, id }; }, + messageDataFromRawMessageInfo( + rawMessageInfo: + | RawLegacyUpdateRelationshipMessageInfo + | RawUpdateRelationshipMessageInfo, + ): LegacyUpdateRelationshipMessageData | UpdateRelationshipMessageData { + const { id, ...rest } = rawMessageInfo; + return { ...rest }; + }, + // ESLint doesn't recognize that invariant always throws // eslint-disable-next-line consistent-return robotext(