diff --git a/static/js/blocks.js b/static/js/blocks.js index f2329ea..b8e1380 100644 --- a/static/js/blocks.js +++ b/static/js/blocks.js @@ -209,50 +209,64 @@ function loadBlocksFromHeight(height) { }); } -// Function to load the latest blocks +// Function to load the latest blocks and return a promise with the latest block height function loadLatestBlocks() { - if (isLoading) return; - + if (isLoading) return Promise.resolve(null); + isLoading = true; - + // Show loading state $("#blocks-grid").html('
Loading latest blocks
'); - + // Fetch the latest blocks from the API - $.ajax({ + return $.ajax({ url: `${mempoolBaseUrl}/api/v1/blocks`, method: "GET", dataType: "json", timeout: 10000, - success: function(data) { + success: function (data) { // Cache the data (use the first block's height as the key) if (data.length > 0) { currentStartHeight = data[0].height; blocksCache[currentStartHeight] = data; - + // Update the block height input with the latest height $("#block-height").val(currentStartHeight); - + // Update latest block stats updateLatestBlockStats(data[0]); } - + // Display the blocks displayBlocks(data); }, - error: function(xhr, status, error) { + error: function (xhr, status, error) { console.error("Error fetching latest blocks:", error); $("#blocks-grid").html('
Error fetching blocks. Please try again later.
'); - + // Show error toast showToast("Failed to load latest blocks. Please try again later."); }, - complete: function() { + complete: function () { isLoading = false; } - }); + }).then(data => data.length > 0 ? data[0].height : null); } +// Refresh blocks page every 60 seconds if there are new blocks +setInterval(function () { + console.log("Checking for new blocks at " + new Date().toLocaleTimeString()); + loadLatestBlocks().then(latestHeight => { + if (latestHeight && latestHeight > currentStartHeight) { + console.log("New blocks detected, refreshing the page"); + location.reload(); + } else { + console.log("No new blocks detected"); + } + }); +}, 60000); + + // Function to update the latest block stats section function updateLatestBlockStats(block) { if (!block) return;