import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar' import { Button } from '@/components/ui/button' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu' import { useFetchProfile } from '@/hooks' import { toProfile } from '@/lib/link' import { formatPubkey, generateImageByPubkey } from '@/lib/pubkey' import { useSecondaryPage } from '@/PageManager' import { useNostr } from '@/providers/NostrProvider' import { useState } from 'react' import { useTranslation } from 'react-i18next' import LoginDialog from '../LoginDialog' export default function ProfileButton({ variant = 'titlebar' }: { variant?: 'titlebar' | 'sidebar' | 'small-screen-titlebar' }) { const { t } = useTranslation() const { removeAccount, account } = useNostr() const pubkey = account?.pubkey const { profile } = useFetchProfile(pubkey) const { push } = useSecondaryPage() const [loginDialogOpen, setLoginDialogOpen] = useState(false) if (!pubkey) return null const defaultAvatar = generateImageByPubkey(pubkey) const { username, avatar } = profile || { username: formatPubkey(pubkey), avatar: defaultAvatar } let triggerComponent: React.ReactNode if (variant === 'titlebar') { triggerComponent = ( ) } else if (variant === 'small-screen-titlebar') { triggerComponent = ( ) } else { triggerComponent = ( ) } return ( {triggerComponent} push(toProfile(pubkey))}>{t('Profile')} setLoginDialogOpen(true)}> {t('Manage accounts')} removeAccount(account)} > {t('Logout')} ) }