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