Skip to content
Snippets Groups Projects
Commit e75be92a authored by Lucie Bader's avatar Lucie Bader
Browse files

Désactivation extension à la déconnexion

parent ea0a6c51
No related branches found
No related tags found
2 merge requests!8Test final,!6Améliorations du menu de l'extension
...@@ -115,7 +115,16 @@ async function disconnectFromLexicalDB() { ...@@ -115,7 +115,16 @@ async function disconnectFromLexicalDB() {
console.log("🔓 Token supprimé avec succès."); console.log("🔓 Token supprimé avec succès.");
await browser.storage.local.remove("lexiconColors"); 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 () => { setTimeout(async () => {
await refreshAllUI(); await refreshAllUI();
...@@ -386,6 +395,7 @@ async function enableExtensionFeatures() { ...@@ -386,6 +395,7 @@ async function enableExtensionFeatures() {
}); });
getOrCreateWhiteBox(); getOrCreateWhiteBox();
browser.sidebarAction.open();
} }
......
...@@ -29,7 +29,7 @@ async function updateLanguageSelection() { ...@@ -29,7 +29,7 @@ async function updateLanguageSelection() {
const lexicons = await getLexicons(accessToken); const lexicons = await getLexicons(accessToken);
const userLanguages = [...new Set(lexicons.map(lex => lex.language))]; 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: [] }; const { trackedLanguages } = await browser.storage.local.get("trackedLanguages") || { trackedLanguages: [] };
languageSelection.innerHTML = ""; // Suppression du message de chargement languageSelection.innerHTML = ""; // Suppression du message de chargement
...@@ -45,7 +45,7 @@ async function updateLanguageSelection() { ...@@ -45,7 +45,7 @@ async function updateLanguageSelection() {
langButton.textContent = lang.toUpperCase(); langButton.textContent = lang.toUpperCase();
langButton.dataset.value = lang; 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)) { if (trackedLanguages && trackedLanguages.includes(lang)) {
langButton.classList.add("selected"); langButton.classList.add("selected");
} }
...@@ -60,7 +60,7 @@ async function updateLanguageSelection() { ...@@ -60,7 +60,7 @@ async function updateLanguageSelection() {
console.log("✅ Sélection des langues mise à jour avec :", userLanguages); 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() { async function updateOptionsUI() {
const { accessToken } = await browser.storage.local.get("accessToken"); const { accessToken } = await browser.storage.local.get("accessToken");
const isLoggedIn = !!accessToken; const isLoggedIn = !!accessToken;
...@@ -73,19 +73,16 @@ async function updateOptionsUI() { ...@@ -73,19 +73,16 @@ async function updateOptionsUI() {
const thresholdInput = document.getElementById("threshold"); const thresholdInput = document.getElementById("threshold");
const saveOptionsBtn = document.getElementById("save-options"); const saveOptionsBtn = document.getElementById("save-options");
// Masquer l'option "Ajout Automatique" si l'utilisateur n'est pas connecté
if (autoAddContainer) { if (autoAddContainer) {
autoAddContainer.style.display = isLoggedIn ? "block" : "none"; autoAddContainer.style.display = isLoggedIn ? "block" : "none";
} }
// Charger les préférences utilisateur
const { isTrackingActive, autoAdd, threshold } = await browser.storage.local.get([ const { isTrackingActive, autoAdd, threshold } = await browser.storage.local.get([
"isTrackingActive", "isTrackingActive",
"autoAdd", "autoAdd",
"threshold" "threshold"
]) || { isTrackingActive: false }; ]) || { isTrackingActive: false };
// Mettre à jour le bouton des statistiques et le bloc associé
if (toggleStatsBtn) { if (toggleStatsBtn) {
toggleStatsBtn.textContent = isTrackingActive ? "Désactiver les statistiques" : "Activer les statistiques"; toggleStatsBtn.textContent = isTrackingActive ? "Désactiver les statistiques" : "Activer les statistiques";
} }
...@@ -119,7 +116,7 @@ async function updateOptionsUI() { ...@@ -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 () => { document.getElementById("toggleStatsBtn").addEventListener("click", async () => {
const current = await browser.storage.local.get("isTrackingActive"); const current = await browser.storage.local.get("isTrackingActive");
const newState = !current.isTrackingActive; const newState = !current.isTrackingActive;
...@@ -178,6 +175,7 @@ async function updateExtensionToggleButton() { ...@@ -178,6 +175,7 @@ async function updateExtensionToggleButton() {
toggleButton.textContent = extensionActive ? "Désactiver l'extension" : "Activer l'extension"; toggleButton.textContent = extensionActive ? "Désactiver l'extension" : "Activer l'extension";
if (!toggleButton.dataset.listenerAdded) { if (!toggleButton.dataset.listenerAdded) {
// Attachement unique du gestionnaire de clic
toggleButton.addEventListener("click", handleToggleExtension); toggleButton.addEventListener("click", handleToggleExtension);
toggleButton.dataset.listenerAdded = "true"; toggleButton.dataset.listenerAdded = "true";
} }
...@@ -186,16 +184,13 @@ async function updateExtensionToggleButton() { ...@@ -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) { function handleToggleExtension(event) {
// Pour que l'appel à browser.sidebarAction.close() soit autorisé, // L'appel à browser.sidebarAction.close() est fait directement dans le gestionnaire de clic (geste utilisateur)
// il doit être déclenché directement dans ce gestionnaire
// Nous fermons la sidebar immédiatement si l'extension est activée.
browser.storage.local.get("extensionActive").then(({ extensionActive }) => { browser.storage.local.get("extensionActive").then(({ extensionActive }) => {
if (extensionActive) { if (extensionActive) {
browser.sidebarAction.close(); browser.sidebarAction.close();
} }
// Ensuite, procéder à la mise à jour de l'état.
proceedToggleExtension(); proceedToggleExtension();
}); });
} }
...@@ -210,19 +205,23 @@ async function proceedToggleExtension() { ...@@ -210,19 +205,23 @@ async function proceedToggleExtension() {
toggleButton.textContent = newState ? "Désactiver l'extension" : "Activer l'extension"; 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 }); 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) { 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"}.`); showNotification(`Extension ${newState ? "activée" : "désactivée"}.`);
} }
// === 6. Mise à jour de l'UI du popup en fonction d'un message ===
// === 6. Fonction pour mettre à jour l'UI du popup en fonction d'un message ===
async function updatePopupUI(message) { async function updatePopupUI(message) {
console.log("🔄 Mise à jour du popup avec :", message); console.log("🔄 Mise à jour du popup avec :", message);
...@@ -280,8 +279,7 @@ browser.storage.onChanged.addListener((changes, area) => { ...@@ -280,8 +279,7 @@ browser.storage.onChanged.addListener((changes, area) => {
} }
}); });
// === 8. Notification d'activation/désactivation ===
// === 8. Fonction pour gérer la notification d'activation/désactivation ===
function showNotification(message) { function showNotification(message) {
const notificationBox = document.getElementById("extension-notification"); const notificationBox = document.getElementById("extension-notification");
const notificationText = document.getElementById("notification-text"); const notificationText = document.getElementById("notification-text");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment