diff --git a/package.json b/package.json index 7e27c0c9..b455bb0e 100644 --- a/package.json +++ b/package.json @@ -8,10 +8,10 @@ "packages/*" ], "resolutions": { - "@polkadot/api": "^2.8.2-3", + "@polkadot/api": "^2.8.3-2", "@polkadot/keyring": "^4.2.1", "@polkadot/networks": "^4.2.1", - "@polkadot/types": "^2.8.2-3", + "@polkadot/types": "^2.8.3-2", "@polkadot/util": "^4.2.1", "@polkadot/util-crypto": "^4.2.1", "babel-core": "^7.0.0-bridge.0", diff --git a/packages/extension-base/package.json b/packages/extension-base/package.json index 4f613b86..1b2d446f 100644 --- a/packages/extension-base/package.json +++ b/packages/extension-base/package.json @@ -8,7 +8,7 @@ "sideEffects": false, "dependencies": { "@babel/runtime": "^7.12.5", - "@polkadot/api": "^2.8.2-3", + "@polkadot/api": "^2.8.3-2", "@polkadot/extension-inject": "^0.35.0-beta.56", "@polkadot/keyring": "^4.2.1", "@polkadot/ui-keyring": "^0.62.2-15" diff --git a/packages/extension-chains/src/index.ts b/packages/extension-chains/src/index.ts index cee59a1c..f35d3068 100644 --- a/packages/extension-chains/src/index.ts +++ b/packages/extension-chains/src/index.ts @@ -31,24 +31,26 @@ export function metadataExpand (definition: MetadataDef, isPartial = false): Cha registry.register(types); } - const isUnknown = genesisHash === '0x'; - registry.setChainProperties(registry.createType('ChainProperties', { ss58Format, tokenDecimals, tokenSymbol })); - const metadata = metaCalls && !isPartial - ? new Metadata(registry, Buffer.from(metaCalls, 'base64')) - : null; + const isUnknown = genesisHash === '0x'; + let hasMetadata = false; + + if (metaCalls && !isPartial) { + hasMetadata = true; + registry.setMetadata(new Metadata(registry, Buffer.from(metaCalls, 'base64'))); + } const result = { definition, genesisHash: isUnknown ? undefined : genesisHash, - hasMetadata: !!metadata, + hasMetadata, icon: icon || 'substrate', isUnknown, name: chain, diff --git a/packages/extension-ui/src/Popup/Signing/Extrinsic.tsx b/packages/extension-ui/src/Popup/Signing/Extrinsic.tsx index a7ffd9b9..070770c6 100644 --- a/packages/extension-ui/src/Popup/Signing/Extrinsic.tsx +++ b/packages/extension-ui/src/Popup/Signing/Extrinsic.tsx @@ -21,22 +21,29 @@ interface Decoded { interface Props { className?: string; - isDecoded: boolean; payload: ExtrinsicPayload; request: SignerPayloadJSON; url: string; } -function decodeMethod (data: string, isDecoded: boolean, chain: Chain | null, specVersion: BN): Decoded { +function displayDecodeVersion (message: string, chain: Chain, specVersion: BN): string { + return `${message}: chain=${chain.name}, specVersion=${chain.specVersion.toString()} (request specVersion=${specVersion.toString()})`; +} + +function decodeMethod (data: string, chain: Chain, specVersion: BN): Decoded { let args: AnyJson | null = null; let method: Call | null = null; try { - if (isDecoded && chain && chain.hasMetadata && specVersion.eqn(chain.specVersion)) { + if (specVersion.eqn(chain.specVersion)) { method = chain.registry.createType('Call', data); args = (method.toHuman() as { args: AnyJson }).args; + } else { + console.log(displayDecodeVersion('Outdated metadata to decode', chain, specVersion)); } } catch (error) { + console.error(`${displayDecodeVersion('Error decoding method', chain, specVersion)}:: ${(error as Error).message}`); + args = null; method = null; } @@ -99,14 +106,16 @@ function mortalityAsString (era: ExtrinsicEra, hexBlockNumber: string, t: TFunct }); } -function Extrinsic ({ className, isDecoded, payload: { era, nonce, tip }, request: { blockNumber, genesisHash, method, specVersion: hexSpec }, url }: Props): React.ReactElement { +function Extrinsic ({ className, payload: { era, nonce, tip }, request: { blockNumber, genesisHash, method, specVersion: hexSpec }, url }: Props): React.ReactElement { const { t } = useTranslation(); const chain = useMetadata(genesisHash); const specVersion = useRef(bnToBn(hexSpec)).current; const decoded = useMemo( - () => decodeMethod(method, isDecoded, chain, specVersion), - [method, isDecoded, chain, specVersion] + () => chain && chain.hasMetadata + ? decodeMethod(method, chain, specVersion) + : { args: null, method: null }, + [method, chain, specVersion] ); return ( @@ -138,7 +147,7 @@ function Extrinsic ({ className, isDecoded, payload: { era, nonce, tip }, reques )} {renderMethod(method, decoded, t)} - lifetime + {t('lifetime')} {mortalityAsString(era, blockNumber, t)} diff --git a/packages/extension-ui/src/Popup/Signing/Request/index.tsx b/packages/extension-ui/src/Popup/Signing/Request/index.tsx index 46d549dd..0f32e479 100644 --- a/packages/extension-ui/src/Popup/Signing/Request/index.tsx +++ b/packages/extension-ui/src/Popup/Signing/Request/index.tsx @@ -92,7 +92,6 @@ export default function Request ({ account: { isExternal }, buttonText, isFirst, ) : (