diff --git a/src/popup/popup.js b/src/popup/popup.js index a1b4a990a9ce2ebddb074449d7faacb1169f5b51..62250bd2e677dc160c86216a16a48a6ab3795041 100644 --- a/src/popup/popup.js +++ b/src/popup/popup.js @@ -155,7 +155,7 @@ async function updateExtension() { // Mise à jour du bouton des statistiques if (toggleStatsBtn) { const isEnabled = isLoggedIn && extensionActive; - toggleStatsBtn.textContent = isTrackingActive ? "Désactiver les statistiques" : "Activer les statistiques"; + toggleStatsBtn.textContent = isEnabled && isTrackingActive ? "Désactiver les statistiques" : "Activer les statistiques"; toggleStatsBtn.style.pointerEvents = isEnabled ? "auto" : "none"; toggleStatsBtn.disabled = !isEnabled; toggleStatsBtn.style.position = "relative"; @@ -249,6 +249,7 @@ async function proceedToggleExtension() { }); const newState = !extensionActive; await browser.storage.local.set({ extensionActive: newState }); + browser.runtime.sendMessage({ action: "updateUI", extensionActive: newState }); if (!newState) { await browser.storage.local.set({ isTrackingActive: false }); diff --git a/src/sidebar/sidebar.html b/src/sidebar/sidebar.html index 7345d94fcdf41aa9bb1f9e7f3cb025aef193fc0d..99ef99e15b5663b39e7fb6895196e675dfe416e6 100644 --- a/src/sidebar/sidebar.html +++ b/src/sidebar/sidebar.html @@ -406,6 +406,11 @@ color: red !important; font-weight: bold; } + #messageContainer { + display: none; + text-align: center; + color: #323046; + } </style> </head> <body> @@ -479,7 +484,7 @@ <h4>🌠Wiktionnaire</h4> <ul id="wiktionnaireList"></ul> </div> - + <!-- Fenêtre modale cachée --> <div id="modalOverlay" class="modal-overlay"> <div class="modal-content"> @@ -490,5 +495,10 @@ </div> </div> + <!-- Bloc 4 : Message d'analyse désactivée --> + <div id="messageContainer"> + <p id="analysisMessage"></p> + </div> + </body> </html> diff --git a/src/sidebar/sidebar.js b/src/sidebar/sidebar.js index 695f8da3a31ce395f45624df086a10dda5cc5d17..29ceeccfb630c8e39aed3852c5bc06ffcdc7f5e3 100644 --- a/src/sidebar/sidebar.js +++ b/src/sidebar/sidebar.js @@ -81,7 +81,11 @@ async function refreshSidebarState() { toggleElementsVisibility(isLoggedIn); toggleHighlightMessage(isLoggedIn); + const isAnalysisEnabled = await checkAnalysisStatus(); + if (isLoggedIn) { + hideBlocks(!isAnalysisEnabled); + if (!window.lexiconColorsUpdated) { await updateLexiconColors(authToken); window.lexiconColorsUpdated = true; @@ -89,18 +93,8 @@ async function refreshSidebarState() { await fetchLexicons(); } else { // Si l'utilisateur n'est pas connecté, on ferme tous les blocs - document.querySelectorAll('.block-content').forEach(block => { - block.classList.add('hidden'); - // Mise à jour des boutons de bascule associés pour afficher le symbole "+" - const header = block.previousElementSibling; - if (header) { - const toggleBtn = header.querySelector(".toggle-btn"); - if (toggleBtn) { - toggleBtn.textContent = '+'; - } - } - }); - + hideBlocks(true); // Masquer tous les blocs + const lexiquesContainer = document.getElementById("lexiques"); if (lexiquesContainer) { lexiquesContainer.textContent = "Veuillez vous connecter pour voir vos lexiques."; @@ -113,6 +107,19 @@ async function refreshSidebarState() { } } + // Afficher le message d'activation de l'analyse si l'utilisateur est déconnecté ou si l'analyse est désactivée + const messageContainer = document.getElementById("messageContainer"); + if (!isLoggedIn || !isAnalysisEnabled) { + if (messageContainer) { + messageContainer.style.display = "block"; + messageContainer.innerHTML = "Pour utiliser l'extension, activez l'analyse dans le menu d'extension."; + } + } else { + if (messageContainer) { + messageContainer.style.display = "none"; // Cacher le message si l'analyse est activée + } + } + log("✅ Barre latérale actualisée. Utilisateur connecté :", isLoggedIn); } @@ -177,6 +184,28 @@ function closeBlock(blockId, btn) { } } +function hideBlocks(shouldHide) { + const blockIds = ["menu", "etat", "definitionContainer"]; + blockIds.forEach(blockId => { + const block = document.getElementById(blockId); + if (block) { + if (shouldHide) { + block.classList.add("hidden"); // Masquer le bloc + } else { + block.classList.remove("hidden"); // Afficher le bloc + } + } + }); + + const messageContainer = document.getElementById("messageContainer"); + const analysisMessage = document.getElementById("analysisMessage"); + if (shouldHide) { + messageContainer.style.display = "block"; + analysisMessage.innerHTML = "L'analyse est <strong>désactivée</strong>.<br><br>Pour utiliser l'extension, activez l'analyse dans le menu d'extension.<br><br>Vous pouvez aussi fermer ce panneau si vous ne souhaitez pas utiliser l'extension."; + } else { + messageContainer.style.display = "none"; + } +} // ───────────────────────────────────────────────────────────────────────────── // ▌ Gestion des lexiques (Affichage) @@ -600,7 +629,13 @@ browser.runtime.onMessage.addListener(async (message) => { break; case "updateUI": - await refreshSidebarState(); + if (!message.extensionActive) { + // Fermer tous les blocs + hideBlocks(true); + } else { + hideBlocks(false); + await refreshSidebarState(); + } break; case "pyodide-simplemma-ready": @@ -611,9 +646,7 @@ browser.runtime.onMessage.addListener(async (message) => { break; case "closeSidebarBlocks": - closeBlock("menuContent"); - closeBlock("etatContent"); - closeBlock("definitionContent") + hideBlocks(true); break; } @@ -787,3 +820,8 @@ async function toggleLexiconHighlight(lexiconId, isActive) { log(`⌠Erreur lors du toggle du surlignage pour le lexique ${lexiconId}:`, error); } } + +async function checkAnalysisStatus() { + const { extensionActive } = await browser.storage.local.get("extensionActive"); + return extensionActive; // Retourne true si l'analyse est activée, sinon false +} diff --git a/src/utils/logger.js b/src/utils/logger.js index 9828f273969a19ea77e758e8a30ca17ae84d36ba..3d3891c61284b17268311004cb1246ab881987da 100644 --- a/src/utils/logger.js +++ b/src/utils/logger.js @@ -5,7 +5,7 @@ (function () { if (typeof window !== 'undefined') { if (typeof window.DEBUG === 'undefined') { - window.DEBUG = false; // true en debug + window.DEBUG = true; // true en debug } if (!window.log) { function log(...args) { @@ -17,7 +17,7 @@ } } else if (typeof self !== 'undefined') { if (typeof self.DEBUG === 'undefined') { - self.DEBUG = false; // true en debug + self.DEBUG = true; // true en debug } if (!self.log) { function log(...args) {