From 78450918dce7f982c68092abe9e5f78929f19586 Mon Sep 17 00:00:00 2001 From: Antoine Estienne Date: Fri, 25 Jun 2021 11:20:19 +0200 Subject: [PATCH] Refactor logic to better use prefix (#491) * refactor logic to better use prefix * lint --- packages/react-qr/src/ScanAddress.tsx | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/react-qr/src/ScanAddress.tsx b/packages/react-qr/src/ScanAddress.tsx index a816e785..181aff56 100644 --- a/packages/react-qr/src/ScanAddress.tsx +++ b/packages/react-qr/src/ScanAddress.tsx @@ -30,14 +30,24 @@ function ScanAddress ({ className, isEthereum, onError, onScan, size, style }: P (data: string | null): void => { if (data) { try { - const [prefix, content, genesisHash, ...name] = data.split(':'); - const isValidPrefix = (prefix === (isEthereum ? 'ethereum' : ADDRESS_PREFIX)) || (prefix === SEED_PREFIX); + let prefix: string, content: string, genesisHash: string, name: string[]; - assert(isValidPrefix, `Invalid prefix received, expected '${ADDRESS_PREFIX}/${SEED_PREFIX}' , found '${prefix}'`); + if (!isEthereum) { + [prefix, content, genesisHash, ...name] = data.split(':'); + } else { + [prefix, content, ...name] = data.split(':'); + genesisHash = ''; + content = content.substring(0, 42); + } - const isAddress = prefix === ADDRESS_PREFIX; + const expectedPrefix = (isEthereum ? 'ethereum' : ADDRESS_PREFIX); + const isValidPrefix = (prefix === expectedPrefix) || (prefix === SEED_PREFIX); - if (isAddress) { + assert(isValidPrefix, `Invalid prefix received, expected '${expectedPrefix} or ${SEED_PREFIX}' , found '${prefix}'`); + + const isAddress = prefix === expectedPrefix; + + if (isAddress && !isEthereum) { decodeAddress(content); }