mirror of
https://github.com/hanzonet/explore.git
synced 2026-10-30 18:16:57 +00:00
* Error is not displayed for functions with no return values. Fixes #2749 * fix tests * update paddings
55 lines
1.3 KiB
TypeScript
55 lines
1.3 KiB
TypeScript
import { Flex } from '@chakra-ui/react';
|
|
import React from 'react';
|
|
import type { AbiFunction } from 'viem';
|
|
|
|
import type { ResultViewMode } from '../types';
|
|
|
|
import ResultItem from './resultPublicClient/Item';
|
|
|
|
export interface Props {
|
|
data: unknown;
|
|
abiItem: AbiFunction;
|
|
onSettle: () => void;
|
|
mode: ResultViewMode;
|
|
}
|
|
|
|
const ContractMethodOutput = ({ data, abiItem, onSettle, mode }: Props) => {
|
|
React.useEffect(() => {
|
|
if (mode === 'result') {
|
|
onSettle();
|
|
}
|
|
}, [ onSettle, mode ]);
|
|
|
|
const formattedData = (() => {
|
|
return abiItem && abiItem.outputs.length > 1 && Array.isArray(data) ? data : [ data ];
|
|
})();
|
|
|
|
return (
|
|
<Flex
|
|
flexDir="column"
|
|
rowGap={ 2 }
|
|
mt={ 3 }
|
|
px={ 3 }
|
|
py={ 2 }
|
|
borderRadius="md"
|
|
bgColor={{ _light: 'blackAlpha.50', _dark: 'whiteAlpha.50' }}
|
|
color={ mode === 'preview' ? 'gray.500' : undefined }
|
|
fontSize="sm"
|
|
lineHeight="20px"
|
|
whiteSpace="break-spaces"
|
|
wordBreak="break-all"
|
|
>
|
|
{ abiItem.outputs.map((output, index) => (
|
|
<ResultItem
|
|
key={ index }
|
|
abiParameter={ output }
|
|
data={ formattedData[index] }
|
|
mode={ mode }
|
|
/>
|
|
)) }
|
|
</Flex>
|
|
);
|
|
};
|
|
|
|
export default React.memo(ContractMethodOutput);
|