diff --git a/packages/extension-base/src/background/handlers/Extension.ts b/packages/extension-base/src/background/handlers/Extension.ts index ca861e43..9e4cb64f 100644 --- a/packages/extension-base/src/background/handlers/Extension.ts +++ b/packages/extension-base/src/background/handlers/Extension.ts @@ -409,14 +409,14 @@ export default class Extension { return true; } - private signingApproveSignature ({ id, signature }: RequestSigningApproveSignature): boolean { + private signingApproveSignature ({ id, signature, signedTransaction }: RequestSigningApproveSignature): boolean { const queued = this.#state.getSignRequest(id); assert(queued, 'Unable to find request'); const { resolve } = queued; - resolve({ id, signature }); + resolve({ id, signature, signedTransaction }); return true; } diff --git a/packages/extension-base/src/background/types.ts b/packages/extension-base/src/background/types.ts index a0c07547..a1467fa4 100644 --- a/packages/extension-base/src/background/types.ts +++ b/packages/extension-base/src/background/types.ts @@ -299,6 +299,7 @@ export interface RequestSigningApprovePassword { export interface RequestSigningApproveSignature { id: string; signature: HexString; + signedTransaction?: HexString; } export interface RequestSigningCancel { @@ -358,6 +359,7 @@ export type TransportResponseMessage = export interface ResponseSigning { id: string; signature: HexString; + signedTransaction?: HexString; } export interface ResponseDeriveValidate { diff --git a/packages/extension-chains/src/bundle.ts b/packages/extension-chains/src/bundle.ts index 241bd8a5..6c020708 100644 --- a/packages/extension-chains/src/bundle.ts +++ b/packages/extension-chains/src/bundle.ts @@ -26,7 +26,7 @@ export function metadataExpand (definition: MetadataDef, isPartial = false): Cha return cached; } - const { chain, genesisHash, icon, metaCalls, specVersion, ss58Format, tokenDecimals, tokenSymbol, types, userExtensions } = definition; + const { chain, genesisHash, icon, metaCalls, rawMetadata, specVersion, ss58Format, tokenDecimals, tokenSymbol, types, userExtensions } = definition; const registry = new TypeRegistry(); if (!isPartial) { @@ -41,8 +41,8 @@ export function metadataExpand (definition: MetadataDef, isPartial = false): Cha const hasMetadata = !!metaCalls && !isPartial; - if (hasMetadata) { - registry.setMetadata(new Metadata(registry, base64Decode(metaCalls)), undefined, userExtensions); + if (hasMetadata || !!rawMetadata) { + registry.setMetadata(new Metadata(registry, hasMetadata ? base64Decode(metaCalls) : rawMetadata), undefined, userExtensions); } const isUnknown = genesisHash === '0x'; diff --git a/packages/extension-inject/src/types.ts b/packages/extension-inject/src/types.ts index 0262eec8..3fc0302b 100644 --- a/packages/extension-inject/src/types.ts +++ b/packages/extension-inject/src/types.ts @@ -66,6 +66,7 @@ export interface MetadataDef extends MetadataDefBase { tokenSymbol: string; types: Record | string>; metaCalls?: string; + rawMetadata?: HexString; userExtensions?: ExtDef; } diff --git a/packages/extension-ui/package.json b/packages/extension-ui/package.json index 08a53879..09c16d2c 100644 --- a/packages/extension-ui/package.json +++ b/packages/extension-ui/package.json @@ -23,6 +23,7 @@ "@fortawesome/free-solid-svg-icons": "^6.5.1", "@fortawesome/react-fontawesome": "^0.2.0", "@paraspell/xcm-analyser": "^1.3.0", + "@polkadot-api/merkleize-metadata": "^1.1.0", "@polkadot/api": "^12.2.1", "@polkadot/extension-base": "0.49.4-0-x", "@polkadot/extension-chains": "0.49.4-0-x", diff --git a/packages/extension-ui/src/Popup/Metadata/Request.tsx b/packages/extension-ui/src/Popup/Metadata/Request.tsx index 7079eaa6..eb29ac3f 100644 --- a/packages/extension-ui/src/Popup/Metadata/Request.tsx +++ b/packages/extension-ui/src/Popup/Metadata/Request.tsx @@ -70,7 +70,7 @@ function Request ({ className, metaId, request, url }: Props): React.ReactElemen
- {t('This approval will add the metadata to your extension instance, allowing future requests to be decoded using this metadata.')} + {t('This approval will add the metadata to your extension instance, allowing future requests to be decoded using this metadata. It will also allow the use of Ledger\'s Generic Polkadot App.')}