diff --git a/packages/website/src/features/Packages/Function.tsx b/packages/website/src/features/Packages/Function.tsx index 9706e227d..01f35632e 100644 --- a/packages/website/src/features/Packages/Function.tsx +++ b/packages/website/src/features/Packages/Function.tsx @@ -587,8 +587,8 @@ export const Function: FC<{ )} )} diff --git a/packages/website/src/features/Packages/FunctionOutput.tsx b/packages/website/src/features/Packages/FunctionOutput.tsx index 13817020a..887772ff2 100644 --- a/packages/website/src/features/Packages/FunctionOutput.tsx +++ b/packages/website/src/features/Packages/FunctionOutput.tsx @@ -6,67 +6,77 @@ import { InfoOutlineIcon } from '@chakra-ui/icons'; import { Tooltip } from '@chakra-ui/react'; import { formatEther } from 'viem'; -export const FunctionOutput: FC<{ - output: AbiParameter | readonly AbiParameter[]; - result: any; -}> = ({ output, result }) => { - const isArrayOutput = ( - value: AbiParameter | readonly AbiParameter[] - ): value is readonly AbiParameter[] => isArray(value); +const isArrayOutput = ( + value: AbiParameter | readonly AbiParameter[] +): value is readonly AbiParameter[] => isArray(value); - const hasComponents = ( - item: AbiParameter - ): item is AbiParameter & { components: readonly AbiParameter[] } => { - return 'components' in item && isArray(item.components); - }; +const hasComponentsKey = ( + item: AbiParameter +): item is AbiParameter & { components: readonly AbiParameter[] } => { + return 'components' in item && isArray(item.components); +}; - const ItemLabel: FC<{ name: string; type: string }> = ({ name, type }) => ( - - {name?.length ? ( - - {name} - - ) : ( - '' - )} - - {type} +const ItemLabel: FC<{ name: string; type: string }> = ({ name, type }) => ( + + {name?.length ? ( + + {name} - - ); + ) : ( + '' + )} + + {type} + + +); +export const FunctionOutput: FC<{ + abiParameters: AbiParameter | readonly AbiParameter[]; + methodResult: any; +}> = ({ abiParameters, methodResult }) => { const renderOutput = ( - item: AbiParameter, + abiParameter: AbiParameter, value: { [key: string]: any }, index?: number ) => { - if (item.type === 'tuple' && hasComponents(item) && value) { + if ( + abiParameter.type === 'tuple' && + hasComponentsKey(abiParameter) && + value + ) { return ( {Object.values(value).map((component: any, resIdx: number) => { return ( ); })} ); - } else if (item.type === 'tuple[]' && hasComponents(item) && value) { + } else if ( + abiParameter.type === 'tuple[]' && + hasComponentsKey(abiParameter) && + value + ) { return isArray(value) ? value.map((tupleItem, tupleIndex) => ( tuple[{tupleIndex}] - {item.components.map( + {abiParameter.components.map( (component: AbiParameter, compIdx: number) => ( ) )} @@ -74,8 +84,8 @@ export const FunctionOutput: FC<{ )) : null; } else { - if (isObject(value) && item.name && item.name in value) { - const outputValue = value[item.name]; + if (isObject(value) && abiParameter.name && abiParameter.name in value) { + const outputValue = value[abiParameter.name]; return ( ); } else if (isArray(value)) { - if (item.type === 'address[]') { + if (abiParameter.type === 'address[]') { return ( {value.map((val, idx) => ( @@ -118,14 +128,15 @@ export const FunctionOutput: FC<{ gap={2} justifyItems="center" py={2} - data-tooltip-id={`${item.name}${item.type}`} + data-tooltip-id={`${abiParameter.name}${abiParameter.type}`} data-tooltip-float > - {(item.type.includes('int128') || item.type.includes('int256')) && - result ? ( + {(abiParameter.type.includes('int128') || + abiParameter.type.includes('int256')) && + methodResult ? ( <> @@ -134,14 +145,18 @@ export const FunctionOutput: FC<{ color="whiteAlpha.900" verticalAlign="center" > - {result !== null || undefined ? String(result) : '---'} + {methodResult !== null || undefined + ? String(methodResult) + : '---'} ) : ( - {result !== null || undefined ? String(result) : '---'} + {methodResult !== null || undefined + ? String(methodResult) + : '---'} )} @@ -152,7 +167,7 @@ export const FunctionOutput: FC<{ return ( <> - {(output as Array).length == 0 && ( + {(abiParameters as Array).length == 0 && ( This function does not return @@ -160,20 +175,23 @@ export const FunctionOutput: FC<{ )} - {isArrayOutput(output) ? ( - output.map((item, index) => ( + {isArrayOutput(abiParameters) ? ( + abiParameters.map((abiParameter, index) => ( - - {renderOutput(item, result, index)} + + {renderOutput(abiParameter, methodResult[index], index)} )) ) : ( - {renderOutput(output, result)} + {renderOutput(abiParameters, methodResult)} )}