From cce56c0e7efe3fced5d2e7a0fe05e224b011314a Mon Sep 17 00:00:00 2001 From: Robert Gabriel Jakabosky Date: Tue, 21 Mar 2023 21:35:08 +0800 Subject: [PATCH] Support BTreeSet. (#9206) * Support BTreeSet. * Fix style. --- packages/react-params/src/Param/Vector.tsx | 7 ++++++- packages/react-params/src/Param/findComponent.ts | 5 ++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/react-params/src/Param/Vector.tsx b/packages/react-params/src/Param/Vector.tsx index 966cd0c205..a66f348073 100644 --- a/packages/react-params/src/Param/Vector.tsx +++ b/packages/react-params/src/Param/Vector.tsx @@ -22,7 +22,8 @@ function getParam ([{ name, type }]: ParamDef[], index: number): ParamDef { } export function getParams (inputParams: ParamDef[], prev: ParamDef[], max: number): ParamDef[] { - if (prev.length === max) { + // HACK: I don't know why `max` changes to `undefined`. + if (prev.length === max || isUndefined(max)) { return prev; } @@ -36,6 +37,10 @@ export function getParams (inputParams: ParamDef[], prev: ParamDef[], max: numbe } export function getValues ({ value }: RawParam): RawParam[] { + if (value instanceof Set) { + value = [...value.values()]; + } + return Array.isArray(value) ? value.map((value: RawParam) => isUndefined(value) || isUndefined(value.isValid) diff --git a/packages/react-params/src/Param/findComponent.ts b/packages/react-params/src/Param/findComponent.ts index fd4e774459..dedd8c929b 100644 --- a/packages/react-params/src/Param/findComponent.ts +++ b/packages/react-params/src/Param/findComponent.ts @@ -74,7 +74,7 @@ const componentDef: TypeToComponent[] = [ { c: Text, t: ['String', 'Text'] }, { c: Struct, t: ['Struct'] }, { c: Tuple, t: ['Tuple'] }, - { c: Vector, t: ['Vec'] }, + { c: Vector, t: ['Vec', 'BTreeSet'] }, { c: VectorFixed, t: ['VecFixed'] }, { c: Vote, t: ['Vote'] }, { c: VoteThreshold, t: ['VoteThreshold'] }, @@ -121,6 +121,9 @@ function fromDef ({ displayName, info, lookupName, sub, type }: TypeDef): string case TypeDefInfo.Struct: return 'Struct'; + case TypeDefInfo.BTreeSet: + return 'BTreeSet'; + case TypeDefInfo.Tuple: return components[type] === Account ? type