diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/invoices.ts | 3 | ||||
| -rw-r--r-- | lib/nwc.ts | 43 |
2 files changed, 34 insertions, 12 deletions
diff --git a/lib/invoices.ts b/lib/invoices.ts index 45c97fe2..0094c6d7 100644 --- a/lib/invoices.ts +++ b/lib/invoices.ts @@ -10,7 +10,7 @@ import ln from "$lib/ln"; let bc = rpc(config.bitcoin); let lq = rpc(config.liquid); -export let generate = async ({ invoice, user, sender = undefined }) => { +export let generate = async ({ invoice, user }) => { let { bolt11, account, @@ -34,7 +34,6 @@ export let generate = async ({ invoice, user, sender = undefined }) => { tip = parseInt(tip) || null; if (user) user = await getUser(user.username); - else if (sender) user = await getUser(sender.username); if (!user) fail("user not provided"); if (account === user.id) account = undefined; @@ -7,6 +7,7 @@ import { sendInternal, sendLightning } from "$lib/payments"; import { serverPubkey } from "$lib/nostr"; import { nip04, nip19, finalizeEvent } from "nostr-tools"; import type { UnsignedEvent } from "nostr-tools"; +import { generate } from "$lib/invoices"; import ln from "$lib/ln"; let result = (result) => ({ result }); @@ -98,20 +99,42 @@ let handle = (method, params, user) => async get_info() { let { alias, blockheight, color } = await ln.getinfo(); - return { - result: { - alias, - color, - pubkey: serverPubkey, - network: "mainnet", - block_height: blockheight, - methods: ["pay_invoice", "get_balance", "get_info"], - }, - }; + return result({ + alias, + color, + pubkey: serverPubkey, + network: "mainnet", + block_height: blockheight, + methods: ["pay_invoice", "get_balance", "get_info"], + }); }, async get_balance() { let balance = await g(`balance:${user.id}`); return result({ balance }); }, + + async make_invoice() { + let { amount, description, description_hash, expiry } = params; + + let invoice = { + amount: Math.round(amount / 1000), + type: "lightning", + memo: description, + expiry, + }; + + let { hash, created: created_at } = await generate({ invoice, user }); + + return result({ + type: "incoming", + invoice: hash, + description, + description_hash, + amount, + created_at, + expires_at: created_at + expiry, + metadata: {}, + }); + }, })[method](params); |
