diff --git a/src/js/services/bitcoin-uri.service.js b/src/js/services/bitcoin-uri.service.js index d8498ec53..dcb3fc5a8 100644 --- a/src/js/services/bitcoin-uri.service.js +++ b/src/js/services/bitcoin-uri.service.js @@ -96,49 +96,6 @@ } return result; } - - function isValidCashAddr(address, network) { - - var a = address.replace('bitcoincash:', ''); - var result = {}; - if (a[0] == '1') { - result = Address.fromString(a, 'livenet', 'pubkeyhash'); - } else if (a[0] == '3') { - result = Address.fromString(a, 'livenet', 'scripthash'); - } else if (a[0] == 'C') { - result = Address.fromString(a, 'livenet', 'pubkeyhash', BitpayFormat); - } else if (a[0] == 'H') { - result = Address.fromString(a, 'livenet', 'scripthash', BitpayFormat); - } else if (a[0] == 'q') { - result = Address.fromString(address, 'livenet', 'pubkeyhash', CashAddrFormat); - } else if (a[0] == 'p') { - result = Address.fromString(address, 'livenet', 'scripthash', CashAddrFormat); - } else { - return null; - } - - var isValid = false; - - var prefix = network === 'testnet' ? 'bchtest:' : 'bitcoincash:'; - - try { - if (cashAddrRe.test(address)) { - // bitcoinCashJs.Address.isValid() assumes legacy address for string data, so does not work with cashaddr. - var bchAddresses = bitcoinCashJsService.readAddress(address.toLowerCase()); - if (bchAddresses) { - var legacyAddress = bchAddresses.legacy; - if (bch.Address.isValid(legacyAddress, network)) { - isValid = true; - } - } - } - } catch (e) { - // Nop - Must not be a valid cashAddr. - $log.error('Error validating address.', e); - } - console.log(address,'isValidCashAddr:', isValid); - return isValid; - } /* @@ -170,7 +127,7 @@ // Need to do testnet, and copay too */ - // bitcoincash:?r=https://bitpay.com/i/GLRoZMZxaWBqLqpoXexzoD + function parse(uri) { var parsed = { isValid: false diff --git a/src/js/services/bitcoin-uri.service.spec.js b/src/js/services/bitcoin-uri.service.spec.js index b956cccc6..c2a2571c4 100644 --- a/src/js/services/bitcoin-uri.service.spec.js +++ b/src/js/services/bitcoin-uri.service.spec.js @@ -162,10 +162,20 @@ fdescribe('bitcoinUriService', function() { expect(parsed.testnet).toBe(true); }); + it('cashAddr uppercase', function() { + + var parsed = bitcoinUriService.parse('BITCOINCASH:QZZG9NMC5VX8GAP6XFATX3TWNSDN2YRMCSSULSMY44'); + + expect(parsed.isValid).toBe(true); + expect(parsed.address).toBe('qzzg9nmc5vx8gap6xfatx3twnsdn2yrmcssulsmy44'); + expect(parsed.coin).toBe('bch'); + expect(parsed.legacyAddress).toBe('1D5euC1yUbHiNpXreQrUUYt7LNevD3cviR'); + expect(parsed.testnet).toBe(false); + }); + it('cashAddr with prefix', function() { var parsed = bitcoinUriService.parse('bitcoincash:qrq9p82a247lecv08ldk5p5h6ahtnjzpqcnh8yhq92'); - console.log('parsed:', JSON.stringify(parsed)); expect(parsed.isValid).toBe(true); expect(parsed.address).toBe('qrq9p82a247lecv08ldk5p5h6ahtnjzpqcnh8yhq92');