import React, { useMemo } from 'react'; import { nip19 } from "nostr-tools"; import { Card, CardHeader, CardTitle, SmallCardContent, } from "@/components/ui/card" import Link from 'next/link'; import { Avatar } from './ui/avatar'; import { AvatarImage } from '@radix-ui/react-avatar'; import { useProfile, useNostrEvents } from '@/hooks/useNDK'; interface TrendingImageProps { eventId: string; pubkey: string; } const TrendingImage: React.FC = ({ eventId, pubkey }) => { const { data: userData } = useProfile(pubkey); const { events } = useNostrEvents({ filter: { kinds: [1], ids: [eventId] }, }); const npubShortened = useMemo(() => { let encoded = nip19.npubEncode(pubkey); let parts = encoded.split('npub'); return 'npub' + parts[1].slice(0, 4) + ':' + parts[1].slice(-3); }, [pubkey]); const title = userData?.displayName || userData?.name || userData?.nip05 || userData?.npub || npubShortened; const hrefProfile = `/profile/${nip19.npubEncode(pubkey)}`; const profileImageSrc = userData?.image || "https://robohash.org/" + pubkey; if (events.length === 0) return null; const event = events[0]; const imageSrc = event.content.match(/https?:\/\/[^ ]*\.(png|jpg|gif|jpeg)/g)?.[0]; if (!imageSrc) return null; return (
{title}
{`Trending
); } export default TrendingImage;