Skip to content

Commit

Permalink
Add additional types for offchain Phragmen (#2097)
Browse files Browse the repository at this point in the history
* Add additional types for offchain Phragmen

* Trim down metadata toCallsOnly
  • Loading branch information
jacogr committed Mar 26, 2020
1 parent 0906c78 commit a19928f
Show file tree
Hide file tree
Showing 6 changed files with 335 additions and 15 deletions.
24 changes: 20 additions & 4 deletions packages/metadata/src/Metadata/util/toCallsOnly.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,32 @@
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.

import { MetadataLatest } from '@polkadot/types/interfaces/metadata';
import { FunctionMetadataLatest, MetadataLatest } from '@polkadot/types/interfaces/metadata';
import { AnyJson, Registry } from '@polkadot/types/types';

import { Option, Text, Vec } from '@polkadot/types';

interface ModuleMetadataCallsOnly {
name: Text;
calls: FunctionMetadataLatest[];
}

function mapCalls (registry: Registry, calls: Option<Vec<FunctionMetadataLatest>>): FunctionMetadataLatest[] {
return calls.unwrapOr([] as FunctionMetadataLatest[]).map(({ args, documentation, name }) =>
registry.createType('FunctionMetadataLatest', {
args,
name,
documentation: documentation.map((doc) => doc.toString().trim())
})
);
}

/** @internal */
export default function toCallsOnly (registry: Registry, { extrinsic, modules }: MetadataLatest): AnyJson {
return registry.createType('MetadataLatest', {
// FIXME, this needs typing, not any
modules: modules.map(({ calls, name }): any => ({
modules: modules.map(({ calls, name }): ModuleMetadataCallsOnly => ({
name,
calls
calls: mapCalls(registry, calls)
})),
extrinsic
}).toJSON();
Expand Down
Loading

0 comments on commit a19928f

Please sign in to comment.