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

merge main

parent 9c301e5f
No related branches found
No related tags found
No related merge requests found
......@@ -23,7 +23,6 @@ async function getUserLexicons(authToken) {
}
}
// Fonction pour récupérer les lexiques de l'utilisateur (ici utilisateur test)
async function getLexicons(authToken, userId = 52, language = 'fr') {
const lexiconsApiUrl = `https://babalex.lezinter.net/api/lexicon/search?user_id=${userId}&language=${language}`;
......
// === 1. Variables globales ===
let isExtensionActive = true;
let areStatsActive = false;
console.log("🚀 ff2BaLex est chargé.");
// === 2. Installation de l'extension ===
browser.runtime.onInstalled.addListener(() => {
console.log("🔔 Extension ff2BaLex installée.");
});
browser.runtime.onStartup.addListener(() => {
console.log("🔄 Extension démarrée.");
});
// === 3. Suivi des changements de paramètres ===
browser.storage.onChanged.addListener((changes) => {
if (changes.extensionActive) {
isExtensionActive = changes.extensionActive.newValue;
console.log("✅ Extension activée :", isExtensionActive);
}
if (changes.statsActive) {
areStatsActive = changes.statsActive.newValue;
console.log("📊 Statistiques activées :", areStatsActive);
}
});
// === 4. Gestion des connexions/déconnexions ===
browser.runtime.onMessage.addListener(async (message, sender, sendResponse) => {
console.log("📩 Message reçu dans background.js :", message);
if (message.action === "toggleAuth") {
const isConnected = await isUserConnected();
console.log("🔍 État actuel de connexion :", isConnected ? "Connecté" : "Déconnecté");
if (isConnected) {
await disconnectFromLexicalDB();
} else {
openLoginPage();
}
} else if (message.action === "checkAuthStatus") {
const isConnected = await isUserConnected();
sendResponse(isConnected);
} else if (message.action === "authStatusChanged") {
console.log("🔄 Mise à jour de l'état d'authentification :", message.isLoggedIn);
browser.runtime.sendMessage({ action: "updateUI", isLoggedIn: message.isLoggedIn });
} else if (message.action === "refreshSidebar") {
refreshSidebar();
} else if (message.action === "refreshMenu") {
refreshExtensionMenu();
} else if (message.action === "showNotification") {
showNotification(message.title, message.message, message.iconUrl);
}
return true;
});
function openLoginPage() {
const authUrl = "https://prisms.lezinter.net/fr/login";
console.log("🔗 Ouverture de la page de connexion :", authUrl);
browser.tabs.create({ url: authUrl });
browser.runtime.sendMessage({ action: "authStatusChanged", isLoggedIn: false });
}
// === 5. Afficher le popup après redirection vers Prisms ===
browser.webNavigation.onCompleted.addListener(async (details) => {
const url = new URL(details.url);
if (url.hostname === "prisms.lezinter.net" && url.pathname === "/fr/login") {
console.log("📘 Injection du popup d'instruction sur Prisms.");
showInstructionPopup(details);
}
if (url.hostname === "prisms.lezinter.net" && url.pathname === "/fr/headquarters/balex") {
console.log("🟢 L'utilisateur est sur la page /balex. Tentative de récupération du token.");
try {
await new Promise(resolve => setTimeout(resolve, 3000));
await browser.tabs.executeScript(details.tabId, {
code: `
console.log("🔍 Recherche du token...");
const tokenElement = document.getElementById("accesToken");
if (tokenElement) {
const token = tokenElement.innerText.trim();
console.log("🔐 Token détecté :", token);
browser.runtime.sendMessage({ action: "saveToken", token });
} else {
console.error("❌ Token introuvable.");
}
`
});
} catch (error) {
console.error("❌ Erreur lors de la récupération du token :", error);
}
}
}, { url: [{ hostContains: "prisms.lezinter.net" }] });
// === 6. Redirection immédiate vers /balex ===
browser.webRequest.onBeforeRequest.addListener(
function(details) {
if (details.url === "https://prisms.lezinter.net/fr/headquarters/") {
console.log("🚀 Redirection automatique vers /balex.");
return { redirectUrl: "https://prisms.lezinter.net/fr/headquarters/balex" };
}
},
{ urls: ["https://prisms.lezinter.net/fr/headquarters/*"] },
["blocking"]
);
// // === 7. Injection du popup dans la page ===
function showInstructionPopup(details) {
console.log("📘 Injection du message d'instruction centré sur la page Prisms.");
browser.tabs.executeScript(details.tabId, {
code: `
if (!document.getElementById("balex-instruction-popup")) {
const popup = document.createElement("div");
popup.id = "balex-instruction-popup";
popup.style.position = "fixed";
popup.style.top = "50%";
popup.style.left = "50%";
popup.style.transform = "translate(-50%, -50%)";
popup.style.backgroundColor = "#a08e9f";
popup.style.color = "#323046";
popup.style.padding = "20px";
popup.style.borderRadius = "10px";
popup.style.boxShadow = "0 2px 10px rgba(0, 0, 0, 0.3)";
popup.style.zIndex = "10000";
popup.style.fontFamily = "Helvetica, sans-serif";
popup.style.fontSize = "14px";
popup.style.width = "300px";
popup.style.textAlign = "center";
popup.innerHTML = \`
<h5 style="color: #fff; font-weight: bold; margin-top: 0;">🔑 Connexion à l'extension</h5>
<p style="margin: 15px 0;">Après avoir renseigné vos identifiants, cliquez sur <strong>"Se connecter avec BaLex"</strong>.</p>
<button id="close-popup-btn" style="
width: 100%;
margin-top: 15px;
padding: 10px;
border: none;
background-color: #8d5c70;
color: #fbfcfc;
font-weight: bold;
cursor: pointer;
border-radius: 5px;
">Fermer</button>
\`;
document.body.appendChild(popup);
document.getElementById("close-popup-btn").onclick = () => {
popup.remove();
};
}
`
});
}
// === 8. Sauvegarde du token ===
browser.runtime.onMessage.addListener(async (message) => {
if (message.action === "saveToken" && message.token) {
console.log("✅ Sauvegarde du token :", message.token);
await browser.storage.local.set({ accessToken: message.token });
showNotification('Connexion réussie', 'La barre latérale va se recharger.', 'icons/success.png');
refreshSidebar();
refreshExtensionMenu();
browser.runtime.sendMessage({ action: "updateUI", isLoggedIn: true });
}
});
async function disconnectFromLexicalDB() {
console.log("🔓 Déconnexion en cours...");
await browser.storage.local.remove("accessToken");
console.log("🔓 Token supprimé avec succès.");
showNotification('Déconnexion réussie', 'La barre latérale va se recharger.', 'icons/logout.png');
refreshSidebar();
refreshExtensionMenu();
browser.runtime.sendMessage({ action: "updateUI", isLoggedIn: false });
}
async function isUserConnected() {
const result = await browser.storage.local.get("accessToken");
console.log("🔑 État actuel du token :", result.accessToken);
return result.accessToken !== undefined;
}
function refreshSidebar() {
console.log("🔄 Rafraîchissement de la barre latérale.");
browser.runtime.sendMessage({ action: "refreshSidebar" });
}
function refreshExtensionMenu() {
console.log("🔄 Rafraîchissement du menu de l'extension.");
browser.runtime.sendMessage({ action: "refreshMenu" });
}
function showNotification(title, message, iconUrl) {
console.log(`🔔 Notification : ${title} - ${message}`);
if (browser.notifications) {
browser.notifications.create({
type: 'basic',
iconUrl: iconUrl || "icons/info.png",
title: title,
message: message
});
} else {
console.warn("⚠️ Notifications non supportées.");
}
}
setInterval(() => {
console.warn("⚠️ Aucune API de rafraîchissement disponible.");
}, 15 * 60 * 1000);
......@@ -12,7 +12,7 @@ document.addEventListener('mouseup', () => {
// Envoie un message au script de la barre latérale pour lui transmettre le mot sélectionné
browser.runtime.sendMessage({
action: "mot_selectionne", // Action identifiant le type de message
mot: selection // Le texte sélectionné
mot: window.getSelection().toString().trim() // Le texte sélectionné
});
}
});
......@@ -4,6 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>BaLex - Barre Latérale</title>
<script src="sidebar.js"></script>
<style>
/* Style global */
body {
......@@ -18,8 +19,8 @@
/* Conteneurs */
#menu, #etat {
padding: 10px;
margin-bottom: 10px;
border-radius: 5px;
margin-bottom: 0px;
border-radius: 10px;
background-color: #a08e9f;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
}
......@@ -87,6 +88,13 @@
margin-left: 10px;
}
/* Texte explicatif */
#highlight-note {
font-size: small;
margin-bottom: 10px;
text-align: center;
}
/* Espace pour les pictogrammes */
.lexique-icon {
width: 25px;
......@@ -105,6 +113,14 @@
border-radius: 5px;
color: white;
}
/* Activer/désactiver le surlignage */
#highlighting-options p {
margin: 5px 0;
font-size: small;
color: #333;
}
</style>
</head>
<body>
......@@ -112,19 +128,34 @@
<!-- Menu des lexiques -->
<div id="menu">
<h3>Lexiques</h3>
<p id="highlight-note" style="display: none;">Cochez un/des lexique(s) pour activer le surlignage des mots sur la page.</p>
<div id="lexiques">Chargement...</div>
</div>
<div id="auth-section">
<button id="auth-button">Se connecter</button>
</div>
</div>
<!-- État de la sélection -->
<hr>
<div id="etat">
<h3>Mot sélectionné</h3>
<p id="motSelectionne">Aucun mot sélectionné</p>
<div id="add-to-lexiques" style="display: none;">
<button id="add-word-button">Ajouter le mot sélectionné</button>
</div>
<button id="chercherDef">Chercher la/les définition(s)</button>
<div id="possible-definitions" style="display: none;">
<label style="font-size: small;">
<input type="checkbox" id="toggle-definitions">
Afficher toutes les définitions
</label>
</div>
</div>
<!-- Définition affichée -->
<div id="definition"></div>
<script src="sidebar.js"></script>
</body>
</html>
// Confirme le chargement du script dans la console
console.log("sidebar.js chargé avec succès !");
console.log("✅ sidebar.js chargé avec succès !");
// Écoute les messages envoyés par le script de contenu pour afficher le mot sélectionné dans la barre latérale
browser.runtime.onMessage.addListener((message) => {
if (message.action === "mot_selectionne") {
// Met à jour l'affichage du mot sélectionné
document.getElementById('motSelectionne').textContent = message.mot;
console.log("Mot reçu dans la barre latérale :", message.mot);
}
});
let authToken = '';
// Recherche la définition d'un mot sur le Wiktionnaire
async function chercherDefinition(mot) {
const url = `https://fr.wiktionary.org/api/rest_v1/page/summary/${encodeURIComponent(mot)}`;
console.log("URL de la requête :", url);
// Gestionnaire global des erreurs
window.addEventListener('error', (e) => {
console.error("❗️ Erreur globale détectée :", e.message, "dans", e.filename, ":", e.lineno);
});
try {
// Effectue la requête API vers le Wiktionnaire
const response = await fetch(url);
if (!response.ok) {
throw new Error(`Erreur HTTP : ${response.status}`);
}
// 📩 Écoute des messages pour recharger la barre latérale
browser.runtime.onMessage.addListener((message) => {
console.log("📩 Message reçu dans la barre latérale :", message);
// Récupère et affiche la définition si elle existe
const data = await response.json();
const definitionDiv = document.getElementById('definition');
if (message.action === "refreshSidebar") {
console.log("🔄 Rafraîchissement de la barre latérale déclenché.");
window.location.reload();
}
if (data.extract) {
definitionDiv.innerHTML = `<strong>Définition de ${mot} :</strong><p>${data.extract}</p>`;
if (message.action === "mot_selectionne") {
const selectedWordElement = document.getElementById('motSelectionne');
if (selectedWordElement) {
selectedWordElement.textContent = message.mot;
console.log(`📝 Mot sélectionné affiché : ${message.mot}`);
} else {
definitionDiv.innerHTML = `<p>Aucune définition trouvée pour : ${mot}</p>`;
console.warn("⚠️ Élément #motSelectionne introuvable.");
}
} catch (error) {
console.error("Erreur lors de la récupération de la définition :", error);
document.getElementById('definition').innerHTML = "<p>Erreur lors de la recherche de la définition.</p>";
}
if (message.action === "updateUI") {
updateAuthButton(message.isLoggedIn);
toggleHighlightMessage(message.isLoggedIn);
}
});
// Vérification du format du token
function validateToken(token) {
const isValid = /^\S+\.\S+\.\S+$/.test(token);
if (!isValid) {
console.warn("⚠️ Le format du token semble incorrect :", token);
}
return isValid;
}
// Lance la recherche de la définition lorsque le bouton est cliqué
document.getElementById('chercherDef').addEventListener('click', () => {
const mot = document.getElementById('motSelectionne').textContent;
if (mot && mot !== "Aucun mot sélectionné") {
chercherDefinition(mot);
// Lecture du token depuis le local storage
async function readTokenFromStorage() {
const { accessToken } = await browser.storage.local.get("accessToken");
if (accessToken && validateToken(accessToken)) {
authToken = accessToken;
console.log(`🔑 Token récupéré depuis le stockage local : [${authToken}]`);
return true;
} else {
alert("Veuillez sélectionner un mot avant de rechercher sa définition.");
console.error("❌ Token invalide ou non trouvé dans le stockage local.");
return false;
}
});
}
// Affichage des lexiques avec cases à cocher et pictogrammes
function displayLexicons(lexicons) {
const lexiquesContainer = document.getElementById('lexiques');
lexiquesContainer.innerHTML = '';
if (lexicons.length === 0) {
lexiquesContainer.textContent = 'Aucun lexique disponible.';
return;
}
// Ajouter les lexiques à la liste
lexicons.forEach(lexique => {
const lexiqueDiv = document.createElement('div');
lexiqueDiv.className = 'lexique-item';
const iconDiv = document.createElement('div');
iconDiv.className = 'lexique-icon';
iconDiv.style.backgroundColor = '#ccc';
const labelSpan = document.createElement('span');
labelSpan.className = 'lexique-label';
labelSpan.textContent = lexique.name;
// Charge dynamiquement les lexiques de l'utilisateur avec des cases à cocher
async function chargerLexiques() {
const lexiques = ["Lexique 1", "Lexique 2", "Lexique 3"];
const container = document.getElementById('lexiques');
container.innerHTML = '';
lexiques.forEach(lexique => {
const div = document.createElement('div');
div.className = 'lexique-item';
// Pictogramme
const icon = document.createElement('div');
icon.className = 'lexique-icon';
icon.id = `icon_${lexique.replace(/\s/g, '_')}`;
// Nom du lexique
const label = document.createElement('label');
label.htmlFor = `chk_${lexique}`;
label.className = 'lexique-label';
label.textContent = lexique;
// Case à cocher
const checkbox = document.createElement('input');
checkbox.type = 'checkbox';
checkbox.id = `chk_${lexique}`;
checkbox.className = 'lexique-checkbox';
// Ordre : Pictogramme → Nom → Case à cocher
div.appendChild(icon);
div.appendChild(label);
div.appendChild(checkbox);
container.appendChild(div);
});
checkbox.checked = lexique.active || false;
checkbox.addEventListener('change', () => {
console.log(`🔄 Changement de surlignage pour ${lexique.name}: ${checkbox.checked ? 'activé' : 'désactivé'}`);
// Implémentez ici la logique pour activer/désactiver le surlignage
});
lexiqueDiv.appendChild(iconDiv);
lexiqueDiv.appendChild(labelSpan);
lexiqueDiv.appendChild(checkbox);
lexiquesContainer.appendChild(lexiqueDiv);
});
}
// Chargement des lexiques dès l'ouverture de la barre latérale
chargerLexiques();
// Gestion de l'affichage du message d'information
function toggleHighlightMessage(isLoggedIn) {
const highlightNote = document.getElementById('highlight-note');
if (highlightNote) {
highlightNote.style.display = isLoggedIn ? 'block' : 'none';
}
}
browser.runtime.onMessage.addListener((message) => {
if (message.action === "mot_et_lexiques") {
const { mot, lexiques } = message;
console.log("Mot reçu :", mot);
console.log("Liste des lexiques :", lexiques);
// Récupération des lexiques avec diagnostics détaillés
async function fetchLexicons() {
console.log("🚀 La fonction fetchLexicons() est appelée.");
// Mettre à jour l'affichage du mot sélectionné
document.getElementById('motSelectionne').textContent = mot;
const lexiquesContainer = document.getElementById('lexiques');
const authSection = document.getElementById('auth-section');
lexiquesContainer.innerHTML = '';
// Mettre à jour la liste des lexiques dans la barre latérale
const container = document.getElementById('lexiques');
container.innerHTML = ''; //On supprime le contenu existant
if (!authToken) {
console.warn('⚠️ Token non disponible ou vide.');
lexiquesContainer.textContent = 'Lexiques non disponibles. Veuillez vous connecter.';
if (authSection) {
authSection.style.display = 'block';
}
return;
}
lexiques.forEach(({ lexiconName, lexiconId, isPresent }) => {
const div = document.createElement('div');
div.className = 'lexique-item';
try {
console.log(`📡 Tentative d'envoi de la requête GET avec le token : Bearer ${authToken}`);
const response = await fetch('https://babalex.lezinter.net/api/user/lexicons', {
method: 'GET',
headers: {
'Authorization': `Bearer ${authToken}`,
'Content-Type': 'application/json'
}
});
const status = isPresent ? 'Présent' : 'Non présent';
console.log(`📊 Statut de la réponse API : ${response.status}`);
div.innerHTML = `
<div>${lexiconName} (ID: ${lexiconId})</div>
<div>${status}</div>
`;
if (!response.ok) {
const errorBody = await response.text();
throw new Error(`❌ Erreur API Babalex : ${response.status} - ${errorBody}`);
}
container.appendChild(div);
const lexicons = await response.json();
console.log('📚 Lexiques récupérés :', lexicons);
displayLexicons(lexicons);
if (authSection) {
authSection.style.display = 'block'; // Toujours afficher la section auth
}
} catch (error) {
console.error('❗️ Erreur pendant la récupération des lexiques :', error);
lexiquesContainer.textContent = 'Impossible de charger les lexiques. Vérifiez votre connexion ou le token.';
if (authSection) {
authSection.style.display = 'block';
}
}
}
function toggleElementsVisibility(isLoggedIn) {
const addToLexiques = document.getElementById('add-to-lexiques');
const possibleDefinitions = document.getElementById('possible-definitions');
if (addToLexiques) {
addToLexiques.style.display = isLoggedIn ? 'block' : 'none';
}
if (possibleDefinitions) {
possibleDefinitions.style.display = isLoggedIn ? 'block' : 'none';
}
}
// Lancement automatique après le chargement de la page
window.onload = async () => {
console.log("📦 Page complètement chargée. Récupération du token depuis le stockage local et récupération des lexiques...");
const isLoggedIn = await readTokenFromStorage();
updateAuthButton(isLoggedIn);
toggleHighlightMessage(isLoggedIn);
toggleElementsVisibility(isLoggedIn);
await fetchLexicons();
// Gestion du bouton de connexion/déconnexion
const authButton = document.getElementById("auth-button");
if (authButton) {
authButton.addEventListener("click", () => {
browser.runtime.sendMessage({ action: "toggleAuth" }).then(() => {
browser.runtime.sendMessage({ action: "checkAuthStatus" }).then((isLoggedIn) => {
updateAuthButton(isLoggedIn);
toggleHighlightMessage(isLoggedIn);
toggleElementsVisibility(isLoggedIn);
});
});
});
}
});
};
function updateAuthButton(isLoggedIn) {
const authButton = document.getElementById("auth-button");
if (authButton) {
authButton.textContent = isLoggedIn ? "Se déconnecter" : "Se connecter";
}
}
......@@ -2,27 +2,58 @@
"manifest_version": 2,
"name": "ff2BaLex",
"version": "1.0",
"description": "Extension Firefox avec barre latérale.",
"icons": {
"48": "icons/loupe-256.png"
},
"description": "Extension Firefox de BaLex.",
"permissions": [
"https://babalex.lezinter.net/*",
"activeTab",
"storage"
],
"sidebar_action": {
"default_title": "BaLex",
"default_panel": "barre_latérale/sidebar.html",
"default_icon": {
"16": "icons/icon-16.png",
"48": "icons/icon-48.png"
}
},
"storage",
"activeTab",
"tabs",
"contextMenus",
"webNavigation",
"webRequest",
"webRequestBlocking",
"notifications",
"*://babalex.lezinter.net/*",
"*://prisms.lezinter.net/*"
],
"background": {
"scripts": ["background/background.js"],
"persistent": true
},
"browser_action": {
"default_popup": "menu_extension/popup.html",
"default_icon": {
"16": "icons/icon-16.png",
"48": "icons/icon-48.png",
"128": "icons/icon-128.png"
},
"default_title": "ff2BaLex"
},
"options_ui": {
"page": "menu_extension/options.html",
"open_in_tab": false
},
"sidebar_action": {
"default_title": "BaLex",
"default_panel": "barre_latérale/sidebar.html",
"default_icon": {
"16": "icons/icon-16.png",
"48": "icons/icon-48.png"
}
},
"content_scripts": [
{
"matches": ["https://prisms.lezinter.net/*"],
"js": ["barre_latérale/content.js"],
"run_at": "document_end"
},
{
"matches": ["<all_urls>"],
"js": ["token.js","api.js"]
"js": ["api.js"]
},
{
"matches": ["<all_urls>"],
......@@ -30,12 +61,11 @@
"css": ["menu_contextuel/context_menu.css"]
}
],
"web_accessible_resources": [
"token",
"token.txt"
],
"browser_action": {
"default_icon": "icons/loupe-256.png",
"default_title": "Recherche du mot"
}
"icons/*",
"menu_extension/*",
"barre_latérale/*",
"menu_contextuel/*"
]
}
// Variable globale pour stocker le token
// TODO : Script background-------------------------------------------------------------------------//
let authToken = '';
// Charger le token au démarrage
readTokenFile()
.then((token) => {
authToken = token;
console.log('Le token est bien enregistré :', authToken);
})
.catch((error) => {
console.error('Erreur lors du chargement du token :', error);
});
console.log("context_menu.js chargé correctement");
//Variable globale qui contient le token
let authToken = null;
// Fonction pour charger le token
async function loadAuthToken() {
try {
const result = await browser.storage.local.get("accessToken");
authToken = result.accessToken;
console.log("🔑 Token chargé au démarrage :", authToken);
} catch (error) {
console.error("❌ Erreur lors de la récupération du token :", error);
}
}
// Charger le token dès le début
loadAuthToken();
// Fonction pour créer le menu contextuel
// TODO : BOUTONS A REMPLACER AVEC UN PICTOGRAMME-------------------------------------------------------------------------//
......@@ -44,8 +49,6 @@ const whiteBox = createWhiteBox();
//Écoute des évènements du menu contextuel
document.addEventListener('contextmenu', (event) => {
event.preventDefault(); // Cacher le menu contextuel par défaut
// Sélection de texte
const selectedText = window.getSelection().toString().trim();
// Si on sélectionne du texte, on l'affiche dans la barre latérale et dans le menu contextuel
......@@ -72,6 +75,13 @@ document.addEventListener('contextmenu', (event) => {
searchLexiconButton.onclick = async () => {
console.log('Recherche du mot dans le lexique :', selectedText);
try {
// //Récupération du token
// const result = await browser.storage.local.get("accessToken");
// authToken = result.accessToken;
// console.log('Token récupéré directement depuis storage.local :', authToken);
if (!authToken) {
alert('Le token est introuvable. Veuillez vérifier votre connexion.');
return;}
const lexicons = await getUserLexicons(authToken);
console.log('Lexiques (personnels) de l’utilisateur :', lexicons);
// TODO: intégrer la variable lang
......@@ -100,6 +110,9 @@ document.addEventListener('contextmenu', (event) => {
checkLexiconButton.onclick = async () => {
console.log('Vérification dans quels lexiques le mot est présent :', selectedText);
try {
if (!authToken) {
alert('Le token est introuvable. Veuillez vérifier votre connexion.');
return;}
// Récupérer les données des lexiques
const lexicons = await getLexicons(authToken);
console.log('Lexiques récupérés pour l’utilisateur 52 :', lexicons);
......@@ -152,6 +165,9 @@ document.addEventListener('contextmenu', (event) => {
getDefinitionButton.onclick = async () => {
console.log("Recherche des informations détaillées sur le mot :", selectedText);
try {
if (!authToken) {
alert('Le token est introuvable. Veuillez vérifier votre connexion.');
return;}
// Récupérer les lexiques de l'utilisateur
const lexicons = await getLexicons(authToken);
console.log("Lexiques récupérés pour l'utilisateur 52 :", lexicons);
......@@ -230,6 +246,9 @@ document.addEventListener('contextmenu', (event) => {
getDefinitionWikiButton.onclick = async () => {
console.log('Recherche sur le Wiktionnaire pour :', selectedText);
try {
if (!authToken) {
alert('Le token est introuvable. Veuillez vérifier votre connexion.');
return;}
// On effectue une requête sur le Wiktionnaire
const wiktionaryDefinitions = await getWiktionaryDefinition(authToken, selectedText);
......
console.log("token.js chargé correctement");
// Fonction pour lire le contenu du fichier token
async function readTokenFile() {
const tokenFilePath = browser.runtime.getURL('token.txt');
try {
const response = await fetch(tokenFilePath);
if (!response.ok) {
throw new Error(`Erreur lors de la lecture du fichier token : ${response.statusText}`);
}
const token = (await response.text()).trim();
console.log('Token chargé :', token);
return token;
} catch (error) {
console.error('Erreur lors de la lecture du fichier token :', error);
throw error;
}
}
// Exposer la fonction en tant que globale
window.readTokenFile = readTokenFile;
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJwcmlzbXMiLCJqdGkiOiI4OWE4MjY4MjBkMmIzZmU5MzM0ODY5YmMyZDlhMzY0MGFmY2IxMmJmNmIzMzBjMzZjZjMwOWYxY2JmZDI2MDNiZGMzYzRkODFjMWYyZDMyZiIsImlhdCI6MTczNzE2NzcxMS4yODU3ODYsIm5iZiI6MTczNzE2NzcxMS4yODU3OTIsImV4cCI6MTczNzE3MTMxMS4yODE2MzQsInN1YiI6ImFzb3VuYWxhdGgiLCJzY29wZXMiOlsiZW1haWwiLCJwc2V1ZG8iLCJ1dWlkIl0sImtpZCI6IjEiLCJjdXN0b20iOnsiZm9vIjoiYmFyIn19.XLqGm4O0Ir6mdMEtob-gHdO2MFMjxBnwgudbBxaOM0L7TixK3NmkToJZ-yjflLwsAlposzXAGDn21RhPUgXdFK5Rp5wFiD1qoeIgI5XLi8Arp0J2kciCGKoDbIHHTc9bj0tNR4XW1SEgTT2CgKHSVaBNB5ktrpjrph8Wvstwo44u8LNB-yn34iUUqaScp3q3KI0qtS-lyTuOBb55KoUnXQZv4IUtjyBGBvIsU1QCTOYy0GPVOFxn6ZXc4mELZ6uFEvdF57mJyP4CIE3DRcldCOzti_aiGSoe_KDl96ywhHjqEnhIH3MXLneUZiEKgBnkNWuiLhQpCLD8lf_0UPWgpA
\ No newline at end of file
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