Skip to content
Snippets Groups Projects

Affichage stats

Merged Lucie Bader requested to merge affichage_stats into main
17 files
+ 1559
763
Compare changes
  • Side-by-side
  • Inline
Files
17
+ 122
41
@@ -43,18 +43,18 @@ browser.storage.onChanged.addListener((changes) => {
@@ -43,18 +43,18 @@ browser.storage.onChanged.addListener((changes) => {
});
});
browser.storage.onChanged.addListener((changes, area) => {
browser.storage.onChanged.addListener((changes, area) => {
// Vérifie si les changements concernent le stockage local et le token d'accès
// Vérifie si les changements concernent le stockage local et le token d'accès
if (area === "local" && changes.accessToken) {
if (area === "local" && changes.accessToken) {
const newToken = changes.accessToken.newValue; // Récupère la nouvelle valeur du token
const newToken = changes.accessToken.newValue; // Récupère la nouvelle valeur du token
if (newToken) {
if (newToken) {
// Vérifie l'état de l'extension dans le stockage local
// Vérifie l'état de l'extension dans le stockage local
browser.storage.local.get("extensionActive").then(({ extensionActive }) => {
browser.storage.local.get("extensionActive").then(({ extensionActive }) => {
// Si l'extension n'est pas active, l'active automatiquement
// Si l'extension n'est pas active, l'active automatiquement
if (!extensionActive) {
if (!extensionActive) {
log("Token ajouté, activation automatique de l'extension.");
log("Token ajouté, activation automatique de l'extension.");
browser.storage.local.set({ extensionActive: true }); // Met à jour l'état de l'extension
browser.storage.local.set({ extensionActive: true }); // Met à jour l'état de l'extension
updateExtension(); // Met à jour les fonctionnalités de l'extension
updateExtension(); // Met à jour les fonctionnalités de l'extension
// Envoie un message pour mettre à jour l'interface utilisateur
// Envoie un message pour mettre à jour l'interface utilisateur
browser.runtime.sendMessage({
browser.runtime.sendMessage({
action: "updateUI",
action: "updateUI",
extensionActive: true,
extensionActive: true,
@@ -191,7 +191,7 @@ async function saveToken(token) {
@@ -191,7 +191,7 @@ async function saveToken(token) {
const { extensionActive } = await browser.storage.local.get("extensionActive");
const { extensionActive } = await browser.storage.local.get("extensionActive");
if (!extensionActive) {
if (!extensionActive) {
await browser.storage.local.set({ extensionActive: true }); // Met à jour l'état de l'extension
await browser.storage.local.set({ extensionActive: true }); // Met à jour l'état de l'extension
updateExtension(); // Met à jour les fonctionnalités de l'extension
updateExtension(); // Met à jour les fonctionnalités de l'extension
browser.runtime.sendMessage({
browser.runtime.sendMessage({
action: "updateUI",
action: "updateUI",
extensionActive: true,
extensionActive: true,
@@ -508,10 +508,6 @@ browser.runtime.onMessage.addListener(async (message, sender, sendResponse) => {
@@ -508,10 +508,6 @@ browser.runtime.onMessage.addListener(async (message, sender, sendResponse) => {
const { isActive } = message;
const { isActive } = message;
// Met à jour l'état du suivi des statistiques dans le stockage local
// Met à jour l'état du suivi des statistiques dans le stockage local
await browser.storage.local.set({ isTrackingActive: isActive });
await browser.storage.local.set({ isTrackingActive: isActive });
// Si les statistiques sont désactivées, désactive également l'ajout automatique
if (!isActive) {
await browser.storage.local.set({ autoAdd: false });
}
// Vérifie et met à jour l'état du suivi des statistiques
// Vérifie et met à jour l'état du suivi des statistiques
checkAndUpdateTracking();
checkAndUpdateTracking();
}
}
@@ -525,6 +521,113 @@ browser.runtime.onMessage.addListener(async (message, sender, sendResponse) => {
@@ -525,6 +521,113 @@ browser.runtime.onMessage.addListener(async (message, sender, sendResponse) => {
return true;
return true;
});
});
 
// ─────────────────────────────────────────────────────────────────────────────
 
// Fonction : Chargement des lexiques personnels dans le local storage
 
// ─────────────────────────────────────────────────────────────────────────────
 
async function saveUserLexicons() {
 
const { accessToken } = await browser.storage.local.get("accessToken");
 
if (!accessToken) {
 
console.warn("Aucun token disponible, impossible de récupérer les lexiques.");
 
return;
 
}
 
log("Récupération des lexiques...");
 
const lexicons = await getLexicons(accessToken);
 
const userLexicons = lexicons.filter(lexicon => lexicon.category === "User");
 
if (userLexicons.length > 0) {
 
await browser.storage.local.set({ lexicons: userLexicons });
 
log("Lexiques enregistrés dans le local storage :", userLexicons);
 
} else {
 
log("Aucun lexique utilisateur trouvé.");
 
}
 
 
}
 
 
 
// ─────────────────────────────────────────────────────────────────────────────
 
// Envoi des données au WebWorker : lexiques personnels et token
 
// ─────────────────────────────────────────────────────────────────────────────
 
 
// Charger et envoyer les lexiques au worker à la connexion + les stoplists associées
 
browser.storage.onChanged.addListener(async (changes, area) => {
 
if (area === "local" && changes.accessToken) {
 
log("Token mis à jour, récupération des lexiques...");
 
const userLexicons = await saveUserLexicons(); // Récupérer les lexiques
 
sendLexiconsToWorker(userLexicons); // Envoyer les lexiques au Worker après une connexion
 
sendAuthTokenToWorker();
 
}
 
});
 
 
// Envoyer les lexiques et stoplists au Worker
 
async function sendLexiconsToWorker(userLexicons = null) {
 
if (!userLexicons) {
 
const storedData = await browser.storage.local.get("lexicons");
 
userLexicons = storedData.lexicons || [];
 
}
 
if (!Array.isArray(userLexicons) || userLexicons.length === 0) {
 
console.warn("[Background] Aucun lexique à envoyer au Worker.");
 
return;
 
}
 
log("[Background] Envoi des lexiques au Worker...");
 
if (worker) {
 
worker.postMessage({
 
command: "update-lexicons",
 
lexicons: JSON.stringify(userLexicons)
 
});
 
 
// Charger et envoyer uniquement les stoplists des langues des lexiques utilisateur
 
const languages = [...new Set(userLexicons.map(lexicon => lexicon.language))];
 
log("[Background] Langues détectées :", languages);
 
loadStoplistsForLanguages(languages);
 
log("Lexiques envoyés au WebWorker !");
 
}
 
}
 
 
 
// Charger et envoyer le token au worker à la connexion
 
async function sendAuthTokenToWorker() {
 
if (!worker) {
 
console.warn("Worker non initialisé. Impossible d'envoyer le token.");
 
return;
 
}
 
const { accessToken } = await browser.storage.local.get("accessToken");
 
if (!accessToken) {
 
console.warn("Aucun token disponible. Le worker ne pourra pas interagir avec l’API.");
 
return;
 
}
 
log("Envoi du token au Worker...");
 
worker.postMessage({ command: "update-auth-token", accessToken });
 
}
 
 
// ─────────────────────────────────────────────────────────────────────────────
 
// Stoplists : Chargement et envoi au Worker
 
// ─────────────────────────────────────────────────────────────────────────────
 
async function loadStoplistsForLanguages(languages) {
 
const stoplists = {};
 
// Charger toutes les stoplists en parallèle
 
await Promise.all(
 
languages.map(async (lang) => {
 
const stoplistPath = `src/stoplists/stoplist_${lang}.txt`;
 
try {
 
const response = await fetch(browser.runtime.getURL(stoplistPath));
 
const text = await response.text();
 
stoplists[lang] = text.split("\n").map(word => word.trim());
 
log(`[Background] Stoplist chargée pour '${lang}' : ${stoplists[lang].length} mots`);
 
} catch (error) {
 
console.warn(`[Background] ⚠ Stoplist introuvable pour '${lang}', aucun filtrage ne sera appliqué.`);
 
}
 
})
 
);
 
sendStoplistsToWorker(stoplists);
 
}
 
 
function sendStoplistsToWorker(stoplists) {
 
log("[Background] Envoi des stoplists au Worker...");
 
worker.postMessage({ command: "update-stoplist", stoplists });
 
}
 
 
// Charger les stoplists uniquement quand les lexiques sont disponibles
 
browser.runtime.onStartup.addListener(sendLexiconsToWorker);
 
browser.runtime.onInstalled.addListener(sendLexiconsToWorker);
// ─────────────────────────────────────────────────────────────────────────────
// ─────────────────────────────────────────────────────────────────────────────
// Chargement et sauvegarde des fréquences stockées
// Chargement et sauvegarde des fréquences stockées
@@ -608,6 +711,16 @@ browser.storage.onChanged.addListener(async (changes, area) => {
@@ -608,6 +711,16 @@ browser.storage.onChanged.addListener(async (changes, area) => {
autoAdd: autoAdd || false
autoAdd: autoAdd || false
});
});
}
}
 
 
//Écoute sur le bouton d'inclusion des mots outils
 
if (area === "local" && changes.includeStopwords) {
 
const includeStopwords = changes.includeStopwords.newValue;
 
log(`[Background] Inclusion des mots outils activé/désactivé: ${includeStopwords}`);
 
 
if (worker) {
 
worker.postMessage({ command: "update-include-stopwords", includeStopwords });
 
}
 
}
});
});
// ─────────────────────────────────────────────────────────────────────────────
// ─────────────────────────────────────────────────────────────────────────────
@@ -649,38 +762,6 @@ browser.runtime.onConnect.addListener((port) => {
@@ -649,38 +762,6 @@ browser.runtime.onConnect.addListener((port) => {
}
}
});
});
// ─────────────────────────────────────────────────────────────────────────────
// Stoplists : Chargement et envoi au Worker
// ─────────────────────────────────────────────────────────────────────────────
let stoplistFr = [];
/**
* Charge la stoplist depuis un fichier et l'envoie au Worker.
* @returns {void}
*/
function loadStoplist() {
fetch(browser.runtime.getURL("stoplist_fr.txt"))
.then(response => response.text())
.then(text => {
stoplistFr = text.split("\n").map(word => word.trim());
log("[Background] Stoplist chargée :", stoplistFr);
sendStoplistToWorker();
})
.catch(error => log("[Background] Erreur lors du chargement de la stoplist :", error));
}
/**
* Envoie la stoplist au Worker.
* @returns {void}
*/
function sendStoplistToWorker() {
log("[Background] Envoi de la stoplist au Worker...");
worker.postMessage({ command: "update-stoplist", stoplist: stoplistFr });
}
browser.runtime.onStartup.addListener(loadStoplist);
browser.runtime.onInstalled.addListener(loadStoplist);
// ─────────────────────────────────────────────────────────────────────────────
// ─────────────────────────────────────────────────────────────────────────────
// Surlignage
// Surlignage
// ─────────────────────────────────────────────────────────────────────────────
// ─────────────────────────────────────────────────────────────────────────────
Loading