diff --git a/src/components/PictureContent/index.tsx b/src/components/PictureContent/index.tsx index 65e4d36..f43efd5 100644 --- a/src/components/PictureContent/index.tsx +++ b/src/components/PictureContent/index.tsx @@ -1,9 +1,7 @@ -import { isNsfwEvent } from '@/lib/event' -import { extractImageInfoFromTag } from '@/lib/tag' +import { extractImageInfosFromEventTags, isNsfwEvent } from '@/lib/event' import { cn } from '@/lib/utils' -import { TImageInfo } from '@/types' import { Event } from 'nostr-tools' -import { memo, ReactNode } from 'react' +import { memo, ReactNode, useMemo } from 'react' import { embedded, embeddedHashtagRenderer, @@ -15,13 +13,7 @@ import { import { ImageCarousel } from '../ImageCarousel' const PictureContent = memo(({ event, className }: { event: Event; className?: string }) => { - const images: TImageInfo[] = [] - event.tags.forEach((tag) => { - const imageInfo = extractImageInfoFromTag(tag) - if (imageInfo) { - images.push(imageInfo) - } - }) + const images = useMemo(() => extractImageInfosFromEventTags(event), [event]) const isNsfw = isNsfwEvent(event) const nodes: ReactNode[] = [ diff --git a/src/components/PictureNoteCard/index.tsx b/src/components/PictureNoteCard/index.tsx index 4b43060..ec9e167 100644 --- a/src/components/PictureNoteCard/index.tsx +++ b/src/components/PictureNoteCard/index.tsx @@ -1,8 +1,9 @@ -import { extractFirstPictureFromPictureEvent } from '@/lib/event' +import { extractImageInfosFromEventTags } from '@/lib/event' import { toNote } from '@/lib/link' import { tagNameEquals } from '@/lib/tag' import { cn } from '@/lib/utils' import { useSecondaryPage } from '@/PageManager' +import { Images } from 'lucide-react' import { Event } from 'nostr-tools' import { useMemo } from 'react' import { @@ -23,7 +24,7 @@ export default function PictureNoteCard({ className?: string }) { const { push } = useSecondaryPage() - const firstImage = extractFirstPictureFromPictureEvent(event) + const images = useMemo(() => extractImageInfosFromEventTags(event), [event]) const title = useMemo(() => { const title = event.tags.find(tagNameEquals('title'))?.[1] ?? event.content return embedded(title, [ @@ -32,11 +33,16 @@ export default function PictureNoteCard({ embeddedHashtagRenderer ]) }, [event]) - if (!firstImage) return null + if (!images.length) return null return ( -