import React, { useState, useEffect } from "react"; type MethodNameProps = { data: string; }; const MethodName: React.FC = ({ data }) => { const [name, setName] = useState(); useEffect(() => { if (data === "0x") { setName("Transfer"); return; } let _name = data.slice(0, 10); // Try to resolve 4bytes name const fourBytes = _name.slice(2); const signatureURL = `http://localhost:3001/${fourBytes}`; fetch(signatureURL) .then(async (res) => { if (!res.ok) { console.error(`Signature does not exist in 4bytes DB: ${fourBytes}`); return; } const sig = await res.text(); const cut = sig.indexOf("("); let method = sig.slice(0, cut); method = method.charAt(0).toUpperCase() + method.slice(1); setName(method); return; }) .catch((err) => { console.error(`Couldn't fetch signature URL ${signatureURL}`, err); }); // Use the default 4 bytes as name setName(_name); }, [data]); return (

{name}

); }; export default React.memo(MethodName);