Skip to content

Commit

Permalink
Merge pull request #163 from topmonks/runtime-metadata-refactoring
Browse files Browse the repository at this point in the history
runtime metadata refactoring
  • Loading branch information
uiii committed Oct 3, 2023
2 parents cad7c51 + 3c62d19 commit b8c3807
Show file tree
Hide file tree
Showing 46 changed files with 617 additions and 458 deletions.
48 changes: 38 additions & 10 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
"date-fns-tz": "^2.0.0",
"decimal.js": "^10.4.3",
"deepmerge": "^4.3.1",
"dexie": "^3.2.4",
"echarts": "^5.4.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
Expand Down
2 changes: 1 addition & 1 deletion scripts/update-networks/sources/runtime-spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Metadata, TypeRegistry } from "@polkadot/types";

import { getRuntimeSpec } from "../../../src/services/runtimeService";
import { getRuntimeSpec } from "../../../src/services/runtimeSpecService";

import { Network, SourceData, SourceType } from "../model";
import { log } from "../utils/log";
Expand Down
12 changes: 2 additions & 10 deletions src/components/DataViewer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import { config } from "../config";

import { DecodedArg } from "../model/decodedMetadata";
import { Network } from "../model/network";
import { RuntimeSpec } from "../model/runtimeSpec";

import CopyToClipboardButton from "./CopyToClipboardButton";
import { DataViewerValueJson } from "./DataViewerValueJson";
Expand Down Expand Up @@ -207,28 +206,22 @@ export type DataViewerProps = {
network: Network;
data: any;
metadata?: DecodedArg[];
runtimeSpec?: RuntimeSpec;
modes?: DataViewerMode[];
defaultMode?: DataViewerMode;
simple?: boolean;
copyToClipboard?: boolean;
};

function DataViewer(props: DataViewerProps) {
export const DataViewer = (props: DataViewerProps) => {
const {
network,
data,
metadata,
runtimeSpec,
defaultMode = MODES.find(Boolean),
simple,
copyToClipboard,
} = props;

if (metadata && !runtimeSpec) {
console.warn("If <DataViewer> is used with metadata argument, runtimeSpec argument should be passed too.");
}

const [mode, setMode] = useState<DataViewerMode>(defaultMode || MODES.find(Boolean) as DataViewerMode);

console.log("render");
Expand All @@ -250,7 +243,6 @@ function DataViewer(props: DataViewerProps) {
network={network}
value={data}
metadata={metadata}
runtimeSpec={runtimeSpec}
/>
), [data]);

Expand Down Expand Up @@ -289,6 +281,6 @@ function DataViewer(props: DataViewerProps) {
</div>
</div>
);
}
};

export default DataViewer;
18 changes: 3 additions & 15 deletions src/components/DataViewerValueParsed.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import { DecodedArg } from "../model/decodedMetadata";
import { noCase } from "../utils/string";

import { AccountAddress } from "./AccountAddress";
import { RuntimeSpec } from "../model/runtimeSpec";
import { Network } from "../model/network";

// found in https://github.com/polkadot-js/apps/blob/59c2badf87c29fd8cb5b7dfcc045c3ce451a54bc/packages/react-params/src/Param/findComponent.ts#L51
Expand Down Expand Up @@ -79,15 +78,13 @@ type ValueOfKindProps = {
value: any;
};
valueMetadata?: DecodedArg;
runtimeSpec?: RuntimeSpec;
}

