all repos — mailcatcher-viewer @ main

firefox/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, "");