import NoteMetadata from '@components/note/content/metadata'; import NotePreview from '@components/note/content/preview'; import { UserExtend } from '@components/user/extend'; import { UserMention } from '@components/user/mention'; import { memo, useMemo } from 'react'; import reactStringReplace from 'react-string-replace'; export const Content = memo(function Content({ data }: { data: any }) { const content = useMemo(() => { let parsedContent; // get data tags const tags = String(data.tags).replaceAll("'", '"'); const parseTags = JSON.parse(tags); // remove all image urls parsedContent = data.content.replace(/(https?:\/\/.*\.(jpg|jpeg|gif|png|webp|mp4|webm)((\?.*)$|$))/gim, ''); // handle urls parsedContent = reactStringReplace(parsedContent, /(https?:\/\/\S+)/g, (match, i) => ( {match} )); // handle hashtags parsedContent = reactStringReplace(parsedContent, /#(\w+)/g, (match, i) => ( #{match} )); // handle mentions if (parseTags.length > 0) { parsedContent = reactStringReplace(parsedContent, /\#\[(\d+)\]/gm, (match, i) => { if (parseTags[match][0] === 'p') { return ; } else { // #TODO: handle mention other note // console.log(tags[match]); } }); } return parsedContent; }, [data.content, data.tags]); return (
{content}
); });