import type React from "react" import { useProfile } from "nostr-react" import { nip19 } from "nostr-tools" import { useState } from "react" import { Card, CardContent, CardFooter, CardHeader, CardTitle } from "@/components/ui/card" import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip" import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from "@/components/ui/carousel" import ReactionButton from "@/components/ReactionButton" import { Avatar, AvatarImage } from "@/components/ui/avatar" import ViewRawButton from "@/components/ViewRawButton" import ViewNoteButton from "./ViewNoteButton" import Link from "next/link" import ViewCopyButton from "./ViewCopyButton" import type { Event as NostrEvent } from "nostr-tools" import ZapButton from "./ZapButton" import Image from "next/image" interface KIND20CardProps { pubkey: string text: string image: string eventId: string tags: string[][] event: NostrEvent showViewNoteCardButton: boolean } const KIND20Card: React.FC = ({ pubkey, text, image, eventId, tags, event, showViewNoteCardButton, }) => { const { data: userData } = useProfile({ pubkey, }) const [imageError, setImageError] = useState(false); if (!image || !image.startsWith("http") || imageError) return null; const title = userData?.username || userData?.display_name || userData?.name || userData?.npub || nip19.npubEncode(pubkey) text = text.replaceAll("\n", " ") const createdAt = new Date(event.created_at * 1000) const hrefProfile = `/profile/${nip19.npubEncode(pubkey)}` const profileImageSrc = userData?.picture || "https://robohash.org/" + pubkey const uploadedVia = tags.find((tag) => tag[0] === "client")?.[1] return ( <>
{title}

{title}

{text} setImageError(true)} />
{text}

{showViewNoteCardButton && }
{createdAt.toLocaleString()} {uploadedVia && Uploaded via {uploadedVia}}
) } export default KIND20Card