import { useActiveAccount } from "@stores/accounts"; import { getPublicKey, nip19 } from "nostr-tools"; import { Resolver, useForm } from "react-hook-form"; import { navigate } from "vite-plugin-ssr/client/router"; type FormValues = { key: string; }; const resolver: Resolver = async (values) => { return { values: values.key ? values : {}, errors: !values.key ? { key: { type: "required", message: "This is required.", }, } : {}, }; }; export function Page() { const createAccount = useActiveAccount((state: any) => state.create); const { register, setError, handleSubmit, formState: { errors, isDirty, isValid, isSubmitting }, } = useForm({ resolver }); const onSubmit = async (data: any) => { try { let privkey = data["key"]; if (privkey.substring(0, 4) === "nsec") { privkey = nip19.decode(privkey).data; } if (typeof getPublicKey(privkey) === "string") { const pubkey = getPublicKey(privkey); const npub = nip19.npubEncode(pubkey); createAccount(npub, pubkey, privkey, null, 1); navigate("/app/auth/import/step-2"); } } catch (error) { setError("key", { type: "custom", message: "Private Key is invalid, please check again", }); } }; return (

Import your key

{errors.key &&

{errors.key.message}

}
{isSubmitting ? ( Loading ) : ( )}
); }