import { useEffect, useState } from "react"; import { MnemonicOnboardingScreen } from "./components/MnemonicOnboardingScreen"; import { useTernent } from "./hooks/useTernent"; type OnboardingDraft = Awaited< ReturnType>["identity"]["createOnboardingDraft"]> >; export default function App() { const api = useTernent(); const [draft, setDraft] = useState(null); const [password, setPassword] = useState("local-dev-password"); const [recoverMnemonic, setRecoverMnemonic] = useState(""); const [flowError, setFlowError] = useState(null); useEffect(() => { if (!api || draft) { return; } void api.identity .createOnboardingDraft() .then(setDraft) .catch((error) => { setFlowError(error instanceof Error ? error.message : String(error)); }); }, [api, draft]); if (!api) { return

Booting app shell...

; } const activeIdentity = api.identity.getActiveIdentity(); const permissions = api.permissions.readableForViewer(); const visibleTasks = api.tasks.visible(); async function handleCreateDraft() { setFlowError(null); setDraft(await api.identity.createOnboardingDraft()); } async function handleUnlock() { setFlowError(null); try { if (draft) { await api.identity.completeOnboarding({ draft, password, confirmPassword: password, mnemonicConfirmed: true, }); return; } await api.identity.unlockWithPassword({ password }); } catch (error) { setFlowError(error instanceof Error ? error.message : String(error)); } } async function handleRecover() { setFlowError(null); try { await api.identity.recoverFromMnemonic({ mnemonic: recoverMnemonic, password, confirmPassword: password, }); } catch (error) { setFlowError(error instanceof Error ? error.message : String(error)); } } return (

Runtime status

{JSON.stringify({ status: api.status.current(), lastError: api.lastError.current() }, null, 2)}

Active identity

{JSON.stringify(api.identity.getActiveIdentity() ?? activeIdentity, null, 2)}

Readable permissions

{JSON.stringify(api.permissions.readableForViewer() ?? permissions, null, 2)}

Visible tasks

{JSON.stringify(api.tasks.visible() ?? visibleTasks, null, 2)}
); }