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 @@ -36,7 +36,10 @@ import type { NotifTexts } from '../../types/notif-types'; import type { ThreadInfo } from '../../types/thread-types'; import type { RelativeUserInfo } from '../../types/user-types'; -import { translateClientDBMediaInfoToImage } from '../../utils/message-ops-utils'; +import { + translateClientDBMediaInfosToMedia, + translateClientDBMediaInfoToImage, +} from '../../utils/message-ops-utils'; import { createMediaMessageInfo, messagePreviewText, @@ -82,9 +85,10 @@ rawMessageInfoFromClientDB( clientDBMessageInfo: ClientDBMessageInfo, - ): RawImagesMessageInfo { + ): RawImagesMessageInfo | RawMediaMessageInfo { + const messageType = assertMessageType(parseInt(clientDBMessageInfo.type)); invariant( - isMediaMessageType(assertMessageType(parseInt(clientDBMessageInfo.type))), + isMediaMessageType(messageType), 'message must be of type IMAGES or MULTIMEDIA', ); invariant( @@ -93,23 +97,33 @@ `media_infos must be defined`, ); - const translatedMedia = clientDBMessageInfo.media_infos.map( - translateClientDBMediaInfoToImage, - ); - const rawImagesMessageInfo: RawImagesMessageInfo = { - type: messageTypes.IMAGES, - threadID: clientDBMessageInfo.thread, - creatorID: clientDBMessageInfo.user, - time: parseInt(clientDBMessageInfo.time), - media: translatedMedia, - }; + const rawMessageInfo: RawImagesMessageInfo | RawMediaMessageInfo = + messageType === messageTypes.IMAGES + ? { + type: messageTypes.IMAGES, + threadID: clientDBMessageInfo.thread, + creatorID: clientDBMessageInfo.user, + time: parseInt(clientDBMessageInfo.time), + media: + clientDBMessageInfo.media_infos?.map( + translateClientDBMediaInfoToImage, + ) ?? [], + } + : { + type: messageTypes.MULTIMEDIA, + threadID: clientDBMessageInfo.thread, + creatorID: clientDBMessageInfo.user, + time: parseInt(clientDBMessageInfo.time), + media: translateClientDBMediaInfosToMedia(clientDBMessageInfo), + }; + if (clientDBMessageInfo.local_id) { - rawImagesMessageInfo.localID = clientDBMessageInfo.local_id; + rawMessageInfo.localID = clientDBMessageInfo.local_id; } if (clientDBMessageInfo.id !== clientDBMessageInfo.local_id) { - rawImagesMessageInfo.id = clientDBMessageInfo.id; + rawMessageInfo.id = clientDBMessageInfo.id; } - return rawImagesMessageInfo; + return rawMessageInfo; }, messageTitle({