import BaseLayout from '@layouts/base'; import { RelayContext } from '@components/relaysProvider'; import { relaysAtom } from '@stores/relays'; import { createAccount, createFollows } from '@utils/storage'; import { tagsToArray } from '@utils/transform'; import { truncate } from '@utils/truncate'; import destr from 'destr'; import { useAtomValue } from 'jotai'; import Image from 'next/image'; import { useRouter } from 'next/router'; import { getPublicKey, nip19 } from 'nostr-tools'; import { JSXElementConstructor, ReactElement, ReactFragment, ReactPortal, useContext, useEffect, useState, } from 'react'; export default function Page() { const pool: any = useContext(RelayContext); const router = useRouter(); const privkey: any = router.query.privkey; const pubkey = getPublicKey(privkey); const relays = useAtomValue(relaysAtom); const [profile, setProfile] = useState(null); useEffect(() => { pool.subscribe( [ { authors: [pubkey], kinds: [0, 3], since: 0, }, ], relays, (event: any) => { if (event.kind === 0) { const data = { pubkey: pubkey, privkey: privkey, npub: nip19.npubEncode(pubkey), nsec: nip19.nsecEncode(privkey), metadata: event.content, }; setProfile(destr(event.content)); createAccount(data); } else { if (event.tags.length > 0) { createFollows(tagsToArray(event.tags), pubkey, 0); } } }, undefined, undefined, { unsubscribeOnEose: true, } ); }, [pool, privkey, pubkey, relays]); // submit then redirect to home const submit = () => { router.push('/'); }; return (

Bringing back your profile...

{profile?.display_name || profile?.name}

·

@{profile?.username || truncate(pubkey, 16, ' .... ')}

); } Page.getLayout = function getLayout( page: | string | number | boolean | ReactElement> | ReactFragment | ReactPortal ) { return {page}; };