diff --git a/index.html b/index.html index a5e53f5..6cd4773 100644 --- a/index.html +++ b/index.html @@ -1371,11 +1371,70 @@ if (searchType === "address") { await loadTransactions(); + updateURLWithAddress(input); } else if (searchType === "hash") { await lookupTransactionHash(input); } } + // Update URL with address parameter + function updateURLWithAddress(address) { + if (!address) return; + + const url = new URL(window.location); + url.searchParams.set("address", address); + window.history.pushState({ address: address }, "", url); + } + + // Get address from URL parameters + function getAddressFromURL() { + const urlParams = new URLSearchParams(window.location.search); + return urlParams.get("address"); + } + + // Load address from URL on page load + async function loadAddressFromURL() { + const address = getAddressFromURL(); + if (address) { + showPage("transactions"); + + await new Promise((resolve) => setTimeout(resolve, 100)); + + const addressRadio = document.querySelector( + 'input[name="searchType"][value="address"]' + ); + if (addressRadio) { + addressRadio.checked = true; + updateSearchInterface("address"); + } + + document.getElementById("transactionInput").value = address; + + await handleSearch(); + } + } + + window.addEventListener("popstate", async function (event) { + if (event.state && event.state.address) { + showPage("transactions"); + + await new Promise((resolve) => setTimeout(resolve, 100)); + + const addressRadio = document.querySelector( + 'input[name="searchType"][value="address"]' + ); + if (addressRadio) { + addressRadio.checked = true; + updateSearchInterface("address"); + } + + document.getElementById("transactionInput").value = + event.state.address; + + await loadTransactions(); + } + }); + // Lookup transaction hash and open in explorer async function lookupTransactionHash(hash) { const output = document.getElementById("transactionsOutput"); @@ -1962,7 +2021,9 @@ }