import { Button } from '@/components/ui/button' import { Drawer, DrawerContent, DrawerOverlay } from '@/components/ui/drawer' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } from '@/components/ui/dropdown-menu' import { getSharableEventId, getSharableEventLink } from '@/lib/event' import { pubkeyToNpub } from '@/lib/pubkey' import { useMuteList } from '@/providers/MuteListProvider' import { useNostr } from '@/providers/NostrProvider' import { useScreenSize } from '@/providers/ScreenSizeProvider' import { Bell, BellOff, Code, Copy, Ellipsis, Link } from 'lucide-react' import { Event } from 'nostr-tools' import { useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import RawEventDialog from './RawEventDialog' export default function NoteOptions({ event, className }: { event: Event; className?: string }) { const { t } = useTranslation() const { isSmallScreen } = useScreenSize() const { pubkey } = useNostr() const [isRawEventDialogOpen, setIsRawEventDialogOpen] = useState(false) const [isDrawerOpen, setIsDrawerOpen] = useState(false) const { mutePubkey, unmutePubkey, mutePubkeys } = useMuteList() const isMuted = useMemo(() => mutePubkeys.includes(event.pubkey), [mutePubkeys, event]) const trigger = ( ) const rawEventDialog = ( setIsRawEventDialogOpen(false)} /> ) if (isSmallScreen) { return (
e.stopPropagation()}> {trigger} setIsDrawerOpen(false)} />
{pubkey && ( )}
{rawEventDialog}
) } return (
e.stopPropagation()}> {trigger} navigator.clipboard.writeText(getSharableEventId(event))} > {t('Copy event ID')} navigator.clipboard.writeText(pubkeyToNpub(event.pubkey) ?? '')} > {t('Copy user ID')} navigator.clipboard.writeText(getSharableEventLink(event))} > {t('Copy share link')} setIsRawEventDialogOpen(true)}> {t('View raw event')} {pubkey && ( <> (isMuted ? unmutePubkey(event.pubkey) : mutePubkey(event.pubkey))} className="text-destructive focus:text-destructive" > {isMuted ? : } {isMuted ? t('Unmute user') : t('Mute user')} )} {rawEventDialog}
) }