import { Badge } from '@/components/ui/badge' import { Button } from '@/components/ui/button' import { Separator } from '@/components/ui/separator' import { getSharableEventId } from '@/lib/event' import { toChachiChat } from '@/lib/link' import { simplifyUrl } from '@/lib/url' import { cn } from '@/lib/utils' import { useScreenSize } from '@/providers/ScreenSizeProvider' import client from '@/services/client.service' import { Check, Copy, ExternalLink } from 'lucide-react' import { Event, nip19 } from 'nostr-tools' import { useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import { FormattedTimestamp } from '../FormattedTimestamp' import Image from '../Image' import UserAvatar from '../UserAvatar' import Username from '../Username' import RepostDescription from './RepostDescription' export default function GroupMetadataCard({ event, className, originalNoteId, embedded = false, reposter }: { event: Event className?: string originalNoteId?: string embedded?: boolean reposter?: string }) { const { t } = useTranslation() const { isSmallScreen } = useScreenSize() const [isCopied, setIsCopied] = useState(false) const metadata = useMemo(() => { let d: string | undefined let name: string | undefined let about: string | undefined let picture: string | undefined let relay: string | undefined const tags = new Set() if (originalNoteId) { const pointer = nip19.decode(originalNoteId) if (pointer.type === 'naddr' && pointer.data.relays?.length) { relay = pointer.data.relays[0] } } if (!relay) { relay = client.getEventHint(event.id) } event.tags.forEach(([tagName, tagValue]) => { if (tagName === 'name') { name = tagValue } else if (tagName === 'about') { about = tagValue } else if (tagName === 'picture') { picture = tagValue } else if (tagName === 't' && tagValue) { tags.add(tagValue.toLocaleLowerCase()) } else if (tagName === 'd') { d = tagValue } }) if (!name) { name = d ?? 'no name' } return { d, name, about, picture, tags: Array.from(tags), relay } }, [event, originalNoteId]) return (
{metadata.picture && ( )}
{metadata.name}
{metadata.about && (
{metadata.about}
)} {metadata.tags.length > 0 && (
{metadata.tags.map((tag) => ( {tag} ))}
)} {(!metadata.relay || !metadata.d) && ( )}
{!embedded && } {!isSmallScreen && metadata.relay && metadata.d && (
{ e.stopPropagation() window.open(toChachiChat(simplifyUrl(metadata.relay), metadata.d!), '_blank') }} >
{t('Open in a', { a: 'Chachi' })}
)}
) }