Correctly render fallback function signature

This commit is contained in:
Willian Mitsuda 2021-10-28 17:39:10 -03:00
parent 852ff5f726
commit 3bfd38641b
2 changed files with 14 additions and 7 deletions

View File

@ -4,7 +4,7 @@ import DecoratedAddressLink from "../components/DecoratedAddressLink";
import FormattedBalance from "../components/FormattedBalance";
import FunctionSignature from "./FunctionSignature";
import { TransactionData } from "../types";
import { FourBytesEntry, rawInputTo4Bytes } from "../use4Bytes";
import { extract4Bytes, FourBytesEntry } from "../use4Bytes";
import { TraceGroup } from "../useErigonHooks";
type TraceItemProps = {
@ -20,8 +20,11 @@ const TraceItem: React.FC<TraceItemProps> = ({
last,
fourBytesMap,
}) => {
const raw4Bytes = rawInputTo4Bytes(t.input);
const fourBytesEntry = fourBytesMap[raw4Bytes];
const raw4Bytes = extract4Bytes(t.input);
const sigText =
raw4Bytes === null
? "<fallback>"
: fourBytesMap[raw4Bytes]?.name ?? raw4Bytes;
return (
<>
@ -45,10 +48,7 @@ const TraceItem: React.FC<TraceItemProps> = ({
</AddressHighlighter>
</span>
<span>.</span>
<FunctionSignature
callType={t.type}
sig={fourBytesEntry ? fourBytesEntry.name : raw4Bytes}
/>
<FunctionSignature callType={t.type} sig={sigText} />
{t.value && !t.value.isZero() && (
<span className="text-red-700 whitespace-nowrap">
{"{"}value: <FormattedBalance value={t.value} /> ETH{"}"}

View File

@ -16,6 +16,13 @@ const simpleTransfer: FourBytesEntry = {
const fullCache = new Map<string, FourBytesEntry | null>();
export const extract4Bytes = (rawInput: string): string | null => {
if (rawInput.length < 10) {
return null;
}
return rawInput.slice(0, 10);
};
export const rawInputTo4Bytes = (rawInput: string) => rawInput.slice(0, 10);
const fetch4Bytes = async (