import { createForm, required, SubmitHandler } from "@modular-forms/solid"; import { createSignal, Show } from "solid-js"; import { Button, VStack } from "~/components"; import { InfoBox } from "~/components/InfoBox"; import { TextField } from "~/components/layout/TextField"; import { useI18n } from "~/i18n/context"; import { useMegaStore } from "~/state/megaStore"; import { eify } from "~/utils"; export type NostrContactsForm = { npub: string; }; const PRIMAL_API = import.meta.env.VITE_PRIMAL; export function SyncContactsForm() { const i18n = useI18n(); const [state, actions] = useMegaStore(); const [error, setError] = createSignal(); const [feedbackForm, { Form, Field }] = createForm({ initialValues: { npub: "" } }); const handleSubmit: SubmitHandler = async ( f: NostrContactsForm ) => { try { const npub = f.npub.trim(); if (!PRIMAL_API) throw new Error("PRIMAL_API not set"); await state.mutiny_wallet?.sync_nostr_contacts(PRIMAL_API, npub); actions.saveNpub(npub); } catch (e) { console.error(e); setError(eify(e)); } }; return (
{(field, props) => ( )} {error()?.message}
); }