From be95356999c3c885dfa2ecc54cf678a47f007d77 Mon Sep 17 00:00:00 2001 From: Jaco Date: Fri, 21 Oct 2022 10:23:54 +0300 Subject: [PATCH] Ensure apiAt.
..key(...) passes through the correct arguments (#5283) --- CHANGELOG.md | 2 ++ packages/api/src/base/Decorate.ts | 6 +----- .../src/metadata/decorate/storage/createFunction.ts | 10 +++++----- .../types/src/metadata/decorate/storage/index.spec.ts | 4 ++++ 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3543667cd2..b7bae42601 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ Changes: - Cater for latest Substrate `DispatchError` (additional preimage statuses) - Adjust `api.derive.democracy.*` to return `imageHash` as `HexString` (as applicable, supports current-gen preimages) +- Ensure `apiAt.
..key(...)` passes through the correct arguments +- Apply fallback for Weight downgrades (V2 >> V1 detection) - Update to latest Substrate metadata - Polkadot 9291 & Westend 9300 upgrade blocks diff --git a/packages/api/src/base/Decorate.ts b/packages/api/src/base/Decorate.ts index 3c7a4c3e4e..f3a35079d3 100644 --- a/packages/api/src/base/Decorate.ts +++ b/packages/api/src/base/Decorate.ts @@ -791,11 +791,7 @@ export abstract class Decorate extends Events { key.method === creator.method; decorated.key = (...args: unknown[]): string => - u8aToHex(compactStripLength(creator( - creator.meta.type.isPlain - ? undefined - : args - ))[1]); + u8aToHex(compactStripLength(creator(...args))[1]); decorated.keyPrefix = (...keys: unknown[]): string => u8aToHex(creator.keyPrefix(...keys)); diff --git a/packages/types/src/metadata/decorate/storage/createFunction.ts b/packages/types/src/metadata/decorate/storage/createFunction.ts index efa972c1c9..9c5f190518 100644 --- a/packages/types/src/metadata/decorate/storage/createFunction.ts +++ b/packages/types/src/metadata/decorate/storage/createFunction.ts @@ -46,6 +46,11 @@ export const NO_RAW_ARGS: RawArgs = { keys: [] }; +/** @internal */ +function filterDefined (a: unknown): boolean { + return !isUndefined(a); +} + /** @internal */ function assertArgs ({ method, section }: CreateItemFn, { args, keys }: RawArgs): void { if (!Array.isArray(args)) { @@ -112,11 +117,6 @@ export function createKeyRaw (registry: Registry, itemFn: CreateItemBase, args: ); } -/** @internal */ -function filterDefined (a: unknown): boolean { - return !isUndefined(a); -} - /** @internal */ function createKey (registry: Registry, itemFn: CreateItemFn, args: RawArgs): Uint8Array { assertArgs(itemFn, args); diff --git a/packages/types/src/metadata/decorate/storage/index.spec.ts b/packages/types/src/metadata/decorate/storage/index.spec.ts index 479d6e5703..7fed6a7710 100644 --- a/packages/types/src/metadata/decorate/storage/index.spec.ts +++ b/packages/types/src/metadata/decorate/storage/index.spec.ts @@ -36,6 +36,10 @@ describe('decorateStorage', (): void => { expect(() => query.timestamp.now()).not.toThrow(); }); + it('should return a value if the storage function has the correct arguments', (): void => { + expect(() => query.staking.erasStakers(1, keyring.alice.address)).not.toThrow(); + }); + it('should return the correct length-prefixed storage key', (): void => { expect( u8aToHex(query.system.account(keyring.alice.address))