import { CheckIcon } from "@lume/icons"; import { Spinner } from "@lume/ui"; import { displayNsec } from "@lume/utils"; import * as Checkbox from "@radix-ui/react-checkbox"; import { createFileRoute, useNavigate } from "@tanstack/react-router"; import { invoke } from "@tauri-apps/api/core"; import { writeText } from "@tauri-apps/plugin-clipboard-manager"; import { message } from "@tauri-apps/plugin-dialog"; import { useState } from "react"; import { useTranslation } from "react-i18next"; export const Route = createFileRoute("/auth/$account/backup")({ component: Screen, }); function Screen() { const { account } = Route.useParams(); const { t } = useTranslation(); const [key, setKey] = useState(null); const [passphase, setPassphase] = useState(""); const [copied, setCopied] = useState(false); const [loading, setLoading] = useState(false); const [confirm, setConfirm] = useState({ c1: false, c2: false, c3: false }); const navigate = useNavigate(); const submit = async () => { try { if (key) { if (!confirm.c1 || !confirm.c2 || !confirm.c3) { return await message("You need to confirm before continue", { title: "Backup", kind: "info", }); } navigate({ to: "/", replace: true }); } // start loading setLoading(true); invoke("get_encrypted_key", { npub: account, password: passphase, }).then((encrypted: string) => { // update state setKey(encrypted); setLoading(false); }); } catch (e) { setLoading(false); await message(String(e), { title: "Backup", kind: "error", }); } }; const copyKey = async () => { try { await writeText(key); setCopied(true); } catch (e) { await message(String(e), { title: "Backup", kind: "error", }); } }; return (

Backup your sign in keys

It's use for login to Lume or other Nostr clients. You will lost access to your account if you lose this key.

setPassphase(e.target.value)} className="w-full px-3 border-transparent rounded-lg h-11 bg-neutral-100 placeholder:text-neutral-600 focus:border-blue-500 focus:ring-0 dark:bg-white/10 dark:placeholder:text-neutral-400" />
{key ? ( <>
Before you continue:
setConfirm((state) => ({ ...state, c1: !state.c1 })) } className="flex items-center justify-center rounded-md outline-none appearance-none size-6 bg-neutral-100 dark:bg-white/10 dark:hover:bg-white/20" id="confirm1" >
setConfirm((state) => ({ ...state, c2: !state.c2 })) } className="flex items-center justify-center rounded-md outline-none appearance-none size-6 bg-neutral-100 dark:bg-white/10 dark:hover:bg-white/20" id="confirm2" >
setConfirm((state) => ({ ...state, c3: !state.c3 })) } className="flex items-center justify-center rounded-md outline-none appearance-none size-6 bg-neutral-100 dark:bg-white/10 dark:hover:bg-white/20" id="confirm3" >
) : null}
); }