add server url row and live verification check in invoice

This commit is contained in:
2026-07-03 15:58:31 -04:00
parent a66a1b6daa
commit 31bdce61ca

View File

@@ -156,6 +156,8 @@ tbody tr:hover{background:color-mix(in srgb,var(--accent-soft) 50%,transparent)}
#qrcode img{width:160px;height:160px} #qrcode img{width:160px;height:160px}
.ok-line{color:var(--ok);font-weight:600;font-size:14px;margin-bottom:14px} .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} .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{ .intro-card{
background:var(--panel);border:1px solid var(--line); background:var(--panel);border:1px solid var(--line);
@@ -287,6 +289,7 @@ footer a{color:var(--accent);text-decoration:none}
<div class="row"><span>Address</span><span id="iv-addr"></span></div> <div class="row"><span>Address</span><span id="iv-addr"></span></div>
<div class="row"><span>Balance</span><span id="iv-balance"></span></div> <div class="row"><span>Balance</span><span id="iv-balance"></span></div>
<div class="row"><span>Status</span><span id="iv-status2"></span></div> <div class="row"><span>Status</span><span id="iv-status2"></span></div>
<div class="row"><span>Server</span><span><span id="iv-url"></span> <span id="iv-url-check"></span></span></div>
<div id="qrcode"></div> <div id="qrcode"></div>
</div> </div>
@@ -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 => { document.getElementById('onion').addEventListener('change', e => {
withTor = e.target.checked; withTor = e.target.checked;
fetchData(); fetchData();
@@ -468,6 +491,9 @@ document.getElementById('submit').addEventListener('click', async () => {
document.getElementById('iv-addr').textContent = '—'; document.getElementById('iv-addr').textContent = '—';
document.getElementById('iv-balance').textContent = '—'; document.getElementById('iv-balance').textContent = '—';
document.getElementById('iv-status2').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 = ''; document.getElementById('qrcode').innerHTML = '';
const chain = getChain(); const chain = getChain();
try { try {
@@ -495,6 +521,9 @@ document.getElementById('submit').addEventListener('click', async () => {
new QRCode(qrEl, invoiceuri); new QRCode(qrEl, invoiceuri);
inv.classList.add('show'); inv.classList.add('show');
inv.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); inv.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
const serverUrl = result.url || url;
document.getElementById('iv-url').textContent = serverUrl;
checkServer(serverUrl, result.chain || chain);
} catch (err) { } catch (err) {
document.getElementById('iv-status').className = 'err-line'; document.getElementById('iv-status').className = 'err-line';
document.getElementById('iv-status').textContent = 'Network error. Please try again.'; document.getElementById('iv-status').textContent = 'Network error. Please try again.';