fix: align receive view address display with addressDetail pattern
All checks were successful
check / check (push) Successful in 22s

The receive view was using formatAddressHtml() which rendered addresses
with a different structure (bold title label above address) compared to
addressDetail's pattern (separate dot + full address + etherscan link
inline elements). This violated the display consistency policy.

Now uses the same element structure as addressDetail: separate
receive-address-dot, receive-address-full, and receive-etherscan-link
spans, with ENS name shown in a separate element matching addressDetail.

Closes #58
This commit is contained in:
2026-02-28 11:59:42 -08:00
parent e8ede7010a
commit b9c3d99fed
2 changed files with 22 additions and 11 deletions

View File

@@ -637,10 +637,16 @@
<div class="flex justify-center mb-3"> <div class="flex justify-center mb-3">
<canvas id="receive-qr"></canvas> <canvas id="receive-qr"></canvas>
</div> </div>
<div
id="receive-ens"
class="font-bold mb-1 hidden flex items-center"
></div>
<div <div
class="border border-border p-2 break-all mb-3 text-xs cursor-pointer" class="border border-border p-2 break-all mb-3 text-xs cursor-pointer"
title="Click to copy"
> >
<span id="receive-address-block" class="select-all"></span> <span id="receive-address-dot"></span>
<span id="receive-address-full"></span>
<span id="receive-etherscan-link"></span> <span id="receive-etherscan-link"></span>
</div> </div>
<button <button

View File

@@ -2,8 +2,8 @@ const {
$, $,
showView, showView,
showFlash, showFlash,
formatAddressHtml, addressDotHtml,
addressTitle, escapeHtml,
} = require("./helpers"); } = require("./helpers");
const { state, currentAddress } = require("../../shared/state"); const { state, currentAddress } = require("../../shared/state");
const QRCode = require("qrcode"); const QRCode = require("qrcode");
@@ -18,12 +18,17 @@ const EXT_ICON =
function show() { function show() {
const addr = currentAddress(); const addr = currentAddress();
const address = addr ? addr.address : ""; const address = addr ? addr.address : "";
const title = address ? addressTitle(address, state.wallets) : null; $("receive-address-dot").innerHTML = address ? addressDotHtml(address) : "";
$("receive-address-full").textContent = address;
$("receive-address-full").dataset.full = address;
const ensName = addr ? addr.ensName || null : null; const ensName = addr ? addr.ensName || null : null;
$("receive-address-block").innerHTML = address const ensEl = $("receive-ens");
? formatAddressHtml(address, ensName, null, title) if (ensName) {
: ""; ensEl.innerHTML = addressDotHtml(address) + escapeHtml(ensName);
$("receive-address-block").dataset.full = address; ensEl.classList.remove("hidden");
} else {
ensEl.classList.add("hidden");
}
const link = address ? `https://etherscan.io/address/${address}` : ""; const link = address ? `https://etherscan.io/address/${address}` : "";
$("receive-etherscan-link").innerHTML = link $("receive-etherscan-link").innerHTML = link
? `<a href="${link}" target="_blank" rel="noopener" class="inline-flex items-center">${EXT_ICON}</a>` ? `<a href="${link}" target="_blank" rel="noopener" class="inline-flex items-center">${EXT_ICON}</a>`
@@ -60,8 +65,8 @@ function show() {
} }
function init(ctx) { function init(ctx) {
$("receive-address-block").addEventListener("click", () => { $("receive-address-full").addEventListener("click", () => {
const addr = $("receive-address-block").dataset.full; const addr = $("receive-address-full").dataset.full;
if (addr) { if (addr) {
navigator.clipboard.writeText(addr); navigator.clipboard.writeText(addr);
showFlash("Copied!"); showFlash("Copied!");
@@ -69,7 +74,7 @@ function init(ctx) {
}); });
$("btn-receive-copy").addEventListener("click", () => { $("btn-receive-copy").addEventListener("click", () => {
const addr = $("receive-address-block").dataset.full; const addr = $("receive-address-full").dataset.full;
if (addr) { if (addr) {
navigator.clipboard.writeText(addr); navigator.clipboard.writeText(addr);
showFlash("Copied!"); showFlash("Copied!");