diff --git "a/barre_lat\303\251rale/sidebar.js" "b/barre_lat\303\251rale/sidebar.js" index a6ac96e83d6d2bb2a91b53a52b8c3b3b71a65477..6768d2fe86cbd9c86d166fdb200da32fc671bdee 100644 --- "a/barre_lat\303\251rale/sidebar.js" +++ "b/barre_lat\303\251rale/sidebar.js" @@ -507,35 +507,17 @@ browser.runtime.onMessage.addListener(async (message) => { console.log("📚 Résultat des lexiques reçus :", message.lexicons); window.displayLexiconResults(message.lexicons); break; - + + case "addToLexicon": + handleAddWordClick(); + break; + case "toggleAuth": break; case "authStatusChanged": break; - case "wordAdded": - { - // Affichage du message de succès dans la sidebar - const lexiconResultElement = document.getElementById("lexiconResult"); - if (lexiconResultElement) { - lexiconResultElement.innerHTML += - "<br>✅ Mot <strong>" + message.selectedWord + "</strong> ajouté avec succès dans : " + - message.lexiconIds.join(", ") + "."; - } - } - break; - - case "wordAddFailed": - { - // Affichage du message d'erreur dans la sidebar - const lexiconResultElement = document.getElementById("lexiconResult"); - if (lexiconResultElement) { - lexiconResultElement.textContent = "Erreur lors de l'ajout du mot : " + message.error; - } - } - break; - default: console.warn("âš ï¸ Action inconnue reçue :", message.action); } diff --git a/menu_contextuel/browser_context_menu.js b/menu_contextuel/browser_context_menu.js index 85285248a0b135cf4eaf9e8a15cc4c0b70157db4..4f9f7c6116b6dc6b9be08ed9fb8dee7702adc717 100644 --- a/menu_contextuel/browser_context_menu.js +++ b/menu_contextuel/browser_context_menu.js @@ -34,54 +34,12 @@ async function createContextMenu() { icons: { "16": "icons/quel_lexique.png" }, }); - // Menu parent pour ajouter le mot dans les lexiques choisis + // Item 2 : Ajouter le mot au(x) lexique(s) de l’utilisateur browser.contextMenus.create({ - id: "parentAddLexicon", - title: "Ajouter ce mot à …", + id: "addToLexicon", + title: "Ajouter ce mot à mes lexiques", contexts: ["selection"], - }); - - // Récupérer dynamiquement les lexiques - let lexicons = []; - try { - lexicons = await window.getLexicons(authToken); - } catch (error) { - console.error("Erreur lors de la récupération des lexiques :", error); - } - - if (Array.isArray(lexicons) && lexicons.length > 0) { - lexicons.forEach(lexicon => { - let title = ""; - if (lexicon.category === "User") { - title = `Lexique personnel (${(lexicon.user && lexicon.user.pseudo) || "Inconnu"}) [${lexicon.id}]`; - } else { - title = `Lexique de groupe (${(lexicon.group && lexicon.group.name) || "Inconnu"}) [${lexicon.id}]`; - } - browser.contextMenus.create({ - id: `addWord_${lexicon.id}`, - title: title, - type: "checkbox", - contexts: ["selection"], - parentId: "parentAddLexicon", - checked: false - }); - }); - } else { - browser.contextMenus.create({ - id: "noLexiconsFound", - title: "Aucun lexique trouvé", - contexts: ["selection"], - parentId: "parentAddLexicon", - enabled: false - }); - } - - // Item de confirmation pour lancer l'ajout dans les lexiques sélectionnés - browser.contextMenus.create({ - id: "confirmAddWord", - title: "Confirmer l'ajout", - contexts: ["selection"], - parentId: "parentAddLexicon", + icons: { "16": "icons/ajout_lexique.png" }, }); } @@ -151,9 +109,33 @@ browser.contextMenus.onClicked.addListener(async (info, tab) => { console.warn("Aucun texte sélectionné pour cette action :", info.menuItemId); return; } + const selectedText = info.selectionText.trim(); console.log(`📩 Texte sélectionné : ${selectedText}`); + // Item "Ajouter ce mot à mes lexiques" + if (info.menuItemId === "addToLexicon") { + if (!authToken) { + alert("âš ï¸ Vous devez être connecté pour ajouter un mot à un lexique."); + return; + } + browser.runtime.sendMessage({ + action: "addToLexicon", + selectedText, + }); + return; + } + + // Item "Obtenir une définition" + if (info.menuItemId === "getDefinition") { + await browser.runtime.sendMessage({ + action: "getDefinition", + selectedText, + }); + return; + } + + // Item "Rechercher dans mes lexiques" switch (info.menuItemId) { case "searchInLexicons": if (!authToken) { @@ -162,106 +144,9 @@ browser.contextMenus.onClicked.addListener(async (info, tab) => { } await searchInLexicons(selectedText); break; - - case "confirmAddWord": - if (!authToken) { - alert("âš ï¸ Vous devez être connecté pour utiliser cette fonction."); - return; - } - if (!selectedText || selectedText === "Aucun mot sélectionné") { - console.warn("âš ï¸ Aucun mot à ajouter."); - browser.runtime.sendMessage({ - action: "wordAddFailed", - error: "Aucun mot à ajouter." - }); - return; - } - if (selectedLexicons.size === 0) { - alert("Veuillez sélectionner au moins un lexique."); - return; - } - { - // Vérifier si le mot existe déjà dans les lexiques sélectionnés - let definitions = []; - try { - definitions = await window.fetchLexiconDefinitions(selectedText); - } catch (error) { - console.error("Erreur lors de la récupération des définitions pour vérification :", error); - } - const existingLexiconIds = new Set(); - if (Array.isArray(definitions)) { - for (const def of definitions) { - if (selectedLexicons.has(def.lexiconId)) { - existingLexiconIds.add(def.lexiconId); - } - } - } - if (existingLexiconIds.size > 0) { - alert(`Le mot "${selectedText}" existe déjà dans le(s) lexique(s) : ${Array.from(existingLexiconIds).join(", ")}`); - browser.runtime.sendMessage({ - action: "wordAlreadyExists", - selectedWord: selectedText, - lexiconIds: Array.from(existingLexiconIds) - }); - return; - } - // On détermine quels lexiques ajouter (ceux non existants) - const lexiconsToAdd = Array.from(selectedLexicons).filter(id => !existingLexiconIds.has(id)); - if (lexiconsToAdd.length === 0) { - return; // Rien à ajouter - } - // Envoi de la requête d'ajout - try { - console.log(`📡 Envoi de l'ajout du mot "${selectedText}" dans le(s) lexique(s) :`, lexiconsToAdd); - const result = await window.AddWord(authToken, selectedText, lexiconsToAdd, false); - console.log("✅ Réponse API :", result); - await browser.runtime.sendMessage({ action: "refreshUI" }); - browser.runtime.sendMessage({ - action: "wordAdded", - selectedWord: selectedText, - lexiconIds: lexiconsToAdd, - result - }); - // Réinitialiser la sélection après ajout - selectedLexicons.clear(); - } catch (error) { - console.error("⌠Erreur lors de l’ajout du mot :", error); - alert("⌠Une erreur est survenue lors de l’ajout du mot : " + error.message); - browser.runtime.sendMessage({ - action: "wordAddFailed", - selectedWord: selectedText, - lexiconIds: Array.from(selectedLexicons), - error: error.message - }); - } - } - break; - - default: - // Gérer les items de type "checkbox" - if (info.menuItemId.startsWith("addWord_")) { - const lexiconId = parseInt(info.menuItemId.replace("addWord_", ""), 10); - if (isNaN(lexiconId)) { - console.error("⌠ID de lexique invalide :", info.menuItemId); - return; - } - if (info.checked) { - selectedLexicons.add(lexiconId); - } else { - selectedLexicons.delete(lexiconId); - } - console.log("Lexicons sélectionnés :", Array.from(selectedLexicons)); - } else if (info.menuItemId === "getDefinition") { - await browser.runtime.sendMessage({ - action: "getDefinition", - selectedText: info.selectionText.trim(), - }); - return; - } else { - console.error(`⌠Action inconnue : ${info.menuItemId}`); - } - break; - } + } + + console.error(`⌠Action inconnue : ${info.menuItemId}`); }); // ─────────────────────────────────────────────────────────────────────────────