diff --git a/packages/api/src/base/Init.ts b/packages/api/src/base/Init.ts index ab8beac3e0..25cf509f08 100644 --- a/packages/api/src/base/Init.ts +++ b/packages/api/src/base/Init.ts @@ -18,8 +18,8 @@ import { cryptoWaitReady } from '@polkadot/util-crypto'; import { of } from '@polkadot/x-rxjs'; import { map, switchMap } from '@polkadot/x-rxjs/operators'; +import { detectedCapabilities } from './capabilities'; import { Decorate } from './Decorate'; -import { detectedCapabilities } from './util'; const KEEPALIVE_INTERVAL = 15000; const DEFAULT_BLOCKNUMBER = { unwrap: () => BN_ZERO }; diff --git a/packages/api/src/base/util.ts b/packages/api/src/base/capabilities.ts similarity index 91% rename from packages/api/src/base/util.ts rename to packages/api/src/base/capabilities.ts index 452364e301..45ba4b1b7e 100644 --- a/packages/api/src/base/util.ts +++ b/packages/api/src/base/capabilities.ts @@ -144,22 +144,26 @@ export function detectedCapabilities (api: ApiInterfaceRx, blockHash?: Uint8Arra api.query.system?.upgradedToTripleRefCount, api.query.staking?.storageVersion ]); - const keyed = filterEntries([ + const raws = filterEntries([ api.query.session?.queuedKeys ]); return combineLatest([ - // FIXME consts don't have .at as of yet... - of(extractResults(consts.original, consts)), + consts.filtered.length + ? blockHash + // FIXME consts don't have .at as of yet... + ? of([]) + : of(consts.filtered) + : of([]), queries.filtered.length ? blockHash ? combineLatest(queries.filtered.map((c) => c.at(blockHash))) : api.queryMulti(queries.filtered) : of([]), - keyed.filtered.length + raws.filtered.length ? blockHash - ? combineLatest(keyed.filtered.map((k) => api.rpc.state.getStorage.raw(k.key(), blockHash))) - : combineLatest(keyed.filtered.map((k) => api.rpc.state.getStorage.raw(k.key()))) + ? combineLatest(raws.filtered.map((k) => api.rpc.state.getStorage.raw(k.key(), blockHash))) + : combineLatest(raws.filtered.map((k) => api.rpc.state.getStorage.raw(k.key()))) : of([]) ]).pipe( map(([cResults, qResults, rResults]): Partial => @@ -167,9 +171,9 @@ export function detectedCapabilities (api: ApiInterfaceRx, blockHash?: Uint8Arra { accountIdLength: api.registry.createType('AccountId').encodedLength }, - cResults, + extractResults(cResults, consts), extractResults(qResults, queries), - extractResults(rResults, keyed) + extractResults(rResults, raws) ) ), take(1) diff --git a/packages/types-known/src/spec/westend.ts b/packages/types-known/src/spec/westend.ts index 793a970fba..899e62d263 100644 --- a/packages/types-known/src/spec/westend.ts +++ b/packages/types-known/src/spec/westend.ts @@ -6,15 +6,10 @@ import type { OverrideVersionedType } from '@polkadot/types/types'; const sharedTypes = { - AccountInfo: 'AccountInfoWithDualRefCount', - Address: 'MultiAddress', Keys: 'SessionKeys7B', - LookupSource: 'MultiAddress', ProxyType: { - _enum: ['Any', 'NonTransfer', 'Staking', 'SudoBalances', 'IdentityJudgement', 'CancelProxy' - ] - }, - ValidatorPrefs: 'ValidatorPrefsWithBlocked' + _enum: ['Any', 'NonTransfer', 'Staking', 'SudoBalances', 'IdentityJudgement', 'CancelProxy'] + } }; const addrAccountIdTypes = { @@ -72,9 +67,17 @@ const versioned: OverrideVersionedType[] = [ ...addrAccountIdTypes } }, + { + minmax: [48, 49], + types: { + ...sharedTypes, + AccountInfo: 'AccountInfoWithDualRefCount', + Keys: 'SessionKeys6' + } + }, { // 50 was supposed to have Beefy, didn't - minmax: [48, 50], + minmax: [50, 50], types: { ...sharedTypes, Keys: 'SessionKeys6'