From 629c02bb4edd125f88ebe8b873f6d23544830c89 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pr=C3=A9nom=20Nom?= <adresse@mail.com>
Date: Mon, 24 Feb 2025 04:16:05 +0100
Subject: [PATCH] =?UTF-8?q?ajout=20gestion=20connexion=20port=20apr=C3=A8s?=
 =?UTF-8?q?=20refresh?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/background/background.js | 36 +++++++++++++++++++++++++-----------
 1 file changed, 25 insertions(+), 11 deletions(-)

diff --git a/src/background/background.js b/src/background/background.js
index 9771adb..ed1098e 100644
--- a/src/background/background.js
+++ b/src/background/background.js
@@ -761,28 +761,42 @@ browser.runtime.onMessage.addListener(async (message, sender) => {
  * Gère la connexion entre stats.js et le Worker via un port dédié
  * @param {Object} port - Le port de communication avec le Worker
  */
+// Tableau pour stocker tous les ports connectés depuis stats.js
+let statsPorts = [];
+
+// Lorsqu'un content script se connecte via le port "stats-worker-port"
 browser.runtime.onConnect.addListener((port) => {
-  log("[Background] Connexion établie :", port.name);
   if (port.name === "stats-worker-port") {
-    // Redirige les messages de stats.js vers le Worker
+    log("[Background] Connexion établie sur stats-worker-port.");
+    statsPorts.push(port);
+
+    // Rediriger les messages reçus de ce port vers le Worker
     port.onMessage.addListener((message) => {
       log("[Background] Message reçu de stats.js :", message);
       worker.postMessage(message);
     });
 
-    // Transmettre les réponses du Worker à stats.js via le port
-    worker.addEventListener("message", (event) => {
-      const data = event.data;
-      if (data.type === "update-frequencies") {
-        port.postMessage({ command: "update-frequencies", frequencies: data.frequencies });
-      }
-      if (data.type === "threshold-exceeded") {
-        port.postMessage({ command: "threshold-exceeded", wordsAboveThreshold: data.wordsAboveThreshold });
-      }
+    // Lors de la déconnexion, retirer le port du tableau
+    port.onDisconnect.addListener(() => {
+      log("[Background] Déconnexion d'un port stats-worker-port.");
+      statsPorts = statsPorts.filter((p) => p !== port);
     });
   }
 });
 
+// Écoute des messages du worker et on les envoie à tous les ports actifs
+worker.addEventListener("message", (event) => {
+  const data = event.data;
+  // Envoi des messages à tous les ports connectés
+  statsPorts.forEach((port) => {
+    if (data.type === "update-frequencies") {
+      port.postMessage({ command: "update-frequencies", frequencies: data.frequencies });
+    } else if (data.type === "threshold-exceeded") {
+      port.postMessage({ command: "threshold-exceeded", wordsAboveThreshold: data.wordsAboveThreshold });
+    }
+  });
+});
+
 // ─────────────────────────────────────────────────────────────────────────────
 // Surlignage 
 // ─────────────────────────────────────────────────────────────────────────────
-- 
GitLab