From 7ec9dfa35aacb8a5a7dfb902f3a845efcc55bd52 Mon Sep 17 00:00:00 2001 From: gerlofvanek <gerlof@particl.io> Date: Thu, 16 Jan 2025 01:28:10 +0100 Subject: [PATCH] Fix manual refresh button. --- basicswap/static/js/offerstable.js | 44 ++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/basicswap/static/js/offerstable.js b/basicswap/static/js/offerstable.js index e847697..69b6baa 100644 --- a/basicswap/static/js/offerstable.js +++ b/basicswap/static/js/offerstable.js @@ -2571,6 +2571,50 @@ function initializeTableEvents() { }); } + const refreshButton = document.getElementById('refreshOffers'); + if (refreshButton) { + EventManager.add(refreshButton, 'click', async () => { + console.log('Manual refresh initiated'); + const refreshIcon = document.getElementById('refreshIcon'); + const refreshText = document.getElementById('refreshText'); + + refreshButton.disabled = true; + refreshIcon.classList.add('animate-spin'); + refreshText.textContent = 'Refreshing...'; + refreshButton.classList.add('opacity-75', 'cursor-wait'); + + try { + const endpoint = isSentOffers ? '/json/sentoffers' : '/json/offers'; + const response = await fetch(endpoint); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + const newData = await response.json(); + + const processedNewData = Array.isArray(newData) ? newData : Object.values(newData); + console.log('Fetched offers:', processedNewData.length); + + jsonData = formatInitialData(processedNewData); + originalJsonData = [...jsonData]; + + await updateOffersTable(); + updateJsonView(); + updatePaginationInfo(); + + console.log('Manual refresh completed successfully'); + + } catch (error) { + console.error('Error during manual refresh:', error); + ui.displayErrorMessage('Failed to refresh offers. Please try again later.'); + } finally { + refreshButton.disabled = false; + refreshIcon.classList.remove('animate-spin'); + refreshText.textContent = 'Refresh'; + refreshButton.classList.remove('opacity-75', 'cursor-wait'); + } + }); + } + document.querySelectorAll('th[data-sortable="true"]').forEach(header => { EventManager.add(header, 'click', () => { const columnIndex = parseInt(header.getAttribute('data-column-index'));