From e75be92aa71b0f03af6d76ed3553223dcaf0c76f Mon Sep 17 00:00:00 2001
From: Lucie Bader <167515375+Lucie-Bdr@users.noreply.github.com>
Date: Sat, 15 Feb 2025 11:20:46 +0100
Subject: [PATCH] =?UTF-8?q?D=C3=A9sactivation=20extension=20=C3=A0=20la=20?=
 =?UTF-8?q?d=C3=A9connexion?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/background/background.js | 12 +++++++++++-
 src/popup/popup.js           | 36 +++++++++++++++++-------------------
 2 files changed, 28 insertions(+), 20 deletions(-)

diff --git a/src/background/background.js b/src/background/background.js
index 22c5f9a..3c0eaa5 100644
--- a/src/background/background.js
+++ b/src/background/background.js
@@ -115,7 +115,16 @@ async function disconnectFromLexicalDB() {
   console.log("🔓 Token supprimé avec succès.");
   
   await browser.storage.local.remove("lexiconColors");
-  disableExtensionFeatures();
+  
+  // Désactivation automatique de l'extension
+  await browser.storage.local.set({ extensionActive: false });
+  disableExtensionFeatures(); 
+  browser.runtime.sendMessage({ 
+    action: "updateUI", 
+    extensionActive: false, 
+    isTrackingActive: false, 
+    autoAdd: false 
+  });
 
   setTimeout(async () => {
     await refreshAllUI();
@@ -386,6 +395,7 @@ async function enableExtensionFeatures() {
   });
 
   getOrCreateWhiteBox(); 
+  browser.sidebarAction.open();
 }
 
 
diff --git a/src/popup/popup.js b/src/popup/popup.js
index ee029bc..e355702 100644
--- a/src/popup/popup.js
+++ b/src/popup/popup.js
@@ -29,7 +29,7 @@ async function updateLanguageSelection() {
   const lexicons = await getLexicons(accessToken);
   const userLanguages = [...new Set(lexicons.map(lex => lex.language))];
 
-  // Récupérer les langues actuellement suivies depuis le local storage
+  // Récupérer les langues suivies depuis le stockage
   const { trackedLanguages } = await browser.storage.local.get("trackedLanguages") || { trackedLanguages: [] };
 
   languageSelection.innerHTML = ""; // Suppression du message de chargement
@@ -45,7 +45,7 @@ async function updateLanguageSelection() {
     langButton.textContent = lang.toUpperCase();
     langButton.dataset.value = lang;
 
-    // Vérifier si la langue est suivie et ajouter la classe `selected`
+    // Si la langue est suivie, ajoute la classe "selected"
     if (trackedLanguages && trackedLanguages.includes(lang)) {
       langButton.classList.add("selected");
     }
@@ -60,7 +60,7 @@ async function updateLanguageSelection() {
   console.log("✅ Sélection des langues mise à jour avec :", userLanguages);
 }
 
-// === 3. Gestion de l'affichage des options utilisateur et des statistiques ===
+// === 3. Mise à jour des options utilisateur et des statistiques ===
 async function updateOptionsUI() {
   const { accessToken } = await browser.storage.local.get("accessToken");
   const isLoggedIn = !!accessToken;
@@ -73,19 +73,16 @@ async function updateOptionsUI() {
   const thresholdInput = document.getElementById("threshold");
   const saveOptionsBtn = document.getElementById("save-options");
 
-  // Masquer l'option "Ajout Automatique" si l'utilisateur n'est pas connecté
   if (autoAddContainer) {
     autoAddContainer.style.display = isLoggedIn ? "block" : "none";
   }
 
-  // Charger les préférences utilisateur
   const { isTrackingActive, autoAdd, threshold } = await browser.storage.local.get([
     "isTrackingActive",
     "autoAdd",
     "threshold"
   ]) || { isTrackingActive: false };
 
-  // Mettre à jour le bouton des statistiques et le bloc associé
   if (toggleStatsBtn) {
     toggleStatsBtn.textContent = isTrackingActive ? "Désactiver les statistiques" : "Activer les statistiques";
   }
@@ -119,7 +116,7 @@ async function updateOptionsUI() {
   }
 }
 
-// === 4. Gestion des événements utilisateur ===
+// === 4. Gestion des événements pour options/statistiques ===
 document.getElementById("toggleStatsBtn").addEventListener("click", async () => {
   const current = await browser.storage.local.get("isTrackingActive");
   const newState = !current.isTrackingActive;
@@ -178,6 +175,7 @@ async function updateExtensionToggleButton() {
     toggleButton.textContent = extensionActive ? "Désactiver l'extension" : "Activer l'extension";
 
     if (!toggleButton.dataset.listenerAdded) {
+      // Attachement unique du gestionnaire de clic
       toggleButton.addEventListener("click", handleToggleExtension);
       toggleButton.dataset.listenerAdded = "true";
     }
@@ -186,16 +184,13 @@ async function updateExtensionToggleButton() {
   }
 }
 
-// Fonction de gestion du clic sur le bouton d'activation/désactivation
+// Gestion du clic sur le bouton d'activation/désactivation
 function handleToggleExtension(event) {
-  // Pour que l'appel à browser.sidebarAction.close() soit autorisé,
-  // il doit être déclenché directement dans ce gestionnaire
-  // Nous fermons la sidebar immédiatement si l'extension est activée.
+  // L'appel à browser.sidebarAction.close() est fait directement dans le gestionnaire de clic (geste utilisateur)
   browser.storage.local.get("extensionActive").then(({ extensionActive }) => {
     if (extensionActive) {
       browser.sidebarAction.close();
     }
-    // Ensuite, procéder à la mise à jour de l'état.
     proceedToggleExtension();
   });
 }
@@ -210,19 +205,23 @@ async function proceedToggleExtension() {
     toggleButton.textContent = newState ? "Désactiver l'extension" : "Activer l'extension";
   }
 
-  // Envoi du message vers le background pour mettre à jour les fonctionnalités
+  // Envoi du message au background pour mettre à jour l'UI et les fonctionnalités
   browser.runtime.sendMessage({ action: "toggleExtension", isActive: newState });
 
-  // Ouvrir la sidebar si l'extension est activée, sinon elle reste fermée.
+  // Si l'extension est activée, ouvrir la sidebar dans le gestionnaire de clic
   if (newState) {
-    browser.sidebarAction.open();
+    try {
+      browser.sidebarAction.open();
+      console.log("Sidebar ouverte directement depuis le popup.");
+    } catch (err) {
+      console.error("Erreur lors de l'ouverture de la sidebar :", err);
+    }
   }
 
   showNotification(`Extension ${newState ? "activée" : "désactivée"}.`);
 }
 
-
-// === 6. Fonction pour mettre à jour l'UI du popup en fonction d'un message ===
+// === 6. Mise à jour de l'UI du popup en fonction d'un message ===
 async function updatePopupUI(message) {
   console.log("🔄 Mise à jour du popup avec :", message);
 
@@ -280,8 +279,7 @@ browser.storage.onChanged.addListener((changes, area) => {
   }
 });
 
-
-// === 8. Fonction pour gérer la notification d'activation/désactivation ===
+// === 8. Notification d'activation/désactivation ===
 function showNotification(message) {
   const notificationBox = document.getElementById("extension-notification");
   const notificationText = document.getElementById("notification-text");
-- 
GitLab