import { useState } from "react"; import { FormattedMessage, useIntl } from "react-intl"; import { v4 as uuid } from "uuid"; import AsyncButton from "Element/AsyncButton"; import { unwrap } from "SnortUtils"; import { WalletConfig, WalletKind, Wallets } from "Wallet"; import { Link, useNavigate } from "react-router-dom"; import { NostrConnectWallet } from "Wallet/NostrWalletConnect"; const ConnectNostrWallet = () => { const navigate = useNavigate(); const { formatMessage } = useIntl(); const [config, setConfig] = useState(); const [error, setError] = useState(); async function tryConnect(config: string) { try { const connection = new NostrConnectWallet(config); await connection.login(); const info = await connection.getInfo(); const newWallet = { id: uuid(), kind: WalletKind.NWC, active: true, info, data: config, } as WalletConfig; Wallets.add(newWallet); navigate("/wallet"); } catch (e) { if (e instanceof Error) { setError((e as Error).message); } else { setError( formatMessage({ defaultMessage: "Unknown error", }) ); } } } return ( <>

setConfig(e.target.value)} />
tryConnect(unwrap(config))} disabled={!config}>
{error && {error}}

nwc.getalby.com ), }} />

); }; export default ConnectNostrWallet;