import { Button } from '@/components/ui/button' import { Drawer, DrawerContent, DrawerOverlay } from '@/components/ui/drawer' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu' import { Pubkey } from '@/domain' import { useMuteList } from '@/providers/MuteListProvider' import { useNostr } from '@/providers/NostrProvider' import { useScreenSize } from '@/providers/ScreenSizeProvider' import { Bell, BellOff, Copy, Ellipsis } from 'lucide-react' import { useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' export default function ProfileOptions({ pubkey }: { pubkey: string }) { const { t } = useTranslation() const { isSmallScreen } = useScreenSize() const { pubkey: accountPubkey } = useNostr() const { mutePubkeySet, mutePubkeyPrivately, mutePubkeyPublicly, unmutePubkey } = useMuteList() const [isDrawerOpen, setIsDrawerOpen] = useState(false) const isMuted = useMemo(() => mutePubkeySet.has(pubkey), [mutePubkeySet, pubkey]) if (pubkey === accountPubkey) return null const trigger = ( ) if (isSmallScreen) { return ( <> {trigger} setIsDrawerOpen(false)} />
{accountPubkey ? ( isMuted ? ( ) : ( <> ) ) : null}
) } return ( {trigger} navigator.clipboard.writeText(Pubkey.tryFromString(pubkey)?.npub ?? '')}> {t('Copy user ID')} {accountPubkey ? ( isMuted ? ( unmutePubkey(pubkey)} className="text-destructive focus:text-destructive" > {t('Unmute user')} ) : ( <> mutePubkeyPrivately(pubkey)} className="text-destructive focus:text-destructive" > {t('Mute user privately')} mutePubkeyPublicly(pubkey)} className="text-destructive focus:text-destructive" > {t('Mute user publicly')} ) ) : null} ) }