From 74fe1671372ac2685db5cafc3b27be70f90fb6fb Mon Sep 17 00:00:00 2001 From: svatantrya Date: Tue, 14 Jul 2026 08:01:03 -0400 Subject: [PATCH] refactor: move fetch after terms accept, add donations/nextdep/unconfirmed balance, fix download blob --- index.html | 84 +++++++++++++++++++++++++++++++++++------------------ weinfo.html | 6 +++- 2 files changed, 61 insertions(+), 29 deletions(-) diff --git a/index.html b/index.html index e85cbc2..183b05c 100644 --- a/index.html +++ b/index.html @@ -315,10 +315,11 @@ footer a{color:var(--accent);text-decoration:none}
Chain
Address
Balance
-
Status
+
Donations
Contact
Server
Will Executor
+

@@ -521,18 +522,45 @@ document.getElementById('submit').addEventListener('click', async () => { document.getElementById('iv-chain').textContent = '—'; document.getElementById('iv-addr').textContent = '—'; document.getElementById('iv-balance').textContent = '—'; + document.getElementById('iv-donations').textContent = '—'; document.getElementById('iv-url').textContent = '—'; document.getElementById('iv-contact').textContent = '—'; document.getElementById('iv-weinfo').href = '#'; document.getElementById('iv-weinfo').textContent = '—'; + document.getElementById('iv-nextdep-row').style.display = 'none'; + document.getElementById('iv-nextdep').textContent = '—'; + document.getElementById('iv-min').parentElement.style.display = ''; + document.getElementById('iv-addr').parentElement.style.display = ''; + document.getElementById('qrcode').style.display = ''; + document.getElementById('share-btn').style.display = ''; document.getElementById('qrcode').innerHTML = ''; document.getElementById('qrcode').style.cursor = ''; document.getElementById('qr-overlay').classList.remove('show'); document.getElementById('share-btn').textContent = 'Share invoice'; document.getElementById('terms-box').classList.remove('show'); + document.getElementById('terms-box').style.display = ''; document.getElementById('terms-check').checked = false; document.getElementById('terms-accept').disabled = true; const chain = getChain(); + const infoUrl = url + '/' + chain + '/info'; + document.getElementById('terms-url').href = infoUrl; + document.getElementById('terms-url').textContent = url; + document.getElementById('terms-box').classList.add('show'); + document.getElementById('terms-box').scrollIntoView({ behavior: 'smooth', block: 'nearest' }); +}); + +document.getElementById('terms-check').addEventListener('change', function () { + document.getElementById('terms-accept').disabled = !this.checked; +}); + +document.getElementById('terms-accept').addEventListener('click', async function () { + document.getElementById('terms-box').classList.remove('show'); + const urlInput = document.getElementById('url'); + let url = urlInput.value.trim(); + if (!url.startsWith('http://') && !url.startsWith('https://')) { + url = 'https://' + url; + } + const chain = getChain(); try { const response = await fetch('/data', { method: 'POST', @@ -548,10 +576,10 @@ document.getElementById('submit').addEventListener('click', async () => { document.getElementById('iv-min').textContent = fmt(result.min_amount != null ? result.min_amount : minAmount) + ' sats'; document.getElementById('iv-chain').textContent = result.chain || chain; document.getElementById('iv-addr').textContent = result.address || '—'; - document.getElementById('iv-balance').textContent = result.balance != null ? fmt(result.balance) : '—'; - const statusVal = result.status || '—'; - const st = (statusVal||'').split(':')[0]; - document.getElementById('iv-status').textContent = statusMap[st] || '—'; + const balStr = result.balance != null ? fmt(result.balance) : null; + const uncStr = result.unconfirmed_balance != null ? fmt(result.unconfirmed_balance) : null; + document.getElementById('iv-balance').textContent = balStr ? (uncStr ? balStr + ' (' + uncStr + ')' : balStr) : '—'; + document.getElementById('iv-donations').textContent = result.donations != null ? fmt(result.donations) : '—'; document.getElementById('iv-contact').textContent = document.getElementById('contact').value.trim() || '—'; const weLink = result.id ? `/weinfo/${result.chain || chain}/${result.id}` : null; const weinfoEl = document.getElementById('iv-weinfo'); @@ -562,6 +590,22 @@ document.getElementById('submit').addEventListener('click', async () => { weinfoEl.href = '#'; weinfoEl.textContent = '—'; } + const serverUrl = result.url || url; + document.getElementById('iv-url').textContent = serverUrl; + if (result.payment_needed === false) { + document.getElementById('iv-min').parentElement.style.display = 'none'; + document.getElementById('iv-addr').parentElement.style.display = 'none'; + document.getElementById('qrcode').style.display = 'none'; + document.getElementById('share-btn').style.display = 'none'; + document.getElementById('iv-nextdep').textContent = result.next_deposit_date || '—'; + document.getElementById('iv-nextdep-row').style.display = 'flex'; + document.getElementById('iv-status').className = 'ok-line'; + document.getElementById('iv-status').textContent = 'Server is already listed. Next deposit: ' + (result.next_deposit_date || '—'); + const inv = document.getElementById('invoice'); + inv.classList.add('show'); + inv.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); + return; + } const amountSats = result.amount != null ? result.amount : minAmount; const amountBtc = (amountSats / 1e8).toFixed(8).replace(/\.?0+$/, ''); const invoiceuri = `bitcoin:${result.address}?amount=${amountBtc}&label=BAL&message=Order+For+url+%26+${encodeURIComponent(url)}`; @@ -591,41 +635,25 @@ document.getElementById('submit').addEventListener('click', async () => { }); } }; - const serverUrl = result.url || url; - const infoUrl = serverUrl + '/' + (result.chain || chain) + '/info'; - document.getElementById('iv-url').textContent = serverUrl; - document.getElementById('terms-url').href = infoUrl; - document.getElementById('terms-url').textContent = serverUrl; - document.getElementById('terms-box').classList.add('show'); - document.getElementById('terms-box').scrollIntoView({ behavior: 'smooth', block: 'nearest' }); + document.getElementById('iv-status').className = 'ok-line'; + document.getElementById('iv-status').textContent = '✓ Server added: ' + serverUrl + '. Pay the invoice to complete.'; + const inv = document.getElementById('invoice'); + inv.classList.add('show'); + inv.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); } catch (err) { document.getElementById('iv-status').className = 'err-line'; document.getElementById('iv-status').textContent = 'Network error. Please try again.'; } }); -document.getElementById('terms-check').addEventListener('change', function () { - document.getElementById('terms-accept').disabled = !this.checked; -}); - -document.getElementById('terms-accept').addEventListener('click', function () { - document.getElementById('terms-box').classList.remove('show'); - const inv = document.getElementById('invoice'); - document.getElementById('iv-status').className = 'ok-line'; - document.getElementById('iv-status').textContent = '✓ Server added: ' + document.getElementById('iv-url').textContent + '. Pay the invoice to complete.'; - inv.classList.add('show'); - inv.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); -}); - document.getElementById('url').addEventListener('keydown', e => { if (e.key === 'Enter') document.getElementById('submit').click(); }); -(function init() { +(async function init() { + await Promise.all([fetchData(), fetchMinAmount()]); const blob = new Blob([JSON.stringify(allServers, null, 2)], { type: 'application/json' }); document.getElementById('download').href = URL.createObjectURL(blob); - fetchData(); - fetchMinAmount(); })();

diff --git a/weinfo.html b/weinfo.html index 30b2a6b..3724ed3 100644 --- a/weinfo.html +++ b/weinfo.html @@ -49,6 +49,7 @@
Balance: 
+
Donations: 
Status: 
Last Update: 
@@ -89,7 +90,10 @@ document.getElementById('wepoints').innerHTML = data.points != null ? data.points : '—'; document.getElementById('wewin').innerHTML = data.count_win != null ? data.count_win : '—'; document.getElementById('wetld').innerHTML = DOMPurify.sanitize(data.tld||'—'); - document.getElementById('webalance').innerHTML = data.balance != null ? data.balance : '—'; + const bal = data.balance != null ? data.balance : null; + const unc = data.unconfirmed_balance != null ? data.unconfirmed_balance : null; + document.getElementById('webalance').innerHTML = bal ? (unc ? bal + ' (' + unc + ')' : bal) : '—'; + document.getElementById('wedonations').innerHTML = data.donations != null ? data.donations : '—'; document.getElementById('weversion').innerHTML = data.version||'—'; const statusMap = { 'OK': 'Health check passed',