diff --git a/apps/governance/src/routes/proposals/components/proposal-terms/proposal-terms.tsx b/apps/governance/src/routes/proposals/components/proposal-terms/proposal-terms.tsx index d40d011fa..232cde5b8 100644 --- a/apps/governance/src/routes/proposals/components/proposal-terms/proposal-terms.tsx +++ b/apps/governance/src/routes/proposals/components/proposal-terms/proposal-terms.tsx @@ -33,22 +33,28 @@ const getParsedValue = (value: unknown) => { } }; -const renderKeyValue = (key: string, value: string | number) => ( +const RenderKeyValue = ({ + title, + value, +}: { + title: string; + value: string | number; +}) => ( - {key} + {title} {value} ); -const renderArray = (key: string, array: unknown[]) => { +const RenderArray = ({ title, array }: { title: string; array: unknown[] }) => { if (array.every((item) => typeof item === 'string')) { - return renderKeyValue(key, array.join(', ')); + return ; } else { return (
-
{key}
+
{title}
{array.map((item, index) => (
} /> @@ -60,31 +66,33 @@ const renderArray = (key: string, array: unknown[]) => { }; // Working with 'unknown' type as a proposal's terms can be in many shapes -const renderTerm = (key: string, value: unknown) => { +const RenderTerm = ({ title, value }: { title: string; value: unknown }) => { const parsedValue = getParsedValue(value); if (parsedValue === null || typeof parsedValue === 'boolean') { - return renderKeyValue(key, String(parsedValue)); + return ; } else if ( typeof parsedValue === 'string' || typeof parsedValue === 'number' ) { - return renderKeyValue(key, parsedValue); + return ; } else if (typeof parsedValue === 'object') { if (Array.isArray(parsedValue)) { - return renderArray(key, parsedValue); + return ; } else { return (
-
{key}
+
{title}
} />
); } + } else if (parsedValue === undefined) { + return {'undefined'}; } else { - return JSON.stringify(parsedValue); + return {String(parsedValue)}; } }; @@ -99,7 +107,9 @@ const ProposalTermsRenderer = ({ data }: ProposalTermsProps) => { ) ) .map((key, index) => ( -
{renderTerm(key, data[key])}
+
+ +
))} );