diff --git a/src/plugin/displayStats.js b/src/plugin/displayStats.js index ad6debe7cb15cb0b52bd66d70ac9cd80c5eadfd4..833f0e4950ec37a0274037333fcbf735b08de8c5 100644 --- a/src/plugin/displayStats.js +++ b/src/plugin/displayStats.js @@ -1,12 +1,10 @@ -log("displayStats.js chargé"); - document.addEventListener("DOMContentLoaded", async () => { /** * Met à jour le résumé des statistiques * @returns {Promise<Object>} - Un objet contenant les statistiques */ async function updateStatsSummary() { - log("[Stats Page] Mise à jour du résumé des statistiques..."); + // log("[Stats Page] Mise à jour du résumé des statistiques..."); const { lemmaFrequencies = {}, @@ -42,7 +40,7 @@ document.addEventListener("DOMContentLoaded", async () => { wordsAdded }; - log("[Stats Page] Résumé des statistiques mis à jour:", summary); + // log("[Stats Page] Résumé des statistiques mis à jour:", summary); await browser.storage.local.set({ statsSummary: summary }); return { summary, lemmaFrequencies, trackedLanguages }; } diff --git a/src/plugin/plugin.js b/src/plugin/plugin.js index 89bce4b331fe42b7be71e8caac43e830670255c8..1574f7c4d4bdd8e7b9bc9d36541b6518b215ba5d 100644 --- a/src/plugin/plugin.js +++ b/src/plugin/plugin.js @@ -17,6 +17,20 @@ async function updateExtension() { updateUI(states); } +/** + * Envoie un message à tous les onglets. + * @param {Object} message - Le message à envoyer. + */ +async function notifyAllTabs(message) { + browser.tabs.query({}).then((tabs) => { + tabs.forEach((tab) => { + browser.tabs.sendMessage(tab.id, message) + .catch((error) => console.warn(`[Background] Impossible d'envoyer un message à l'onglet ${tab.id} : ${error}`)); + }); + }); +} + + /** * Récupère les valeurs du local storage * @returns {Promise<Object>} - Un objet contenant les valeurs @@ -77,12 +91,19 @@ function setupEventListeners() { document.getElementById("save-options")?.addEventListener("click", handleSaveOptions); // Ouverture de la page des statistiques - // TODO : ajouter l'évènement document.getElementById("open-stats")?.addEventListener("click", () => { - window.open("stats.html", "_blank"); + openStatsPage(); }); } +function openStatsPage() { + window.open("stats.html"); + log("Ouverture de la page de statistiques :") +} + + + + /** * Gestion de la connexion / déconnexion */ @@ -131,6 +152,9 @@ async function handleStatsToggle() { // Exécution de Pyodide si nécessaire if (newState) { browser.runtime.sendMessage({ command: "pyodide-simplemma" }); + } else { + // Désactivation : envoyer le message de désactivation à l'onglet actif + notifyAllTabs({ command: "deactivate-stats" }); } } @@ -148,7 +172,7 @@ async function handleToggleExtension() { if (!newState) { await browser.storage.local.set({ isTrackingActive: false }); - if (isTrackingActive) window.open("stats.html", "_blank"); + // if (isTrackingActive) window.open("stats.html", "_blank"); //Si on désactive l'analyse, on ouvre la page de stats browser.runtime.sendMessage({ action: "closeSidebarBlocks" }); } @@ -518,16 +542,4 @@ function handleWorkerMessage(event) { }} -/** - * Ouvre la page des statistiques - */ -document.getElementById("open-stats")?.addEventListener("click", async () => { - openStatsPage(); -}); - -function openStatsPage() { - browser.tabs.create({ - url: browser.runtime.getURL("stats.html") - }); -}