From 0767b23d80e9316d236145496f34a5fb0f7eca88 Mon Sep 17 00:00:00 2001 From: keyan Date: Wed, 4 Oct 2023 19:34:32 -0500 Subject: [PATCH] remove payer data encoding before going to db --- api/resolvers/wallet.js | 5 ++++- pages/api/lnurlp/[username]/pay.js | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/api/resolvers/wallet.js b/api/resolvers/wallet.js index df73f8b8..7259ceeb 100644 --- a/api/resolvers/wallet.js +++ b/api/resolvers/wallet.js @@ -292,6 +292,9 @@ export default { ...payer, identifier: payer.identifier ? me.name : undefined } + payer = Object.fromEntries( + Object.entries(payer).filter(([, value]) => !!value) + ) } const milliamount = 1000 * amount @@ -303,7 +306,7 @@ export default { } let encodedPayerData = '' - if (payer) { + if (payer && Object.entries(payer).length) { encodedPayerData = encodeURIComponent(JSON.stringify(payer)) callback.searchParams.append('payerdata', encodedPayerData) } diff --git a/pages/api/lnurlp/[username]/pay.js b/pages/api/lnurlp/[username]/pay.js index 66b7501e..7efe6af3 100644 --- a/pages/api/lnurlp/[username]/pay.js +++ b/pages/api/lnurlp/[username]/pay.js @@ -47,8 +47,8 @@ export default async ({ query: { username, amount, nostr, comment, payerdata: pa return res.status(400).json({ status: 'ERROR', reason: `comment cannot exceed ${LNURLP_COMMENT_MAX_LENGTH} characters in length` }) } + let parsedPayerData if (payerData) { - let parsedPayerData try { parsedPayerData = JSON.parse(decodeURIComponent(payerData)) } catch (err) { @@ -81,7 +81,7 @@ export default async ({ query: { username, amount, nostr, comment, payerdata: pa await serialize(models, models.$queryRaw`SELECT * FROM create_invoice(${invoice.id}, ${invoice.request}, ${expiresAt}::timestamp, ${Number(amount)}, ${user.id}::INTEGER, ${noteStr || description}, - ${comment || null}, ${payerData || null}::JSONB, ${INV_PENDING_LIMIT}::INTEGER, ${BALANCE_LIMIT_MSATS})`) + ${comment || null}, ${parsedPayerData || null}::JSONB, ${INV_PENDING_LIMIT}::INTEGER, ${BALANCE_LIMIT_MSATS})`) return res.status(200).json({ pr: invoice.request,