diff --git a/menu_contextuel/browser_context_menu.js b/menu_contextuel/browser_context_menu.js index 0829ce3b891749a3b87a880cfd0be34ae0482322..a2ba1fab3be52725c98a005b6603114c0e824100 100644 --- a/menu_contextuel/browser_context_menu.js +++ b/menu_contextuel/browser_context_menu.js @@ -1,9 +1,5 @@ console.log("browser_context_menu.js chargé correctement"); -// ───────────────────────────────────────────────────────────────────────────── -// Variable globale qui contient le token pour les requêtes API -// (Utilisée par fetchLexiconDefinitions, etc.) -// ───────────────────────────────────────────────────────────────────────────── let authToken = null; /** @@ -23,7 +19,6 @@ async function loadAuthToken() { // Création du menu contextuel en fonction de l'authentification // ───────────────────────────────────────────────────────────────────────────── async function createContextMenu() { - // Supprime tous les items existants afin de recréer le menu complet await browser.contextMenus.removeAll(); if (authToken) { @@ -44,7 +39,6 @@ async function createContextMenu() { }); } - // Séparateur browser.contextMenus.create({ id: "separatorExtension", type: "separator", @@ -59,14 +53,12 @@ async function createContextMenu() { icons: { "16": "icons/definition.png" }, }); - // Séparateur browser.contextMenus.create({ id: "separatorAfterExtension", type: "separator", contexts: ["all"], }); - // Item de connexion/déconnexion browser.contextMenus.create({ id: "login", title: authToken ? "Se déconnecter de BaLex" : "Se connecter à BaLex", @@ -74,10 +66,8 @@ async function createContextMenu() { }); } -// Charger le token au démarrage puis créer le menu contextuel loadAuthToken().then(createContextMenu); -// Listener pour mettre à jour le menu quand un message "refreshUI" est reçu browser.runtime.onMessage.addListener((message) => { if (message.action === "refreshUI") { console.log("🔄 refreshUI reçu dans browser_context_menu.js"); @@ -85,7 +75,6 @@ browser.runtime.onMessage.addListener((message) => { } }); -// Quand le token change dans le storage browser.storage.onChanged.addListener((changes, area) => { if (area === "local" && changes.accessToken) { console.log("🔄 Token modifié, actualisation du menu contextuel."); @@ -94,12 +83,11 @@ browser.storage.onChanged.addListener((changes, area) => { }); // ───────────────────────────────────────────────────────────────────────────── -// GESTION DES CLICS SUR LE MENU CONTEXTUEL +// Gestion des clics sur le menu contextuel // ───────────────────────────────────────────────────────────────────────────── browser.contextMenus.onClicked.addListener(async (info, tab) => { console.log("Item de menu cliqué :", info.menuItemId); - // Cas de l’item login/déconnexion if (info.menuItemId === "login") { console.log("🔄 Action login/déconnexion demandée."); if (typeof actuallyOpenLoginPage === "function") { @@ -110,14 +98,12 @@ browser.contextMenus.onClicked.addListener(async (info, tab) => { return; } - // Les items ci-dessous nécessitent un texte sélectionné if (!info.selectionText) { console.warn("Aucun texte sélectionné pour cette action :", info.menuItemId); return; } console.log(`📩 Texte sélectionné : ${info.selectionText}`); - // Rediriger vers la fonction appropriée switch (info.menuItemId) { case "searchInLexicons": if (!authToken) { @@ -136,8 +122,6 @@ browser.contextMenus.onClicked.addListener(async (info, tab) => { break; case "getDefinition": - // Pas forcément besoin d'être connecté, car on peut récupérer - // la définition via Wiktionnaire même sans authToken. await getDefinition(info.selectionText); break; @@ -147,12 +131,12 @@ browser.contextMenus.onClicked.addListener(async (info, tab) => { }); // ───────────────────────────────────────────────────────────────────────────── -// FONCTIONS ADAPTÉES AUX NOUVELLES APPELS DE definitions.js +// Fonctions liées aux définitions (definitions.js) // ───────────────────────────────────────────────────────────────────────────── /** * 1) Recherche de la définition combinée (lexiques + Wiktionnaire) - * et envoi des résultats à la sidebar (ou autre script) pour affichage. + * et envoi des résultats pour affichage. */ async function getDefinition(selectedText) { try { @@ -161,14 +145,7 @@ async function getDefinition(selectedText) { lexiconDefs = await fetchLexiconDefinitions(selectedText); } - const wiktionaryDef = await fetchWiktionaryDefinition(selectedText); - - let wikiDefs = []; - if (wiktionaryDef && typeof wiktionaryDef === "string") { - if (!wiktionaryDef.startsWith("âš ï¸")) { - wikiDefs.push({ source: "Wiktionnaire", text: wiktionaryDef }); - } - } + const wikiDefs = await fetchWiktionaryDefinition(selectedText); const allDefinitions = [...lexiconDefs, ...wikiDefs]; console.log("📠Définitions combinées :", allDefinitions); @@ -185,8 +162,6 @@ async function getDefinition(selectedText) { /** * 2) Recherche dans les lexiques pour savoir dans quels lexiques se trouve le mot. - * On utilise fetchLexiconDefinitions pour récupérer les définitions - * et déduire ainsi les lexiques (source). */ async function searchInLexicons(selectedText) { try { @@ -203,8 +178,6 @@ async function searchInLexicons(selectedText) { return; } - // On veut regrouper par lexiconId => name - // => On suppose que each definition = { source, text, lexiconId } const lexMap = new Map(); for (const def of allDefinitions) { if (def.lexiconId) { @@ -212,7 +185,6 @@ async function searchInLexicons(selectedText) { } } - // Transformer en tableau { id, name } const foundInLexicons = []; for (const [id, name] of lexMap.entries()) { foundInLexicons.push({ id, name }); @@ -237,8 +209,6 @@ async function searchInLexicons(selectedText) { /** * 3) Ajouter un mot dans le lexique personnel. - * Cette partie n’existe pas (encore) dans definitions.js, - * donc on la conserve ou on l’adapte si vous avez un endpoint pour ça. */ async function addWordToLexicon(selectedText) { try {