add server url row and live verification check in invoice
This commit is contained in:
29
index.html
29
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}
|
#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.';
|
||||||
|
|||||||
Reference in New Issue
Block a user