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

Redirection ajout menu navigateur vers barre latérale

parent 5893ca87
No related branches found
No related tags found
2 merge requests!8Test final,!5Ajout manuel d'un mot dans un ou plusieurs lexique(s)
......@@ -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);
}
......
......@@ -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}`);
});
// ─────────────────────────────────────────────────────────────────────────────
......
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