aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/invoices.ts3
-rw-r--r--lib/nwc.ts43
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;
diff --git a/lib/nwc.ts b/lib/nwc.ts
index d8323495..61e2192b 100644
--- a/lib/nwc.ts
+++ b/lib/nwc.ts
@@ -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);