From 0312e078fcb3842944c4c852ab07677f8a63e3ae Mon Sep 17 00:00:00 2001 From: Daria Mikhailova Date: Mon, 30 Sep 2024 13:08:14 +0800 Subject: [PATCH] try/catch block to not crash explorer if account id format does not fit --- packages/react-components/src/AccountName.tsx | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/packages/react-components/src/AccountName.tsx b/packages/react-components/src/AccountName.tsx index b54fd0520f1d..00778444eaf3 100644 --- a/packages/react-components/src/AccountName.tsx +++ b/packages/react-components/src/AccountName.tsx @@ -47,13 +47,19 @@ function createNumMatcher (prefix: string, name: string, add?: string): AddrMatc const minLength = test.length + 4; return (addr: unknown): string | null => { - const u8a = isCodec(addr) - ? addr.toU8a() - : statics.registry.createType('AccountId', addr as string).toU8a(); - - return (u8a.length >= minLength) && u8aEq(test, u8a.subarray(0, test.length)) && u8aEmpty(u8a.subarray(minLength)) - ? `${name} ${formatNumber(u8aToBn(u8a.subarray(test.length, minLength)))}${add ? ` (${add})` : ''}` - : null; + try { + const u8a = isCodec(addr) + ? addr.toU8a() + : statics.registry.createType('AccountId', addr as string).toU8a(); + + return (u8a.length >= minLength) && u8aEq(test, u8a.subarray(0, test.length)) && u8aEmpty(u8a.subarray(minLength)) + ? `${name} ${formatNumber(u8aToBn(u8a.subarray(test.length, minLength)))}${add ? ` (${add})` : ''}` + : null; + } catch (e) { + console.log(e); + + return null; + } }; } @@ -97,7 +103,7 @@ function defaultOrAddr (defaultName = '', _address: AccountId | AccountIndex | A return [defaultName, false, false, false]; } - const [isAddressExtracted,, extracted] = getAddressName(accountId, null, defaultName); + const [isAddressExtracted, , extracted] = getAddressName(accountId, null, defaultName); const accountIndex = (_accountIndex || '').toString() || indexCache.get(accountId); if (isAddressExtracted && accountIndex) { @@ -110,7 +116,7 @@ function defaultOrAddr (defaultName = '', _address: AccountId | AccountIndex | A } function defaultOrAddrNode (defaultName = '', address: AccountId | AccountIndex | Address | string | Uint8Array, accountIndex?: AccountIndex | null): React.ReactNode { - const [node,, isAddress] = defaultOrAddr(defaultName, address, accountIndex); + const [node, , isAddress] = defaultOrAddr(defaultName, address, accountIndex); return isAddress ? {node}