import React from 'react'; import { useProfile } from "nostr-react"; import { nip19 } from "nostr-tools"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import Image from 'next/image'; import Link from 'next/link'; import { PlayIcon, SquareStackIcon as StackIcon, VideoIcon } from 'lucide-react' import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" import { formatDistanceToNow } from 'date-fns' interface NoteCardProps { pubkey: string; text: string; eventId: string; tags: string[][]; event: any; linkToNote: boolean; } const QuickViewNoteCard: React.FC = ({ pubkey, text, eventId, tags, event, linkToNote }) => { const { data: userData } = useProfile({ pubkey }); const username = userData?.username || userData?.display_name || userData?.name || userData?.npub || nip19.npubEncode(pubkey); const cleanText = text.replaceAll('\n', ' '); const imageSrc = cleanText.match(/https?:\/\/[^ ]*\.(png|jpg|gif|jpeg)/g); const videoSrc = cleanText.match(/https?:\/\/[^ ]*\.(mp4|webm|mov)/g); const textWithoutMedia = cleanText.replace(/https?:\/\/.*\.(?:png|jpg|gif|mp4|webm|mov|jpeg)/g, '').trim(); const createdAt = new Date(event.created_at * 1000); const hrefProfile = `/profile/${nip19.npubEncode(pubkey)}`; const profileImageSrc = userData?.picture || `https://robohash.org/${pubkey}`; const encodedNoteId = nip19.noteEncode(event.id); const MediaContent = () => (
{imageSrc && imageSrc.length > 1 && !videoSrc ? ( <> {textWithoutMedia}
) : imageSrc && imageSrc.length > 0 ? ( {textWithoutMedia} ) : videoSrc && videoSrc.length > 0 ? ( <>
); const card = ( {username.slice(0, 2).toUpperCase()}
{username}

{formatDistanceToNow(createdAt, { addSuffix: true })}

{textWithoutMedia && (

{textWithoutMedia}

)}
); return linkToNote ? ( {card} ) : ( card ); } export default QuickViewNoteCard;