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]; 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', {