import { Dialog } from "@kobalte/core"; import { SubmitHandler } from "@modular-forms/solid"; import { Contact } from "@mutinywallet/mutiny-wasm"; import { createSignal, Match, Show, Switch } from "solid-js"; import { useNavigate } from "solid-start"; import close from "~/assets/icons/close.svg"; import { Button, ContactForm, KeyValue, MiniStringShower, showToast, SmallHeader, VStack } from "~/components"; import { useI18n } from "~/i18n/context"; import { toParsedParams } from "~/logic/waila"; import { useMegaStore } from "~/state/megaStore"; import { DIALOG_CONTENT, DIALOG_POSITIONER } from "~/styles/dialogs"; export type ContactFormValues = { name: string; npub?: string; }; export function ContactViewer(props: { contact: Contact; gradient: string; saveContact: (contact: Contact) => void; }) { const i18n = useI18n(); const [isOpen, setIsOpen] = createSignal(false); const [isEditing, setIsEditing] = createSignal(false); const [state, actions] = useMegaStore(); const navigate = useNavigate(); const handleSubmit: SubmitHandler = ( c: ContactFormValues ) => { // FIXME: merge with existing contact if saving (need edit contact method) // FIXME: npub not valid? other undefineds const contact = new Contact(c.name, undefined, undefined, undefined); props.saveContact(contact); setIsEditing(false); }; const handlePay = () => { const network = state.mutiny_wallet?.get_network() || "signet"; const lnurl = props.contact.lnurl || props.contact.ln_address || ""; if (lnurl) { const result = toParsedParams(lnurl, network); if (!result.ok) { showToast(result.error); return; } else { result.value.privateTag = props.contact.name; if ( result.value?.address || result.value?.invoice || result.value?.node_pubkey || result.value?.lnurl ) { actions.setScanResult(result.value); navigate("/send"); } } } }; return (
{ setIsOpen(false); setIsEditing(false); }} >
{props.contact.name[0]}

{props.contact.name}

{/* TODO: show payment history for a contact */} {/* {i18n.t("contacts.no_payments")}{" "} {props.contact.name} */}
{/* TODO: implement contact editing */} {/*
*/}
); }