const ValueOfKind = (props: ValueOfKindProps) => {
const {
network,
value: {__kind: kind, ...value},
valueMetadata: metadata,
runtimeSpec
} = props;

return (
Expand All @@ -102,7 +99,6 @@ const ValueOfKind = (props: ValueOfKindProps) => {
network={network}
value={value.value || value}
metadata={metadata}
runtimeSpec={runtimeSpec}
/>
</TableCell>
</TableRow>
Expand All @@ -115,11 +111,10 @@ type MaybeAccountLinkValueProps = {
network: Network;
value: any;
valueMetadata: DecodedArg;
runtimeSpec: RuntimeSpec;
}

const AccountValue = (props: MaybeAccountLinkValueProps) => {
const {network, value, valueMetadata, runtimeSpec} = props;
const {network, value, valueMetadata} = props;

if (typeof value === "object") {
if (ADDRESS_KINDS.includes(value.__kind)) {
Expand All @@ -130,15 +125,13 @@ const AccountValue = (props: MaybeAccountLinkValueProps) => {
...valueMetadata,
type: "AccountId"
}}
runtimeSpec={runtimeSpec}
/>;
}

return (
<DataViewerValueParsed
network={network}
value={value}
runtimeSpec={runtimeSpec}
/>
);
}
Expand All @@ -158,20 +151,18 @@ export type DataViewerValueParsedProps = {
network: Network;
value: any;
metadata?: DecodedArg[]|DecodedArg;
runtimeSpec?: RuntimeSpec;
};

export const DataViewerValueParsed = (props: DataViewerValueParsedProps) => {
const { network, metadata, runtimeSpec } = props;
const { network, metadata } = props;
let { value } = props;

if (metadata && runtimeSpec && ADDRESS_TYPES.includes((metadata as DecodedArg).type)) {
if (metadata && ADDRESS_TYPES.includes((metadata as DecodedArg).type)) {
return (
<AccountValue
network={network}
value={value}
valueMetadata={metadata as DecodedArg}
runtimeSpec={runtimeSpec}
/>
);
}
Expand Down Expand Up @@ -206,7 +197,6 @@ export const DataViewerValueParsed = (props: DataViewerValueParsedProps) => {
network={network}
value={item}
metadata={itemsMetadata[index]}
runtimeSpec={runtimeSpec}
/>
</TableCell>
</TableRow>
Expand All @@ -222,7 +212,6 @@ export const DataViewerValueParsed = (props: DataViewerValueParsedProps) => {
<ValueOfKind
network={network}
value={value}
runtimeSpec={runtimeSpec}
/>
);
}
Expand All @@ -246,7 +235,6 @@ export const DataViewerValueParsed = (props: DataViewerValueParsedProps) => {
? metadata?.find(it => noCase(it.name) === noCase(key))
: undefined
}
runtimeSpec={runtimeSpec}
/>
</TableCell>
</TableRow>
Expand Down
10 changes: 1 addition & 9 deletions src/components/calls/CallInfoTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import { Network } from "../../model/network";
import { Resource } from "../../model/resource";

import { encodeAddress } from "../../utils/formatAddress";
import { getCallMetadataByName } from "../../utils/queryMetadata";

import { AccountAddress } from "../AccountAddress";
import { ButtonLink } from "../ButtonLink";
Expand Down Expand Up @@ -116,14 +115,7 @@ export const CallInfoTable = (props: CallInfoTableProps) => {
<DataViewer
network={network}
data={data.args}
metadata={
getCallMetadataByName(
data.runtimeSpec.metadata,
data.palletName,
data.callName
)?.args
}
runtimeSpec={data.runtimeSpec}
metadata={data.metadata.call?.args}
copyToClipboard
/>
}
Expand Down
4 changes: 1 addition & 3 deletions src/components/events/EventInfoTable.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { Event } from "../../model/event";
import { Network } from "../../model/network";
import { Resource } from "../../model/resource";
import { getEventMetadataByName } from "../../utils/queryMetadata";

import { ButtonLink } from "../ButtonLink";
import DataViewer from "../DataViewer";
Expand Down Expand Up @@ -90,8 +89,7 @@ export const EventInfoTable = (props: EventInfoTableProps) => {
<DataViewer
network={network}
data={data.args}
metadata={getEventMetadataByName(data.runtimeSpec.metadata, data.palletName, data.eventName)?.args}
runtimeSpec={data.runtimeSpec}
metadata={data.metadata.event?.args}
copyToClipboard
/>
}
Expand Down
9 changes: 1 addition & 8 deletions src/components/events/EventsTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ import { Event } from "../../model/event";
import { Network } from "../../model/network";
import { PaginatedResource } from "../../model/paginatedResource";

import { getEventMetadataByName } from "../../utils/queryMetadata";

import { ButtonLink } from "../ButtonLink";
import DataViewer from "../DataViewer";
import { ItemsTable, ItemsTableAttribute } from "../ItemsTable";
Expand Down Expand Up @@ -79,12 +77,7 @@ function EventsTable(props: EventsTableProps) {
<DataViewer
network={network}
data={event.args}
metadata={getEventMetadataByName(
event.runtimeSpec.metadata,
event.palletName,
event.eventName
)?.args}
runtimeSpec={event.runtimeSpec}
metadata={event.metadata.event?.args}
copyToClipboard
/>
);
Expand Down
5 changes: 1 addition & 4 deletions src/components/extrinsics/ExtrinsicInfoTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import { Network } from "../../model/network";
import { Resource } from "../../model/resource";

import { encodeAddress } from "../../utils/formatAddress";
import { getCallMetadataByName } from "../../utils/queryMetadata";

import { AccountAddress } from "../AccountAddress";
import { ButtonLink } from "../ButtonLink";
Expand Down Expand Up @@ -102,8 +101,7 @@ export const ExtrinsicInfoTable = (props: ExtrinsicInfoTableProps) => {
<DataViewer
network={network}
data={data.args}
metadata={getCallMetadataByName(data.runtimeSpec.metadata, data.palletName, data.callName)?.args}
runtimeSpec={data.runtimeSpec}
metadata={data.metadata.call?.args}
copyToClipboard
/>
}
Expand All @@ -125,7 +123,6 @@ export const ExtrinsicInfoTable = (props: ExtrinsicInfoTableProps) => {
simple
network={network}
data={data.signature}
runtimeSpec={data.runtimeSpec}
copyToClipboard
/>
}
Expand Down
4 changes: 2 additions & 2 deletions src/components/extrinsics/ExtrinsicsTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ function ExtrinsicsTable(props: ExtrinsicsTableProps) {
<ExtrinsicsTableAttribute
label="ID"
render={(extrinsic) =>
<Link to={`/${network}/extrinsic/${extrinsic.id}`}>
<Link to={`/${network.name}/extrinsic/${extrinsic.id}`}>
{extrinsic.id}
</Link>
}
Expand All @@ -47,7 +47,7 @@ function ExtrinsicsTable(props: ExtrinsicsTableProps) {
label="Name"
render={(extrinsic) =>
<ButtonLink
to={`/${network}/search?query=${extrinsic.palletName}.${extrinsic.callName}`}
to={`/${network.name}/search?query=${extrinsic.palletName}.${extrinsic.callName}`}
size="small"
color="secondary"
>
Expand Down
Loading

0 comments on commit b8c3807

Please sign in to comment.