import { useRef, useMemo } from 'react'; import LinkPreview from './LinkPreview'; import ImagePreview from './ImagePreview'; import { extractUrls } from '../utils/urlUtils'; import { extractImagePaths, removeImagePathsFromText } from '../utils/imageUtils'; import MarkdownContent from './MarkdownContent'; import { Message, getTextContent } from '../types/message'; import MessageCopyLink from './MessageCopyLink'; import { formatMessageTimestamp } from '../utils/timeUtils'; interface UserMessageProps { message: Message; } export default function UserMessage({ message }: UserMessageProps) { const contentRef = useRef(null); // Extract text content from the message const textContent = getTextContent(message); // Extract image paths from the message const imagePaths = extractImagePaths(textContent); // Remove image paths from text for display const displayText = removeImagePathsFromText(textContent, imagePaths); // Memoize the timestamp const timestamp = useMemo(() => formatMessageTimestamp(message.created), [message.created]); // Extract URLs which explicitly contain the http:// or https:// protocol const urls = extractUrls(displayText, []); return (
{/* Render images if any */} {imagePaths.length > 0 && (
{imagePaths.map((imagePath, index) => ( ))}
)}
{timestamp}
{/* TODO(alexhancock): Re-enable link previews once styled well again */} {false && urls.length > 0 && (
{urls.map((url, index) => ( ))}
)}
); }