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

Correction mode beug/prod

parent 37043924
No related branches found
No related tags found
1 merge request!8Test final
<!-- <!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Paramètres ff2BaLex</title>
<script src="../utils/logger.js"></script>
<style>
body {
font-family: Luciole;
padding: 20px;
background-color: #323046;
color: white;
}
button {
width: 100%;
padding: 10px;
margin-bottom: 10px;
font-size: 15px;
color: #94608a;
font-weight: bold;
border: none;
cursor: pointer;
}
button:hover {
background-color: #94608a;
color: white;
}
</style>
</head>
<body>
<h3>Paramètres BaLex</h3>
<button id="connectBtn">Se connecter</button>
<button id="toggleExtensionBtn">Activer/Désactiver l'extension</button>
<button id="toggleStatsBtn">Activer/Désactiver les statistiques</button>
<script src="options.js"></script>
</body>
</html> -->
// document.getElementById('connectBtn').addEventListener('click', () => {
// browser.runtime.sendMessage({ action: "openLoginPage" });
// });
// async function disconnectFromLexicalDB() {
// await browser.storage.local.remove("accessToken");
// log("Token supprimé, déconnexion réussie.");
// alert("Déconnexion réussie.");
// updateContextMenu();
// // Envoi d'un message pour mettre à jour l'UI
// browser.runtime.sendMessage({ action: "updateUI" });
// }
// document.getElementById("toggleExtensionBtn").addEventListener("click", async () => {
// const { extensionActive } = await browser.storage.local.get("extensionActive");
// const newState = !extensionActive;
// await browser.storage.local.set({ extensionActive: newState });
// alert(`Extension ${newState ? "activée" : "désactivée"}.`);
// });
// document.getElementById("toggleStatsBtn").addEventListener("click", async () => {
// const { statsActive } = await browser.storage.local.get("statsActive");
// const newState = !statsActive;
// await browser.storage.local.set({ statsActive: newState });
// alert(`Statistiques ${newState ? "activées" : "désactivées"}.`);
// });
......@@ -360,7 +360,7 @@ function showNotification(message) {
function handleWorkerMessage(event) {
const data = event.data;
console.log("[Background] Message du WebWorker :", data);
log("[Background] Message du WebWorker :", data);
if (data.type === "process-text" && data.status === "error") {
browser.runtime.sendMessage({
......
......@@ -186,7 +186,7 @@ async function wikiApiResponse(word) {
const data = await response.json();
console.log(`Résultats du Wiktionnaire pour le mot "${word}" :`, data);
log(`Résultats du Wiktionnaire pour le mot "${word}" :`, data);
return data;
} catch (error) {
console.error('Erreur lors de la récupération de la définition depuis le Wiktionnaire :', error);
......@@ -240,11 +240,11 @@ function formatDefinitionData(apiResponse) {
async function fetchWiktionaryDefinition(word) {
try {
console.log(` Recherche de la définition pour : ${word}`);
log(` Recherche de la définition pour : ${word}`);
// Récupération des données depuis l'API
const apiResponse = await wikiApiResponse(word);
console.log("Réponse brute de l'API :", apiResponse);
log("Réponse brute de l'API :", apiResponse);
if (!Array.isArray(apiResponse) || apiResponse.length === 0) {
console.warn(`Aucune définition trouvée pour "${word}"`);
......@@ -253,7 +253,7 @@ async function fetchWiktionaryDefinition(word) {
// Formatage des données
const formattedData = formatDefinitionData(apiResponse);
console.log("Données formatées :", formattedData);
log("Données formatées :", formattedData);
return [
{
......
/**
* Mode debug : affiche les logs dans la console
* Mode prod : masque les logs
* Mode prod : masque les logs ainsi que les identifiants des lexiques
*/
const DEBUG = true; // false en prod
const DEBUG = false; // false en prod
function log(...args) {
if (DEBUG) {
......
......@@ -10,15 +10,15 @@
//Connexion au port
function connectToWorker() {
if (!workerPort) {
// console.log("[Stats] Connexion au WebWorker...");
// log("[Stats] Connexion au WebWorker...");
workerPort = browser.runtime.connect({ name: "stats-worker-port" });
workerPort.onMessage.addListener((message) => {
console.log("[Stats] Message reçu du Worker :", message);
log("[Stats] Message reçu du Worker :", message);
if (message.command === "update-frequencies") {
console.log("[Stats] Fréquences mises à jour :", message.frequencies);
log("[Stats] Fréquences mises à jour :", message.frequencies);
}
if (message.command === "threshold-exceeded") {
console.log("[Stats] Mots dépassant le seuil :", message.wordsAboveThreshold);
log("[Stats] Mots dépassant le seuil :", message.wordsAboveThreshold);
let alertMessage = "Nouveaux mots dépassant le seuil :\n";
for (const [lang, words] of Object.entries(message.wordsAboveThreshold)) {
alertMessage += `\n🔹 ${lang.toUpperCase()} : ${words.join(", ")}`;
......@@ -27,7 +27,7 @@
}
});
workerPort.onDisconnect.addListener(() => {
// console.log("[Stats] Déconnexion du WebWorker.");
// log("[Stats] Déconnexion du WebWorker.");
workerPort = null;
});
}
......@@ -38,7 +38,7 @@
connectToWorker();
}
if (workerPort) {
console.log("[Stats] Envoi du texte au Worker :", text);
log("[Stats] Envoi du texte au Worker :", text);
workerPort.postMessage({ command: "process-text", text: text });
}
}
......@@ -47,7 +47,7 @@
// Gestion des messages envoyés depuis le background
// ─────────────────────────────────────────────────────────────────────────────
browser.runtime.onMessage.addListener((message) => {
console.log("[Stats] Message reçu :", message);
log("[Stats] Message reçu :", message);
if (message.command === "activate-stats") {
startTracking();
}
......@@ -77,7 +77,7 @@
// Arrête tous les chronomètres lorsque l'utilisateur change d'onglet
document.addEventListener("visibilitychange", () => {
if (document.hidden) {
// console.log("[Stats] Changement d'onglet détecté");
// log("[Stats] Changement d'onglet détecté");
resetAllTimers();
}
});
......@@ -123,8 +123,12 @@
*/
function startReadingTimer(element, text, minReadTime) {
if (!readingTimers.has(element)) {
let elapsedTime = 0;
let counter = document.createElement("div");
let elapsedTime = 0;
let counter = null;
// Créer l'indicateur uniquement si on est en mode debug
if (DEBUG) {
counter = document.createElement("div");
counter.classList.add("reading-counter");
counter.style.position = "absolute";
counter.style.background = "black";
......@@ -133,31 +137,33 @@
counter.style.borderRadius = "5px";
counter.style.fontSize = "12px";
counter.style.zIndex = "9999";
document.body.appendChild(counter);
let interval = setInterval(() => {
elapsedTime += 1000;
// Vérifie si l'utilisateur est actif et si le temps minimum est atteint
if (userIsActive && elapsedTime >= minReadTime) {
console.log(`[Stats] Élément lu : ${text}`);
readContent.add(text);
sendTextToWorker(text);
stopReadingTimer(element, text);
}
// Mise à jour de la position du compteur
let rect = element.getBoundingClientRect();
counter.style.top = `${rect.top + window.scrollY - 20}px`;
counter.style.left = `${rect.left + window.scrollX + rect.width + 10}px`;
counter.innerText = `⏳ ${Math.floor(elapsedTime / 1000)}s`;
}, 1000);
readingTimers.set(element, { interval, counter, elapsedTime });
}
let interval = setInterval(() => {
elapsedTime += 1000;
// Vérifie si l'utilisateur est actif et si le temps minimum est atteint
if (userIsActive && elapsedTime >= minReadTime) {
log(`[Stats] Élément lu : ${text}`);
readContent.add(text);
sendTextToWorker(text);
stopReadingTimer(element, text);
}
// Mise à jour de la position et du contenu du compteur si en debug
if (DEBUG && counter) {
let rect = element.getBoundingClientRect();
counter.style.top = `${rect.top + window.scrollY - 20}px`;
counter.style.left = `${rect.left + window.scrollX + rect.width + 10}px`;
counter.innerText = `⏳ ${Math.floor(elapsedTime / 1000)}s`;
}
}, 1000);
readingTimers.set(element, { interval, counter, elapsedTime });
}
}
}
/**
* Arrête le chronomètre et supprime l'affichage du temps de lecture
......@@ -166,7 +172,9 @@
if (readingTimers.has(element)) {
let { interval, counter } = readingTimers.get(element);
clearInterval(interval);
counter.remove();
if (counter) {
counter.remove();
}
readingTimers.delete(element);
}
}
......@@ -176,7 +184,9 @@
function resetAllTimers() {
for (let [element, { interval, counter }] of readingTimers) {
clearInterval(interval);
counter.remove();
if (counter) {
counter.remove();
}
}
readingTimers.clear();
}
......@@ -187,7 +197,9 @@
function removeReadingIndicator(element) {
if (readingTimers.has(element)) {
let { counter } = readingTimers.get(element);
counter.remove();
if (counter) {
counter.remove();
}
}
}
/**
......@@ -207,13 +219,13 @@
// Gestion de l'activation/désactivation des statistiques
// ─────────────────────────────────────────────────────────────────────────────
function startTracking() {
console.log("[Stats] Suivi des statistiques activé.");
log("[Stats] Suivi des statistiques activé.");
addViewportBorder();
attachScrollListener();
}
function stopTracking() {
console.log("[Stats] Suivi des statistiques désactivé.");
log("[Stats] Suivi des statistiques désactivé.");
removeViewportBorder();
detachScrollListener();
}
......@@ -222,7 +234,7 @@
if (!scrollListenerAttached) {
window.addEventListener("scroll", trackVisibleContent);
scrollListenerAttached = true;
console.log("[Stats] Écouteur de défilement attaché.");
log("[Stats] Écouteur de défilement attaché.");
}
}
......@@ -230,7 +242,7 @@
if (scrollListenerAttached) {
window.removeEventListener("scroll", trackVisibleContent);
scrollListenerAttached = false;
console.log("[Stats] Écouteur de défilement détaché.");
log("[Stats] Écouteur de défilement détaché.");
}
}
......
console.log("✅ pyodide_worker.js chargé avec succès !");
log("✅ pyodide_worker.js chargé avec succès !");
// URL de la version Pyodide la plus récente
const LATEST_BASE_URL = "https://cdn.jsdelivr.net/pyodide/v0.27.2/full/";
......@@ -18,17 +18,17 @@ let stoplistFr = new Set(); // Stockage optimisé de la stoplist
// Écouteur des messages reçus du background script
self.onmessage = async (event) => {
const data = event.data;
console.log("[WebWorker] Message reçu du Background:", data);
log("[WebWorker] Message reçu du Background:", data);
if (data.command === "pyodide-simplemma") {
if (pyodideLoaded && simplemmaLoaded) {
console.log("[Worker] Pyodide et Simplemma déjà chargés.");
log("[Worker] Pyodide et Simplemma déjà chargés.");
self.postMessage({ type: "pyodide-simplemma", status: "already_loaded", message: "Pyodide et Simplemma déjà en mémoire" });
return;
}
try {
if (!pyodideLoaded) {
console.log("[Worker] Chargement de Pyodide...");
log("[Worker] Chargement de Pyodide...");
try {
importScripts(`${LATEST_BASE_URL}pyodide.js`);
pyodide = await loadPyodide({ indexURL: LATEST_BASE_URL });
......@@ -40,11 +40,11 @@ self.onmessage = async (event) => {
self.postMessage({ type: "pyodide-simplemma", status: "error", message: err.toString() });
return;
}
console.log("[Worker] Pyodide chargé avec succès !");
log("[Worker] Pyodide chargé avec succès !");
}
if (!simplemmaLoaded) {
console.log("[Worker] Installation de simplemma...");
log("[Worker] Installation de simplemma...");
// On encapsule la logique dans une fonction asynchrone pour faciliter l'usage d'await
await pyodide.runPythonAsync(`
......@@ -71,7 +71,7 @@ async def main():
await main()
`);
simplemmaLoaded = true;
console.log("[Worker] Simplemma installé avec succès !");
log("[Worker] Simplemma installé avec succès !");
}
// Envoyer confirmation au background script
self.postMessage({ type: "pyodide-simplemma", status: "success", message: "Pyodide et Simplemma chargés" });
......@@ -85,14 +85,14 @@ await main()
if (data.command === "process-text") {
if (!pyodideLoaded || !simplemmaLoaded) {
const errorMessage = "Les statistiques ne sont pas encore activées. Veuillez patienter..."
console.log("[Worker] Pyodide non chargé.");
log("[Worker] Pyodide non chargé.");
self.postMessage({ type: "process-text", status: "error", message: errorMessage });
return;
}
console.log("[Worker] Texte reçu pour analyse :", data.text);
log("[Worker] Texte reçu pour analyse :", data.text);
try {
const stoplistArray = Array.from(stoplistFr);
console.log("Stoplist utilisée :", stoplistArray);
log("Stoplist utilisée :", stoplistArray);
const result = await pyodide.runPythonAsync(`
import json
import re
......@@ -149,26 +149,26 @@ json.dumps({"lang": detected_lang, "frequencies": freq}, ensure_ascii=False)
trackedLanguages = data.trackedLanguages;
autoAddEnabled = data.autoAdd;
isAuthenticated = data.isAuthenticated;
console.log("[Worker] Mise à jour des préférences :", { userThreshold, trackedLanguages, autoAddEnabled, isAuthenticated });
log("[Worker] Mise à jour des préférences :", { userThreshold, trackedLanguages, autoAddEnabled, isAuthenticated });
}
if (data.command === "update-stoplist") {
stoplistFr = new Set(data.stoplist.map(word => word.toLowerCase().trim()));
console.log("[Worker] Stoplist FR mise à jour :", stoplistFr);
log("[Worker] Stoplist FR mise à jour :", stoplistFr);
}
};
// --- Vérification du seuil et notification ---
function checkThreshold(lang) {
if (!autoAddEnabled || !isAuthenticated) {
console.log("[Worker] Auto-Add désactivé ou utilisateur non connecté. Aucune vérification de seuil.");
log("[Worker] Auto-Add désactivé ou utilisateur non connecté. Aucune vérification de seuil.");
return;
}
if (!trackedLanguages.includes(lang)) {
console.log(`[Worker] La langue ${lang} n'est pas suivie.`);
log(`[Worker] La langue ${lang} n'est pas suivie.`);
return;
}
console.log(`[Worker] Vérification des fréquences pour la langue ${lang}...`);
log(`[Worker] Vérification des fréquences pour la langue ${lang}...`);
let wordsAboveThreshold = {};
if (storedFrequencies[lang]) {
const exceededWords = Object.entries(storedFrequencies[lang])
......@@ -183,9 +183,9 @@ function checkThreshold(lang) {
}
}
if (Object.keys(wordsAboveThreshold).length > 0) {
console.log("[Worker] Nouveaux mots dépassant le seuil :", wordsAboveThreshold);
log("[Worker] Nouveaux mots dépassant le seuil :", wordsAboveThreshold);
self.postMessage({ type: "threshold-exceeded", wordsAboveThreshold: wordsAboveThreshold });
} else {
console.log("[Worker] Aucun nouveau mot n'a dépassé le seuil.");
log("[Worker] Aucun nouveau mot n'a dépassé le seuil.");
}
}
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