Perform inner inspect on Luukup types (Label & Component) (#7901)
This commit is contained in:
parent
7b108bdf8b
commit
0e51d20aff
@ -149,31 +149,24 @@ export default function findComponent (registry: Registry, def: TypeDef, overrid
|
||||
let Component = findOne(def.lookupName) || findOne(type);
|
||||
|
||||
if (!Component) {
|
||||
let error: string | null = null;
|
||||
|
||||
try {
|
||||
const instance = registry.createType(type as 'u32');
|
||||
const raw = getTypeDef(instance.toRawType());
|
||||
|
||||
Component = findOne(raw.lookupName || raw.type);
|
||||
Component = findOne(raw.lookupName || raw.type) || findOne(fromDef(raw));
|
||||
|
||||
if (Component) {
|
||||
return Component;
|
||||
} else if (isBn(instance)) {
|
||||
return Amount;
|
||||
} else if ([TypeDefInfo.Enum, TypeDefInfo.Struct, TypeDefInfo.Tuple, TypeDefInfo.Vec].includes(raw.info)) {
|
||||
return findComponent(registry, raw, overrides);
|
||||
} else if (raw.info === TypeDefInfo.VecFixed && (raw.sub as TypeDef).type !== 'u8') {
|
||||
return findComponent(registry, raw, overrides);
|
||||
}
|
||||
} catch (e) {
|
||||
error = (e as Error).message;
|
||||
console.error(`params: findComponent: ${(e as Error).message}`);
|
||||
}
|
||||
|
||||
// we only want to want once, not spam
|
||||
if (!warnList.includes(type)) {
|
||||
warnList.push(type);
|
||||
error && console.error(`params: findComponent: ${error}`);
|
||||
console.info(`params: findComponent: No pre-defined component for type ${type} from ${TypeDefInfo[def.info]}: ${JSON.stringify(def)}`);
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import type { Props } from '../types';
|
||||
|
||||
import React, { useMemo } from 'react';
|
||||
|
||||
import { getTypeDef } from '@polkadot/types';
|
||||
import { encodeTypeDef } from '@polkadot/types/create';
|
||||
import { isUndefined } from '@polkadot/util';
|
||||
|
||||
@ -30,7 +31,14 @@ function Param ({ className = '', defaultValue, isDisabled, isInOption, isOption
|
||||
|
||||
const label = useMemo(
|
||||
(): string => {
|
||||
const fmtType = formatJSON(`${isDisabled && isInOption ? 'Option<' : ''}${encodeTypeDef(registry, type)}${isDisabled && isInOption ? '>' : ''}`);
|
||||
const inner = encodeTypeDef(
|
||||
registry,
|
||||
// if our type is a Lookup, try and unwrap again
|
||||
registry.isLookupType(type.lookupName || type.type)
|
||||
? getTypeDef(registry.createType(type.type).toRawType())
|
||||
: type
|
||||
);
|
||||
const fmtType = formatJSON(`${isDisabled && isInOption ? 'Option<' : ''}${inner}${isDisabled && isInOption ? '>' : ''}`);
|
||||
|
||||
return `${isUndefined(name) ? '' : `${name}: `}${fmtType}${type.typeName && !fmtType.includes(type.typeName) ? ` (${type.typeName})` : ''}`;
|
||||
},
|
||||
|
||||
Loading…
Reference in New Issue
Block a user