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