diff --git a/index.html b/index.html index 967125b..8327418 100644 --- a/index.html +++ b/index.html @@ -156,6 +156,8 @@ tbody tr:hover{background:color-mix(in srgb,var(--accent-soft) 50%,transparent)} #qrcode img{width:160px;height:160px} .ok-line{color:var(--ok);font-weight:600;font-size:14px;margin-bottom:14px} .err-line{color:#d32f2f;font-weight:600;font-size:14px;margin-bottom:14px} +.flag-ok{color:var(--ok);font-weight:600;font-size:13px} +.flag-err{color:#d32f2f;font-weight:600;font-size:13px} .intro-card{ background:var(--panel);border:1px solid var(--line); @@ -287,6 +289,7 @@ footer a{color:var(--accent);text-decoration:none}
Address
Balance
Status
+
Server
@@ -433,6 +436,26 @@ async function fetchData() { } } +async function checkServer(url, chain) { + const flag = document.getElementById('iv-url-check'); + flag.textContent = 'checking…'; + flag.className = ''; + try { + const r = await fetch(url + '/' + chain + '/info'); + const data = await r.json(); + if (data && data.address && data.base_fee != null) { + flag.textContent = '✓ verified'; + flag.className = 'flag-ok'; + } else { + flag.textContent = '✗ error'; + flag.className = 'flag-err'; + } + } catch (err) { + flag.textContent = '✗ error'; + flag.className = 'flag-err'; + } +} + document.getElementById('onion').addEventListener('change', e => { withTor = e.target.checked; fetchData(); @@ -468,6 +491,9 @@ document.getElementById('submit').addEventListener('click', async () => { document.getElementById('iv-addr').textContent = '—'; document.getElementById('iv-balance').textContent = '—'; document.getElementById('iv-status2').textContent = '—'; + document.getElementById('iv-url').textContent = '—'; + document.getElementById('iv-url-check').textContent = ''; + document.getElementById('iv-url-check').className = ''; document.getElementById('qrcode').innerHTML = ''; const chain = getChain(); try { @@ -495,6 +521,9 @@ document.getElementById('submit').addEventListener('click', async () => { new QRCode(qrEl, invoiceuri); inv.classList.add('show'); inv.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); + const serverUrl = result.url || url; + document.getElementById('iv-url').textContent = serverUrl; + checkServer(serverUrl, result.chain || chain); } catch (err) { document.getElementById('iv-status').className = 'err-line'; document.getElementById('iv-status').textContent = 'Network error. Please try again.';