Compare commits
7 Commits
b799686cd4
...
8c071ae508
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8c071ae508 | ||
|
|
a3c2b8227a | ||
|
|
f9f3e7b85a | ||
| 812fc01a98 | |||
|
|
811c125cb9 | ||
|
|
3005813f2c | ||
|
|
5565e76796 |
@@ -246,7 +246,6 @@ function show(txInfo) {
|
||||
// Reset recipient warning: reserve space (visibility:hidden) while
|
||||
// the async check runs, preventing layout shift per README policy.
|
||||
const recipientWarning = $("confirm-recipient-warning");
|
||||
recipientWarning.style.display = "";
|
||||
recipientWarning.style.visibility = "hidden";
|
||||
|
||||
estimateGas(txInfo);
|
||||
@@ -302,22 +301,18 @@ async function checkRecipientHistory(txInfo) {
|
||||
// the nonce, i.e. sent-tx count only).
|
||||
const code = await provider.getCode(txInfo.to);
|
||||
if (code && code !== "0x") {
|
||||
// Contract address — hide the reserved space entirely
|
||||
el.style.display = "none";
|
||||
// Contract address — no warning needed, keep space reserved
|
||||
// but invisible to prevent layout shift
|
||||
return;
|
||||
}
|
||||
const txCount = await provider.getTransactionCount(txInfo.to);
|
||||
if (txCount === 0) {
|
||||
el.style.visibility = "visible";
|
||||
} else {
|
||||
// Address has history — collapse the reserved space
|
||||
el.style.display = "none";
|
||||
}
|
||||
// If txCount > 0, leave visibility:hidden — space stays reserved
|
||||
} catch (e) {
|
||||
log.errorf("recipient history check failed:", e.message);
|
||||
// On error, collapse the reserved space rather than showing a
|
||||
// false warning or leaving an empty gap
|
||||
el.style.display = "none";
|
||||
// On error, leave visibility:hidden — no layout shift, no false warning
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -158,8 +158,9 @@ function render() {
|
||||
loadCalldata(tx.hash, tx.to);
|
||||
}
|
||||
|
||||
$("tx-detail-time").textContent =
|
||||
isoDate(tx.timestamp) + " (" + timeAgo(tx.timestamp) + ")";
|
||||
const isoStr = isoDate(tx.timestamp);
|
||||
$("tx-detail-time").innerHTML =
|
||||
copyableHtml(isoStr) + " (" + escapeHtml(timeAgo(tx.timestamp)) + ")";
|
||||
$("tx-detail-status").textContent = tx.isError ? "Failed" : "Success";
|
||||
showView("transaction");
|
||||
|
||||
|
||||
@@ -59,6 +59,16 @@ function txHashHtml(hash) {
|
||||
);
|
||||
}
|
||||
|
||||
function blockNumberHtml(blockNumber) {
|
||||
const num = String(blockNumber);
|
||||
const link = `https://etherscan.io/block/${num}`;
|
||||
const extLink = `<a href="${link}" target="_blank" rel="noopener" class="inline-flex items-center">${EXT_ICON}</a>`;
|
||||
return (
|
||||
`<span class="underline decoration-dashed cursor-pointer" data-copy="${escapeHtml(num)}">${escapeHtml(num)}</span>` +
|
||||
extLink
|
||||
);
|
||||
}
|
||||
|
||||
function attachCopyHandlers(viewId) {
|
||||
document
|
||||
.getElementById(viewId)
|
||||
@@ -189,7 +199,7 @@ function renderSuccess() {
|
||||
$("success-tx-to").innerHTML = toAddressHtml(d.to);
|
||||
}
|
||||
|
||||
$("success-tx-block").textContent = String(d.blockNumber);
|
||||
$("success-tx-block").innerHTML = blockNumberHtml(d.blockNumber);
|
||||
$("success-tx-hash").innerHTML = txHashHtml(d.hash);
|
||||
|
||||
// Show decoded calldata details if present
|
||||
|
||||
Reference in New Issue
Block a user