diff --git a/keyserver/src/creators/message-report-creator.js b/keyserver/src/creators/message-report-creator.js --- a/keyserver/src/creators/message-report-creator.js +++ b/keyserver/src/creators/message-report-creator.js @@ -1,7 +1,7 @@ // @flow import bots from 'lib/facts/bots.js'; -import { createMessageQuote } from 'lib/shared/message-utils.js'; +import { createMessageQuote } from 'lib/shared/markdown.js'; import { type MessageReportCreationRequest } from 'lib/types/message-report-types.js'; import { messageTypes } from 'lib/types/message-types-enum.js'; import type { RawMessageInfo } from 'lib/types/message-types.js'; diff --git a/lib/shared/farcaster/farcaster-messages-types.js b/lib/shared/farcaster/farcaster-messages-types.js --- a/lib/shared/farcaster/farcaster-messages-types.js +++ b/lib/shared/farcaster/farcaster-messages-types.js @@ -130,6 +130,7 @@ +actionTargetUserContext?: FarcasterMessageUserContext, +isProgrammatic?: boolean, +mentions?: $ReadOnlyArray, + +inReplyTo?: FarcasterMessage, ... }; const farcasterMessageValidator: TInterface = tShapeInexact({ diff --git a/lib/shared/markdown.js b/lib/shared/markdown.js --- a/lib/shared/markdown.js +++ b/lib/shared/markdown.js @@ -4,8 +4,8 @@ import * as React from 'react'; import { - markdownUserMentionRegex, decodeChatMentionText, + markdownUserMentionRegex, } from './mention-utils.js'; import { useResolvableNames } from '../hooks/names-cache.js'; import type { @@ -382,6 +382,15 @@ const ensRegex: RegExp = /^.{3,}\.eth$/; +function createMessageQuote(message: string): string { + // add `>` to each line to include empty lines in the quote + return message.replace(/^/gm, '> '); +} + +function createMessageReply(message: string): string { + return createMessageQuote(message) + '\n\n'; +} + export { paragraphRegex, paragraphStripTrailingNewlineRegex, @@ -408,4 +417,6 @@ stripSpoilersFromMarkdownAST, parseChatMention, ensRegex, + createMessageReply, + createMessageQuote, }; 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 @@ -253,15 +253,6 @@ return codeBlockRegex.exec(message) ? message.trimEnd() : message.trim(); } -function createMessageQuote(message: string): string { - // add `>` to each line to include empty lines in the quote - return message.replace(/^/gm, '> '); -} - -function createMessageReply(message: string): string { - return createMessageQuote(message) + '\n\n'; -} - function getMessageTitle( messageInfo: | ComposableMessageInfo @@ -693,8 +684,6 @@ createMediaMessageData, createMediaMessageInfo, trimMessage, - createMessageQuote, - createMessageReply, getMessageTitle, mergeThreadMessageInfos, useMessagePreview, 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 @@ -8,6 +8,7 @@ farcasterThreadIDFromConversationID, userIDFromFID, } from '../shared/id-utils.js'; +import { createMessageReply } from '../shared/markdown.js'; import type { Image, Video } from '../types/media-types.js'; import { messageTypes } from '../types/message-types-enum.js'; import type { RawMessageInfo } from '../types/message-types.js'; @@ -137,13 +138,19 @@ }); } } else if (farcasterMessage.type === 'text') { + let messageText = ''; + if (farcasterMessage.inReplyTo) { + messageText += createMessageReply(farcasterMessage.inReplyTo.message); + } + messageText += farcasterMessage.message; + result.push({ id: farcasterMessage.messageId, type: messageTypes.TEXT, threadID, creatorID, time: parseInt(farcasterMessage.serverTimestamp, 10), - text: farcasterMessage.message, + text: messageText, }); } else if (farcasterMessage.type === 'group_name_change') { result.push({ diff --git a/native/chat/composed-message.react.js b/native/chat/composed-message.react.js --- a/native/chat/composed-message.react.js +++ b/native/chat/composed-message.react.js @@ -13,7 +13,7 @@ import { chatMessageItemHasEngagement } from 'lib/shared/chat-message-item-utils.js'; import { getMessageLabel } from 'lib/shared/edit-messages-utils.js'; -import { createMessageReply } from 'lib/shared/message-utils.js'; +import { createMessageReply } from 'lib/shared/markdown.js'; import { assertComposableMessageType } from 'lib/types/message-types.js'; import { diff --git a/native/chat/text-message-tooltip-modal.react.js b/native/chat/text-message-tooltip-modal.react.js --- a/native/chat/text-message-tooltip-modal.react.js +++ b/native/chat/text-message-tooltip-modal.react.js @@ -4,7 +4,7 @@ import invariant from 'invariant'; import * as React from 'react'; -import { createMessageReply } from 'lib/shared/message-utils.js'; +import { createMessageReply } from 'lib/shared/markdown.js'; import { useDeleteMessage } from 'lib/utils/delete-message-utils.js'; import { MessageEditingContext } from './message-editing-context.react.js'; diff --git a/web/tooltips/tooltip-action-utils.js b/web/tooltips/tooltip-action-utils.js --- a/web/tooltips/tooltip-action-utils.js +++ b/web/tooltips/tooltip-action-utils.js @@ -17,7 +17,7 @@ chatMessageItemEngagementTargetMessageInfo, } from 'lib/shared/chat-message-item-utils.js'; import { useCanEditMessage } from 'lib/shared/edit-messages-utils.js'; -import { createMessageReply } from 'lib/shared/message-utils.js'; +import { createMessageReply } from 'lib/shared/markdown.js'; import { useCanCreateReactionFromMessage } from 'lib/shared/reaction-utils.js'; import { useSidebarExistsOrCanBeCreated } from 'lib/shared/sidebar-utils.js'; import { useThreadHasPermission } from 'lib/shared/thread-utils.js';