diff --git a/lib/utils/convert-farcaster-message-to-comm-messages.js b/lib/utils/convert-farcaster-message-to-comm-messages.js --- a/lib/utils/convert-farcaster-message-to-comm-messages.js +++ b/lib/utils/convert-farcaster-message-to-comm-messages.js @@ -7,7 +7,7 @@ farcasterThreadIDFromConversationID, userIDFromFID, } from '../shared/id-utils.js'; -import type { Media } from '../types/media-types.js'; +import type { Image } from '../types/media-types.js'; import { messageTypes } from '../types/message-types-enum.js'; import type { RawMessageInfo } from '../types/message-types.js'; @@ -57,18 +57,37 @@ height: med.height, width: med.width, }, - }: Media), + }: Image), ); - return [ + + const time = parseInt(farcasterMessage.serverTimestamp, 10); + const messages: Array = [ { id: farcasterMessage.messageId, type: messageTypes.MULTIMEDIA, threadID, creatorID, - time: parseInt(farcasterMessage.serverTimestamp, 10), + time, media, }, ]; + + const captionText = media + .reduce((text, m) => text.replaceAll(m.uri, ''), farcasterMessage.message) + .trim(); + + if (captionText.length > 0) { + messages.push({ + id: farcasterMessage.messageId + '/caption', + type: messageTypes.TEXT, + threadID, + creatorID, + time, + text: captionText, + }); + } + + return messages; } if (farcasterMessage.type === 'text') {