From 63ac0497699cf0be93f1da5d6f7c96461ac1f883 Mon Sep 17 00:00:00 2001 From: Evan Kaloudis Date: Mon, 19 Dec 2022 15:55:51 -0500 Subject: [PATCH 1/2] Unified Address parsing: handle uppercase param names --- utils/AddressUtils.test.ts | 26 ++++++++++++++++++++++++++ utils/AddressUtils.ts | 10 ++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/utils/AddressUtils.test.ts b/utils/AddressUtils.test.ts index 21ef1334f..74811373a 100644 --- a/utils/AddressUtils.test.ts +++ b/utils/AddressUtils.test.ts @@ -310,6 +310,32 @@ describe('AddressUtils', () => { amount: '1000' }); }); + + it('processes BIP21 invoices - with lightning param in all caps', () => { + expect( + AddressUtils.processSendAddress( + 'bitcoin:BC1QYLH3U67J673H6Y6ALV70M0PL2YZ53TZHVXGG7U?amount=0.00001&label=sbddesign%3A%20For%20lunch%20Tuesday&message=For%20lunch%20Tuesday&LIGHTNING=LNBC10U1P3PJ257PP5YZTKWJCZ5FTL5LAXKAV23ZMZEKAW37ZK6KMV80PK4XAEV5QHTZ7QDPDWD3XGER9WD5KWM36YPRX7U3QD36KUCMGYP282ETNV3SHJCQZPGXQYZ5VQSP5USYC4LK9CHSFP53KVCNVQ456GANH60D89REYKDNGSMTJ6YW3NHVQ9QYYSSQJCEWM5CJWZ4A6RFJX77C490YCED6PEMK0UPKXHY89CMM7SCT66K8GNEANWYKZGDRWRFJE69H9U5U0W57RRCSYSAS7GADWMZXC8C6T0SPJAZUP6&test=haha' + ) + ).toEqual({ + value: 'BC1QYLH3U67J673H6Y6ALV70M0PL2YZ53TZHVXGG7U', + lightning: + 'LNBC10U1P3PJ257PP5YZTKWJCZ5FTL5LAXKAV23ZMZEKAW37ZK6KMV80PK4XAEV5QHTZ7QDPDWD3XGER9WD5KWM36YPRX7U3QD36KUCMGYP282ETNV3SHJCQZPGXQYZ5VQSP5USYC4LK9CHSFP53KVCNVQ456GANH60D89REYKDNGSMTJ6YW3NHVQ9QYYSSQJCEWM5CJWZ4A6RFJX77C490YCED6PEMK0UPKXHY89CMM7SCT66K8GNEANWYKZGDRWRFJE69H9U5U0W57RRCSYSAS7GADWMZXC8C6T0SPJAZUP6', + amount: '1000' + }); + }); + + it('processes BIP21 invoices - with amount param in all caps', () => { + expect( + AddressUtils.processSendAddress( + 'bitcoin:BC1QYLH3U67J673H6Y6ALV70M0PL2YZ53TZHVXGG7U?AMOUNT=0.00001&label=sbddesign%3A%20For%20lunch%20Tuesday&message=For%20lunch%20Tuesday&LIGHTNING=LNBC10U1P3PJ257PP5YZTKWJCZ5FTL5LAXKAV23ZMZEKAW37ZK6KMV80PK4XAEV5QHTZ7QDPDWD3XGER9WD5KWM36YPRX7U3QD36KUCMGYP282ETNV3SHJCQZPGXQYZ5VQSP5USYC4LK9CHSFP53KVCNVQ456GANH60D89REYKDNGSMTJ6YW3NHVQ9QYYSSQJCEWM5CJWZ4A6RFJX77C490YCED6PEMK0UPKXHY89CMM7SCT66K8GNEANWYKZGDRWRFJE69H9U5U0W57RRCSYSAS7GADWMZXC8C6T0SPJAZUP6&test=haha' + ) + ).toEqual({ + value: 'BC1QYLH3U67J673H6Y6ALV70M0PL2YZ53TZHVXGG7U', + lightning: + 'LNBC10U1P3PJ257PP5YZTKWJCZ5FTL5LAXKAV23ZMZEKAW37ZK6KMV80PK4XAEV5QHTZ7QDPDWD3XGER9WD5KWM36YPRX7U3QD36KUCMGYP282ETNV3SHJCQZPGXQYZ5VQSP5USYC4LK9CHSFP53KVCNVQ456GANH60D89REYKDNGSMTJ6YW3NHVQ9QYYSSQJCEWM5CJWZ4A6RFJX77C490YCED6PEMK0UPKXHY89CMM7SCT66K8GNEANWYKZGDRWRFJE69H9U5U0W57RRCSYSAS7GADWMZXC8C6T0SPJAZUP6', + amount: '1000' + }); + }); }); describe('isValidLNDHubAddress', () => { diff --git a/utils/AddressUtils.ts b/utils/AddressUtils.ts index 69c41801d..0c5b40794 100644 --- a/utils/AddressUtils.ts +++ b/utils/AddressUtils.ts @@ -45,13 +45,15 @@ const bitcoinQrParser = (input: string, prefix: string) => { }); const value = btcAddress; - if (result.amount) { - amount = new BigNumber(result.amount).multipliedBy(SATS_PER_BTC); + if (result.amount || result.AMOUNT) { + amount = new BigNumber(result.amount || result.AMOUNT).multipliedBy( + SATS_PER_BTC + ); amount = amount.toString(); } - if (result.lightning) { - lightning = result.lightning; + if (result.lightning || result.LIGHTNING) { + lightning = result.lightning || result.LIGHTNING; } return [value, amount, lightning]; From 026fa477ab9c8b296368204085bdbf700cf1b647 Mon Sep 17 00:00:00 2001 From: Evan Kaloudis Date: Mon, 19 Dec 2022 16:13:14 -0500 Subject: [PATCH 2/2] Unified invoices: if node doesn't support on-chain sends, send user right to LN payment request --- utils/handleAnything.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/utils/handleAnything.ts b/utils/handleAnything.ts index 51298a158..0ed3572c6 100644 --- a/utils/handleAnything.ts +++ b/utils/handleAnything.ts @@ -30,6 +30,10 @@ const handleAnything = async ( lightning ) { if (isClipboardValue) return true; + if (!RESTUtils.supportsOnchainSends()) { + invoicesStore.getPayReq(lightning); + return ['PaymentRequest', {}]; + } return [ 'Accounts', {