diff --git a/src/components/imageWithFallback.tsx b/src/components/imageWithFallback.tsx index 268b908f..97831cc3 100644 --- a/src/components/imageWithFallback.tsx +++ b/src/components/imageWithFallback.tsx @@ -30,7 +30,14 @@ export const ImageWithFallback = memo(function ImageWithFallback({ colors={['#FEE2E2', '#FEF3C7', '#F59E0B', '#EC4899', '#D946EF', '#8B5CF6']} /> ) : ( - {alt} + {alt} )} ); diff --git a/src/components/note/content/index.tsx b/src/components/note/content/index.tsx index 55df8dad..d3099a66 100644 --- a/src/components/note/content/index.tsx +++ b/src/components/note/content/index.tsx @@ -1,11 +1,9 @@ import NoteMetadata from '@components/note/content/metadata'; -import { ImageCard } from '@components/note/content/preview/imageCard'; -import { Video } from '@components/note/content/preview/video'; +import NotePreview from '@components/note/content/preview'; import { UserExtend } from '@components/user/extend'; import dynamic from 'next/dynamic'; -import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react'; -import ReactPlayer from 'react-player'; +import { memo } from 'react'; const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { ssr: false, @@ -13,53 +11,6 @@ const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { }); export const Content = memo(function Content({ data }: { data: any }) { - const [preview, setPreview] = useState({}); - - const content = useRef(data.content); - const urls = useMemo( - () => - content.current.match( - /((http|ftp|https):\/\/)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi - ), - [] - ); - - useEffect(() => { - if (urls !== null && urls.length > 0) { - // #TODO: support multiple url - let url = urls[0]; - // make sure url alway have http:// - if (!/^https?:\/\//i.test(url)) { - url = 'http://' + url; - } - // parse url with new URL(); - const parseURL = new URL(url, 'https://uselume.xyz'); - // #TODO performance test - if (parseURL.pathname.toLowerCase().match(/\.(jpg|jpeg|gif|png|webp)$/)) { - // add image to preview - setPreview({ image: parseURL.href, type: 'image' }); - content.current = content.current.replace(parseURL.href, ''); - } else if (ReactPlayer.canPlay(parseURL.href)) { - // add video to preview - setPreview({ url: parseURL.href, type: 'video' }); - content.current = content.current.replace(parseURL.href, ''); - } // #TODO: support multiple preview - } - }, [urls]); - - const previewAttachment = useCallback(() => { - if (Object.keys(preview).length > 0) { - switch (preview['type']) { - case 'image': - return ; - case 'video': - return