import { NDKPrivateKeySigner } from '@nostr-dev-kit/ndk'; import { getPublicKey, nip19 } from 'nostr-tools'; import { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { toast } from 'sonner'; import { useArk } from '@libs/ark'; export function NewPrivkeyScreen() { const { ark } = useArk(); const navigate = useNavigate(); const [nsec, setNsec] = useState(''); const submit = async (isSave?: boolean) => { try { if (!nsec.startsWith('nsec1')) return toast.info('You must enter a private key starts with nsec'); const decoded = nip19.decode(nsec); if (decoded.type !== 'nsec') return toast.info('You must enter a valid nsec'); const privkey = decoded.data; const pubkey = getPublicKey(privkey); if (pubkey !== ark.account.pubkey) return toast.info( 'Your nsec is not match your current public key, please make sure you enter right nsec' ); const signer = new NDKPrivateKeySigner(privkey); ark.updateNostrSigner({ signer }); if (isSave) await ark.createPrivkey(ark.account.pubkey, privkey); navigate(-1); } catch (e) { toast.error(e); } }; return (