import { Show, createEffect, createResource, onCleanup } from "solid-js"; import { CreateNWAParams, createNwa, fetchNwaStatus } from "~/api/walletAuth"; import { IntegratedQr } from "./IntegratedQr"; export function NWA(props: { nwaParams: CreateNWAParams; onConnectedChange: (authId?: string) => void; }) { // When we mount we want to reset the "connected" state props.onConnectedChange(undefined); const [nwaResponse] = createResource(() => props.nwaParams, createNwa); const [nwaConnected, { refetch }] = createResource( nwaResponse, fetchNwaStatus ); const refetchInterval = setInterval(() => { refetch(); }, 3000); onCleanup(() => { clearInterval(refetchInterval); }); createEffect(() => { if (nwaConnected.latest && nwaResponse.latest) { props.onConnectedChange(nwaResponse()?.id); } else { props.onConnectedChange(undefined); } }); function handleOpenMutinyNWA() { // open mutiny in a new window const uri = nwaResponse()?.uri; const encodedUri = encodeURIComponent(uri); window.open( `https://app.mutinywallet.com/settings/connections?nwa=${encodedUri}`, "_blank" ); } return ( ); }