import { RelayContext } from '@components/relaysProvider'; import { DEFAULT_AVATAR } from '@stores/constants'; import { fetchMetadata } from '@utils/metadata'; import * as DropdownMenu from '@radix-ui/react-dropdown-menu'; import { AvatarIcon, ExitIcon, GearIcon } from '@radix-ui/react-icons'; import { writeText } from '@tauri-apps/api/clipboard'; import Image from 'next/image'; import { useRouter } from 'next/router'; import { nip19 } from 'nostr-tools'; import { memo, useCallback, useContext, useEffect } from 'react'; export const ActiveAccount = memo(function ActiveAccount({ user }: { user: any }) { const [pool, relays]: any = useContext(RelayContext); const router = useRouter(); const userData = JSON.parse(user.metadata); const openProfilePage = () => { router.push(`/users/${user.pubkey}`); }; const copyPublicKey = async () => { await writeText(nip19.npubEncode(user.pubkey)); }; const insertFollowsToStorage = useCallback( async (tags) => { const { createFollow } = await import('@utils/bindings'); const activeAccount = JSON.parse(localStorage.getItem('activeAccount')); for (const tag of tags) { const metadata: any = await fetchMetadata(tag[1], pool, relays); createFollow({ pubkey: tag[1], kind: 0, metadata: metadata.content, account_id: activeAccount.id }).catch( console.error ); } }, [pool, relays] ); useEffect(() => { const unsubscribe = pool.subscribe( [ { kinds: [3], authors: [user.pubkey], }, ], relays, (event: any) => { if (event.tags.length > 0) { insertFollowsToStorage(event.tags); } }, undefined, undefined, { unsubscribeOnEose: true, } ); return () => { unsubscribe; }; }, [insertFollowsToStorage, pool, relays, user.pubkey]); return ( openProfilePage()} className="group relative flex h-7 select-none items-center rounded-sm px-1 pl-7 text-sm leading-none text-zinc-400 outline-none data-[disabled]:pointer-events-none data-[highlighted]:bg-zinc-800 data-[highlighted]:text-fuchsia-500" >
Open profile
Update profile copyPublicKey()} className="group relative flex h-7 select-none items-center rounded px-1 pl-7 text-sm leading-none text-zinc-400 outline-none data-[disabled]:pointer-events-none data-[highlighted]:bg-zinc-800 data-[highlighted]:text-fuchsia-500" > Copy public key
Settings
Logout
); });