diff --git a/src/popup/index.html b/src/popup/index.html index e0c6130..bc25e3d 100644 --- a/src/popup/index.html +++ b/src/popup/index.html @@ -952,13 +952,27 @@
+
Transaction hash
diff --git a/src/popup/views/transactionDetail.js b/src/popup/views/transactionDetail.js index 70d4af2..43d482d 100644 --- a/src/popup/views/transactionDetail.js +++ b/src/popup/views/transactionDetail.js @@ -164,28 +164,14 @@ function render() { }); } -function renderDecodedCalldata(decoded) { - let html = `
${escapeHtml(decoded.name)}
`; - if (decoded.description) { - html += `
${escapeHtml(decoded.description)}
`; - } - for (const detail of decoded.details || []) { - html += `
${escapeHtml(detail.label)}: `; - if (detail.address) { - const dot = addressDotHtml(detail.address); - html += `${dot}${copyableHtml(detail.value, "break-all")}`; - } else { - html += escapeHtml(detail.value); - } - html += `
`; - } - return html; -} - async function loadCalldata(txHash, toAddress) { const section = $("tx-detail-calldata-section"); - const container = $("tx-detail-calldata"); - if (!section || !container) return; + const actionEl = $("tx-detail-calldata-action"); + const detailsEl = $("tx-detail-calldata-details"); + const wellEl = $("tx-detail-calldata-well"); + const rawSection = $("tx-detail-rawdata-section"); + const rawEl = $("tx-detail-rawdata"); + if (!section || !actionEl || !detailsEl) return; try { const resp = await debugFetch( @@ -198,14 +184,39 @@ async function loadCalldata(txHash, toAddress) { const decoded = decodeCalldata(inputData, toAddress || ""); if (decoded) { - container.innerHTML = renderDecodedCalldata(decoded); + // Render decoded calldata matching approval view style + actionEl.textContent = decoded.name; + let detailsHtml = ""; + if (decoded.description) { + detailsHtml += `
${escapeHtml(decoded.description)}
`; + } + for (const d of decoded.details || []) { + detailsHtml += `
`; + detailsHtml += `
${escapeHtml(d.label)}
`; + if (d.address) { + const dot = addressDotHtml(d.address); + detailsHtml += `
${dot}${copyableHtml(d.value, "break-all")}
`; + } else { + detailsHtml += `
${escapeHtml(d.value)}
`; + } + detailsHtml += `
`; + } + detailsEl.innerHTML = detailsHtml; + if (wellEl) wellEl.classList.remove("hidden"); } else { - const method = txData.method || "Unknown method"; - let html = `
Unknown contract call
`; - html += `
${escapeHtml(method)}
`; - html += `
${copyableHtml(inputData, "break-all")}
`; - container.innerHTML = html; + // Unknown contract call — show method name in well + const method = txData.method || "Unknown contract call"; + actionEl.textContent = method; + detailsEl.innerHTML = ""; + if (wellEl) wellEl.classList.remove("hidden"); } + + // Always show raw data + if (rawSection && rawEl) { + rawEl.innerHTML = copyableHtml(inputData, "break-all"); + rawSection.classList.remove("hidden"); + } + section.classList.remove("hidden"); // Bind copy handlers for new elements