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 @@ -22,6 +22,7 @@ import type { RawUpdateRelationshipMessageInfo, UpdateRelationshipMessageData, + UpdateRelationshipMessageInfo, } from '../../types/messages/update-relationship.js'; import type { ThreadInfo } from '../../types/minimally-encoded-thread-permissions-types.js'; import type { NotifTexts } from '../../types/notif-types.js'; @@ -29,9 +30,9 @@ import { type EntityText, ET } from '../../utils/entity-text.js'; type UpdateRelationshipMessageSpec = MessageSpec< - LegacyUpdateRelationshipMessageData, - RawLegacyUpdateRelationshipMessageInfo, - LegacyUpdateRelationshipMessageInfo, + LegacyUpdateRelationshipMessageData | UpdateRelationshipMessageData, + RawLegacyUpdateRelationshipMessageInfo | RawUpdateRelationshipMessageInfo, + LegacyUpdateRelationshipMessageInfo | UpdateRelationshipMessageInfo, > & { // We need to explicitly type this as non-optional so that // it can be referenced from messageContentForClientDB below @@ -61,17 +62,21 @@ }, messageContentForClientDB( - data: RawLegacyUpdateRelationshipMessageInfo, + data: + | RawLegacyUpdateRelationshipMessageInfo + | RawUpdateRelationshipMessageInfo, ): string { return updateRelationshipMessageSpec.messageContentForServerDB(data); }, rawMessageInfoFromServerDBRow( row: Object, - ): RawLegacyUpdateRelationshipMessageInfo { + ): + | RawLegacyUpdateRelationshipMessageInfo + | RawUpdateRelationshipMessageInfo { const content = JSON.parse(row.content); return { - type: messageTypes.LEGACY_UPDATE_RELATIONSHIP, + type: row.type, id: row.id.toString(), threadID: row.threadID.toString(), time: row.time, @@ -104,38 +109,60 @@ }, createMessageInfo( - rawMessageInfo: RawLegacyUpdateRelationshipMessageInfo, + rawMessageInfo: + | RawLegacyUpdateRelationshipMessageInfo + | RawUpdateRelationshipMessageInfo, creator: RelativeUserInfo, params: CreateMessageInfoParams, - ): ?LegacyUpdateRelationshipMessageInfo { + ): ?LegacyUpdateRelationshipMessageInfo | ?UpdateRelationshipMessageInfo { const target = params.createRelativeUserInfos([ rawMessageInfo.targetID, ])[0]; if (!target) { return null; } - return { - type: messageTypes.LEGACY_UPDATE_RELATIONSHIP, - id: rawMessageInfo.id, - threadID: rawMessageInfo.threadID, - creator, - target, - time: rawMessageInfo.time, - operation: rawMessageInfo.operation, - }; + if (rawMessageInfo.type === messageTypes.LEGACY_UPDATE_RELATIONSHIP) { + return { + type: messageTypes.LEGACY_UPDATE_RELATIONSHIP, + id: rawMessageInfo.id, + threadID: rawMessageInfo.threadID, + creator, + target, + time: rawMessageInfo.time, + operation: rawMessageInfo.operation, + }; + } else { + return { + type: messageTypes.UPDATE_RELATIONSHIP, + id: rawMessageInfo.id, + threadID: rawMessageInfo.threadID, + creator, + target, + time: rawMessageInfo.time, + operation: rawMessageInfo.operation, + }; + } }, rawMessageInfoFromMessageData( - messageData: LegacyUpdateRelationshipMessageData, + messageData: + | LegacyUpdateRelationshipMessageData + | UpdateRelationshipMessageData, id: ?string, - ): RawLegacyUpdateRelationshipMessageInfo { + ): + | RawLegacyUpdateRelationshipMessageInfo + | RawUpdateRelationshipMessageInfo { invariant(id, 'RawUpdateRelationshipMessageInfo needs id'); return { ...messageData, id }; }, // ESLint doesn't recognize that invariant always throws // eslint-disable-next-line consistent-return - robotext(messageInfo: LegacyUpdateRelationshipMessageInfo): EntityText { + robotext( + messageInfo: + | LegacyUpdateRelationshipMessageInfo + | UpdateRelationshipMessageInfo, + ): EntityText { const creator = ET.user({ userInfo: messageInfo.creator }); if (messageInfo.operation === 'request_sent') { const target = ET.user({ userInfo: messageInfo.target }); @@ -155,8 +182,12 @@ }, unshimMessageInfo( - unwrapped: RawLegacyUpdateRelationshipMessageInfo, - ): RawLegacyUpdateRelationshipMessageInfo { + unwrapped: + | RawLegacyUpdateRelationshipMessageInfo + | RawUpdateRelationshipMessageInfo, + ): + | RawLegacyUpdateRelationshipMessageInfo + | RawUpdateRelationshipMessageInfo { return unwrapped; },