From 0b6b17f4f9e3aa77f8efcbfa406fe8eb38aa5ce4 Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Tue, 4 Apr 2023 23:38:13 +0200 Subject: [PATCH] add mint --- .../app/src/Pages/settings/wallet/Cashu.tsx | 39 ++++++++++--------- packages/app/src/Wallet/Cashu.ts | 13 +++---- packages/app/src/Wallet/index.ts | 5 +++ 3 files changed, 32 insertions(+), 25 deletions(-) diff --git a/packages/app/src/Pages/settings/wallet/Cashu.tsx b/packages/app/src/Pages/settings/wallet/Cashu.tsx index ddcb6607..977b1fce 100644 --- a/packages/app/src/Pages/settings/wallet/Cashu.tsx +++ b/packages/app/src/Pages/settings/wallet/Cashu.tsx @@ -11,23 +11,26 @@ import { useNavigate } from "react-router-dom"; const ConnectCashu = () => { const navigate = useNavigate(); const { formatMessage } = useIntl(); - const [config, setConfig] = useState(); + const [mintUrl, setMintUrl] = useState(); const [error, setError] = useState(); async function tryConnect(config: string) { try { - // const connection = new CashuWallet(config); - // await connection.login(); - // const info = await connection.getInfo(); - // const newWallet = { - // id: uuid(), - // kind: WalletKind.LNDHub, - // active: true, - // info, - // data: config, - // } as WalletConfig; - // Wallets.add(newWallet); - // navigate("/wallet"); + if (!mintUrl) { + throw new Error("Mint URL is required"); + } + const connection = new CashuWallet(config); + await connection.login(); + const info = await connection.getInfo(); + const newWallet = { + id: uuid(), + kind: WalletKind.Cashu, + active: true, + info, + data: mintUrl, + } as WalletConfig; + Wallets.add(newWallet); + navigate("/wallet"); } catch (e) { if (e instanceof Error) { setError((e as Error).message); @@ -44,19 +47,19 @@ const ConnectCashu = () => { return ( <>

- +

setConfig(e.target.value)} + value={mintUrl} + onChange={e => setMintUrl(e.target.value)} />
- tryConnect(unwrap(config))} disabled={!config}> + tryConnect(unwrap(mintUrl))} disabled={!mintUrl}>
diff --git a/packages/app/src/Wallet/Cashu.ts b/packages/app/src/Wallet/Cashu.ts index 493eacea..d0ebb889 100644 --- a/packages/app/src/Wallet/Cashu.ts +++ b/packages/app/src/Wallet/Cashu.ts @@ -14,12 +14,10 @@ import { CashuMint, CashuWallet as TheCashuWallet, getEncodedToken, Proof } from export class CashuWallet implements LNWallet { #mint: string; - #walletPath: string; #wallet?: TheCashuWallet; - constructor(mint: string, path: string) { + constructor(mint: string) { this.#mint = mint; - this.#walletPath = path; } isReady(): boolean { @@ -30,14 +28,15 @@ export class CashuWallet implements LNWallet { if (!this.#wallet) { throw new WalletError(WalletErrorCode.GeneralError, "Wallet not initialized"); } + const keysets = await this.#wallet.mint.getKeySets(); return { - nodePubKey: "asd", - alias: "asd", + nodePubKey: "asdd", + alias: "Cashu mint: " + this.#mint, } as WalletInfo; } async login(_?: string | undefined): Promise { - const m = new CashuMint(this.#mint, this.#walletPath); + const m = new CashuMint(this.#mint); const keys = await m.getKeys(); this.#wallet = new TheCashuWallet(keys, m); return true; @@ -58,7 +57,7 @@ export class CashuWallet implements LNWallet { throw new Error("Method not implemented."); } getInvoices(): Promise { - throw new Error("Method not implemented."); + return Promise.resolve([]); } } diff --git a/packages/app/src/Wallet/index.ts b/packages/app/src/Wallet/index.ts index 29b53e76..b63b8d2e 100644 --- a/packages/app/src/Wallet/index.ts +++ b/packages/app/src/Wallet/index.ts @@ -4,6 +4,7 @@ import { decodeInvoice, unwrap } from "Util"; import { LNCWallet } from "./LNCWallet"; import LNDHubWallet from "./LNDHub"; import { NostrConnectWallet } from "./NostrWalletConnect"; +import { CashuWallet } from "./Cashu"; import { setupWebLNWalletConfig, WebLNWallet } from "./WebLN"; export enum WalletKind { @@ -11,6 +12,7 @@ export enum WalletKind { LNC = 2, WebLN = 3, NWC = 4, + Cashu = 5, } export enum WalletErrorCode { @@ -251,6 +253,9 @@ export class WalletStore { case WalletKind.NWC: { return new NostrConnectWallet(unwrap(cfg.data)); } + case WalletKind.Cashu: { + return new CashuWallet(unwrap(cfg.data)); + } } } }