diff --git a/index.html b/index.html index 8afc4b7..e4174a1 100644 --- a/index.html +++ b/index.html @@ -510,6 +510,20 @@ function getChain() { return btn ? btn.dataset.c : 'bitcoin'; } +// The selected chain lives in the address (?chain=testnet4), so a chain's list +// can be shared as a link. Bitcoin is the default and keeps the plain address. +function setChain(chain) { + const buttons = [...document.querySelectorAll('#chainSeg button')]; + const target = buttons.find(b => b.dataset.c === chain && b.style.display !== 'none'); + if (!target) return false; + buttons.forEach(b => b.setAttribute('aria-pressed', b === target ? 'true' : 'false')); + return true; +} + +function chainFromUrl() { + return new URLSearchParams(window.location.search).get('chain') || 'bitcoin'; +} + function getFiltered() { return allServers .filter(d => (d.url + " " + (d.info||"")).toLowerCase().includes(q.toLowerCase())); @@ -609,8 +623,18 @@ document.getElementById('filter').addEventListener('input', e => { document.getElementById('chainSeg').addEventListener('click', e => { const b = e.target.closest('button'); if (!b) return; - [...e.currentTarget.children].forEach(x => x.setAttribute('aria-pressed', 'false')); - b.setAttribute('aria-pressed', 'true'); + setChain(b.dataset.c); + const url = new URL(window.location.href); + if (b.dataset.c === 'bitcoin') url.searchParams.delete('chain'); + else url.searchParams.set('chain', b.dataset.c); + history.pushState(null, '', url); + fetchData(); + fetchMinAmount(); +}); + +// Browser Back/Forward: follow the address, an unknown chain falls back to Bitcoin. +window.addEventListener('popstate', () => { + if (!setChain(chainFromUrl())) setChain('bitcoin'); fetchData(); fetchMinAmount(); }); @@ -760,6 +784,7 @@ document.getElementById('url').addEventListener('keydown', e => { }); (async function init() { + setChain(chainFromUrl()); await Promise.all([fetchData(), fetchMinAmount()]); const blob = new Blob([JSON.stringify(allServers, null, 2)], { type: 'application/json' }); document.getElementById('download').href = URL.createObjectURL(blob);