diff --git a/src/js/background.js b/src/js/background.js index d7c5d83..7bb6532 100644 --- a/src/js/background.js +++ b/src/js/background.js @@ -486,6 +486,14 @@ async function setupUpdateSchedule() { // Event Listeners browserAPI.runtime.onMessage.addListener((message, sender, sendResponse) => { + if (message.action === "forceUpdateFilterlist") { + fetchFilterLists().then(() => { + if (sendResponse) sendResponse({ status: "ok" }); + }).catch((err) => { + if (sendResponse) sendResponse({ status: "error", error: err?.toString() }); + }); + return true; // Indicates async response + } if (message.action === "checkSiteStatus") { const { url, rootUrl } = message; diff --git a/src/pub/settings-page.html b/src/pub/settings-page.html index bda5e1f..98765fc 100644 --- a/src/pub/settings-page.html +++ b/src/pub/settings-page.html @@ -525,6 +525,9 @@ Next update scheduled for: Checking... +
+ +
diff --git a/src/pub/settings-page.js b/src/pub/settings-page.js index 5d3d904..0e9848e 100644 --- a/src/pub/settings-page.js +++ b/src/pub/settings-page.js @@ -1,4 +1,21 @@ document.addEventListener("DOMContentLoaded", () => { + if (forceRefreshButton) { + forceRefreshButton.addEventListener("click", async () => { + forceRefreshButton.disabled = true; + forceRefreshButton.textContent = "Updating..."; + try { + await browserAPI.runtime.sendMessage({ action: "forceUpdateFilterlist" }); + showNotification("Filterlist update started."); + } catch (error) { + showNotification("Failed to start update.", true); + } finally { + setTimeout(() => { + forceRefreshButton.disabled = false; + forceRefreshButton.textContent = "Force Update Filterlist"; + }, 2000); + } + }); + } // Cross-browser compatibility shim const browserAPI = typeof browser !== "undefined" ? browser : chrome; // Load and display the extension version from manifest.json