diff options
| author | Adam Soltys <[email protected]> | 2024-10-01 18:49:58 +0000 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-10-01 18:49:58 +0000 |
| commit | 61148ad9ef6ba72c97caee69d490f2bb27470ced (patch) | |
| tree | fcd04c1f09b0c16e0ddfdab806b148947676f8fc /lib | |
| parent | 8097f7e6e23c393a6df7c8e62ab036af31eea554 (diff) | |
| download | coinos-server-61148ad9ef6ba72c97caee69d490f2bb27470ced.tar.gz coinos-server-61148ad9ef6ba72c97caee69d490f2bb27470ced.zip | |
fake zap receipt for internal
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/nostr.ts | 9 | ||||
| -rw-r--r-- | lib/nwc.ts | 19 | ||||
| -rw-r--r-- | lib/payments.ts | 3 |
3 files changed, 22 insertions, 9 deletions
diff --git a/lib/nostr.ts b/lib/nostr.ts index d6c9c643..90c33694 100644 --- a/lib/nostr.ts +++ b/lib/nostr.ts @@ -6,6 +6,7 @@ import { fail, wait } from "$lib/utils"; import { nip19, finalizeEvent } from "nostr-tools"; import { emit } from "$lib/sockets"; import { hex } from "@scure/base"; +import { Relay as ntr } from 'nostr-tools/relay' export const serverPubkey = hex.encode( getPublicKey(nip19.decode(config.nostrKey).data), @@ -264,9 +265,13 @@ export async function handleZap(invoice) { tags.push(["preimage", invoice.payment_preimage]); let ev = { pubkey, kind, created_at, content, tags }; - ev = await finalizeEvent(ev, sk); + let signed = await finalizeEvent(ev, sk); l("sending receipt"); - await Promise.allSettled(relays.map((r) => send(ev, r))); + await Promise.allSettled(relays.map(async (url) => { + let r = await ntr.connect(url); + await r.publish(signed); + r.close() + })); } @@ -71,12 +71,6 @@ let handle = (method, params, user) => let invoice = await getInvoice(pr); let recipient = await g(`user:${invoice.uid}`); - if (invoice.memo.includes("9734")) { - try { - await handleZap(invoice); - } catch (e) {} - } - let { id: preimage } = await sendInternal({ amount, invoice, @@ -84,6 +78,19 @@ let handle = (method, params, user) => sender: user, }); + if (invoice.memo.includes("9734")) { + let { invoices } = await ln.listinvoices({ invstring: pr }); + let inv = invoices[0]; + inv.payment_preimage = preimage; + inv.paid_at = Math.floor(Date.now() / 1000); + try { + await handleZap(inv); + } catch (e) { + console.log("zap receipt failed", e); + } + } + + return result({ preimage }); } else { await sendLightning({ diff --git a/lib/payments.ts b/lib/payments.ts index 3a02bfda..60989924 100644 --- a/lib/payments.ts +++ b/lib/payments.ts @@ -502,7 +502,8 @@ export let sendLightning = async ({ } let total = amount; - let { amount_msat } = await ln.decode(pr); + let decoded = await ln.decode(pr); + let { amount_msat } = decoded; if (amount_msat) total = Math.round(amount_msat / 1000); maxfee = parseInt(maxfee) || getMaxFee(total); |
