chrome/popup.js (view raw)
1// Sauvegarde l'URL de Mailcatcher
2document.getElementById("save-url").addEventListener("click", () => {
3 const url = document.getElementById("mailcatcher-url").value;
4 if (url) {
5 browser.storage.local.set({ mailcatcherUrl: url });
6 alert("URL enregistrée !");
7 }
8});
9
10// Charge l'URL sauvegardée au démarrage
11browser.storage.local.get("mailcatcherUrl").then((data) => {
12 if (data.mailcatcherUrl) {
13 document.getElementById("mailcatcher-url").value = data.mailcatcherUrl;
14 fetchEmails(data.mailcatcherUrl);
15 }
16});
17
18// Rafraîchit la liste des emails
19document.getElementById("refresh-emails").addEventListener("click", () => {
20 browser.storage.local.get("mailcatcherUrl").then((data) => {
21 if (data.mailcatcherUrl) {
22 fetchEmails(data.mailcatcherUrl);
23 } else {
24 alert("Veuillez configurer l'URL de Mailcatcher.");
25 }
26 });
27});
28
29// Récupère les emails depuis Mailcatcher
30function fetchEmails(baseUrl) {
31 const emailList = document.getElementById("email-list");
32 emailList.innerHTML = "<p>Chargement...</p>";
33
34 fetch(`${baseUrl}/messages`)
35 .then((response) => response.json())
36 .then((emails) => {
37 emailList.innerHTML = "";
38 if (emails.length === 0) {
39 emailList.innerHTML = "<p>Aucun email trouvé.</p>";
40 return;
41 }
42 emails.reverse().forEach((email) => {
43 const item = document.createElement("div");
44 item.className = "email-item";
45 item.innerHTML = `
46 <div class="email-title">${email.subject}</div>
47 <div class="email-sender">${cleanAddress(email.sender)}</div>
48 <div class="email-meta">À : ${cleanAddress(email.recipients.join(", "))} • ${new Date(email.created_at).toLocaleString()}</div>
49 `;
50 item.addEventListener(
51 "click",
52 () => (window.location.href = `${baseUrl}/messages/${email.id}.html`),
53 );
54 emailList.appendChild(item);
55 });
56 })
57 .catch((error) => {
58 emailList.innerHTML = `<p>Erreur : ${error.message}</p>`;
59 });
60}
61
62const cleanAddress = (rawAddress) => rawAddress.replace(/[<>"']/g, "");