Skip to content
Snippets Groups Projects
Commit 705c5057 authored by Prénom Nom's avatar Prénom Nom
Browse files

amélioration ajout automatique

parent 4fa64f1d
No related branches found
No related tags found
1 merge request!9Affichage stats
This diff is collapsed.
console.log("✅ api.js chargé correctement");
log("✅ api.js chargé correctement");
window.authToken = null;
// ─────────────────────────────────────────────────────────────────────────────
// ▌ Sélection de texte sur la page
// ─────────────────────────────────────────────────────────────────────────────
......@@ -30,9 +31,9 @@ async function callApi(url, authToken = null, method = 'GET', data = null) {
if (authToken) headers.Authorization = `Bearer ${authToken}`;
const fetchOptions = { method, headers };
console.log("Envoi de la requête vers :", url);
log("Envoi de la requête vers :", url);
if (data) {
console.log("Body JSON :", JSON.stringify(data, null, 2));
log("Body JSON :", JSON.stringify(data, null, 2));
fetchOptions.body = JSON.stringify(data);
}
......@@ -48,39 +49,52 @@ async function callApi(url, authToken = null, method = 'GET', data = null) {
}
}
// ─────────────────────────────────────────────────────────────────────────────
// ▌ Récupération des lexiques de l'utilisateur
// ─────────────────────────────────────────────────────────────────────────────
/**
* Récupère les lexiques pour l’utilisateur 4,
* Récupère les lexiques de l’utilisateur,
* en langue par défaut "fr".
*
* @param {string} authToken - Le token d'authentification.
* @param {string} [language='fr'] - La langue (optionnel).
* @returns {Promise<any[]>} - Liste des lexiques trouvés.
*/
async function getLexicons(authToken, language = 'fr') {
const userId = 4;
const baseUrl = "https://babalex.lezinter.net/api/lexicon/search";
const url = `${baseUrl}?user_id=${userId}&language=${encodeURIComponent(language)}`;
async function getLexicons(authToken) {
// Vérifier si les lexiques sont déjà en cache
const { lexicons } = await browser.storage.local.get("lexicons");
if (Array.isArray(lexicons) && lexicons.length > 0) {
console.log("📌 Lexiques récupérés depuis le cache local :", lexicons);
return lexicons; // Retourne les lexiques en cache pour éviter une requête API inutile
}
return callApi(url, authToken);
const url = "https://babalex.lezinter.net/api/lexicon/search";
try {
const response = await callApi(url, authToken);
console.log("✅ Réponse de getLexicons :", response);
if (Array.isArray(response) && response.length > 0) {
await browser.storage.local.set({ lexicons: response }); // Stocker en cache
}
return response;
} catch (error) {
return [];
}
}
/**
* Récupère tous les lexiques pour l’utilisateur 4
* Récupère tous les lexiques (catégories) de l’utilisateur
*/
async function getAllCategoriesLexicons(authToken) {
const categories = ["User", "Group", "Zero", "New words"];
const userId = 4;
const groupId = 1;
const promises = categories.map(async (category) => {
const baseUrl = "https://babalex.lezinter.net/api/lexicon/search";
const url = `${baseUrl}?user_id=${userId}&group_id=${groupId}&category=${encodeURIComponent(category)}&language=fr`;
const url = `${baseUrl}?&category=${encodeURIComponent(category)}&language=fr`;
try {
return await callApi(url, authToken);
......@@ -94,7 +108,7 @@ async function getAllCategoriesLexicons(authToken) {
const resultsByCategory = await Promise.all(promises);
const combined = resultsByCategory.flat();
console.log("✅ Lexiques récupérés (toutes catégories confondues) :", combined);
log("✅ Lexiques récupérés (toutes catégories confondues) :", combined);
return combined;
} catch (error) {
console.error("❌ Erreur lors de la récupération multi-catégories :", error);
......@@ -102,31 +116,6 @@ async function getAllCategoriesLexicons(authToken) {
}
}
/**
* Récupère des lexiques personnels "user" de l'utilisateur
*/
async function getUserLexicons(authToken) {
try {
if (!authToken) {
console.warn("⚠️ Aucun token disponible, récupération des lexiques annulée.");
return [];
}
const lexicons = await callApi("https://babalex.lezinter.net/api/user/lexicons", authToken);
if (!Array.isArray(lexicons) || lexicons.length === 0) {
console.warn("⚠️ Aucun lexique personnel trouvé.");
return [];
}
console.log("📚 Lexiques personnels récupérés :", lexicons);
return lexicons;
} catch (error) {
console.error("❌ Erreur lors de la récupération des lexiques personnels :", error);
return [];
}
}
// ─────────────────────────────────────────────────────────────────────────────
// ▌ Récupération des entrées d'un lexique
......@@ -144,13 +133,9 @@ async function getLexiconEntries(authToken, lexiconId) {
* Récupère toutes les graphies présentes dans tous les lexiques de l'utilisateur.
*/
async function getAllLexiconWords(authToken) {
const searchUrl = "https://babalex.lezinter.net/api/lexicon/search"
+ "?user_id=4"
+ "&language=fr";
try {
// 1) Récupération de la liste des lexiques
const lexicons = await callApi(searchUrl, authToken);
const lexicons = await getLexicons(authToken);
if (!Array.isArray(lexicons) || lexicons.length === 0) {
console.warn("⚠️ Aucun lexique retourné par l’API pour ces paramètres.");
......@@ -173,7 +158,7 @@ async function getAllLexiconWords(authToken) {
allGraphiesByLexicon[lexiconName] = allGraphies;
}
console.log("✅ Toutes les graphies récupérées :", allGraphiesByLexicon);
log("✅ Toutes les graphies récupérées :", allGraphiesByLexicon);
return allGraphiesByLexicon;
} catch (error) {
console.error("❌ Erreur lors de la récupération des graphies des lexiques :", error);
......@@ -201,7 +186,7 @@ async function getWiktionaryDefinition(word) {
const page = pages ? Object.values(pages)[0] : null;
const definition = page?.extract?.trim() || "Aucune définition trouvée.";
console.log(`📖 Définition trouvée pour '${word}':`, definition);
log(`📖 Définition trouvée pour '${word}':`, definition);
return [definition];
} catch (error) {
console.error("Erreur lors de la récupération du Wiktionnaire :", error);
......@@ -237,7 +222,7 @@ async function AddWord(authToken, selectedWord, lexiconIds, force = false) {
force,
target_lex: lexiconIds
};
log("Body envoyé à AddWord :", body);
return callApi(url, authToken, "POST", body);
}
......@@ -249,10 +234,10 @@ async function AddWord(authToken, selectedWord, lexiconIds, force = false) {
window.callApi = callApi;
window.getLexicons = getLexicons;
console.log("getLexicons exposée, type:", typeof window.getLexicons);
window.getAllCategoriesLexicons = getAllCategoriesLexicons;
window.getLexiconEntries = getLexiconEntries;
window.getAllLexiconWords = getAllLexiconWords;
window.getWiktionaryDefinition = getWiktionaryDefinition;
window.AddWord = AddWord;
......@@ -20,9 +20,17 @@
if (message.command === "threshold-exceeded") {
console.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)) {
if (typeof message.wordsAboveThreshold !== "object" || message.wordsAboveThreshold === null) {
return;
}
for (const [lang, words] of Object.entries(message.wordsAboveThreshold)) {
if (!Array.isArray(words)) {
continue;
}
alertMessage += `\n🔹 ${lang.toUpperCase()} : ${words.join(", ")}`;
}
alert(alertMessage);
}
});
......@@ -248,29 +256,86 @@
}
// Indice visuel des statistiques actives
function injectBorder() {
const css = `
#border-svg {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
pointer-events: none;
z-index: 999999;
}
@keyframes dashAnimation {
from {
stroke-dashoffset: 400;
}
to {
stroke-dashoffset: 0;
}
}
`;
const style = document.createElement("style");
style.textContent = css;
document.head.appendChild(style);
const svgNS = "http://www.w3.org/2000/svg";
const svg = document.createElementNS(svgNS, "svg");
svg.setAttribute("id", "border-svg");
svg.setAttribute("viewBox", "0 0 100 100");
svg.setAttribute("preserveAspectRatio", "none");
const defs = document.createElementNS(svgNS, "defs");
const linearGradient = document.createElementNS(svgNS, "linearGradient");
linearGradient.setAttribute("id", "border-gradient");
linearGradient.setAttribute("x1", "0%");
linearGradient.setAttribute("y1", "0%");
linearGradient.setAttribute("x2", "100%");
linearGradient.setAttribute("y2", "0%");
const stop1 = document.createElementNS(svgNS, "stop");
stop1.setAttribute("offset", "0%");
stop1.setAttribute("stop-color", "#DDD6F3");
const stop2 = document.createElementNS(svgNS, "stop");
stop2.setAttribute("offset", "50%");
stop2.setAttribute("stop-color", "#784BA0");
const stop3 = document.createElementNS(svgNS, "stop");
stop3.setAttribute("offset", "100%");
stop3.setAttribute("stop-color", "#2B86C5");
linearGradient.appendChild(stop1);
linearGradient.appendChild(stop2);
linearGradient.appendChild(stop3);
defs.appendChild(linearGradient);
svg.appendChild(defs);
const rect = document.createElementNS(svgNS, "rect");
rect.setAttribute("x", "0.5");
rect.setAttribute("y", "0.5");
rect.setAttribute("width", "98");
rect.setAttribute("height", "98");
rect.setAttribute("fill", "none");
rect.setAttribute("stroke", "url(#border-gradient)");
rect.setAttribute("stroke-width", "0.5");
rect.setAttribute("stroke-dasharray", "200 200");
rect.setAttribute("stroke-dashoffset", "400");
rect.style.animation = "dashAnimation 8s ease-in-out infinite";
svg.appendChild(rect);
document.body.appendChild(svg);
}
// Fonction pour ajouter la bordure
function addViewportBorder() {
const existingBorder = document.getElementById("viewport-border");
if (existingBorder) {
existingBorder.remove();
if (!document.getElementById("border-svg")) {
injectBorder();
}
const border = document.createElement("div");
border.id = "viewport-border";
border.style.position = "fixed";
border.style.top = "0";
border.style.left = "0";
border.style.width = "100vw";
border.style.height = "100vh";
border.style.boxSizing = "border-box";
border.style.border = "8px solid red";
border.style.pointerEvents = "none";
border.style.zIndex = "999999";
document.body.appendChild(border);
}
// Fonction pour retirer la bordure
function removeViewportBorder() {
const border = document.getElementById("viewport-border");
if (border) {
border.remove();
const svg = document.getElementById("border-svg");
if (svg) {
svg.remove();
}
}
})();
This diff is collapsed.
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