import nodemailer from "nodemailer";

const transport = nodemailer.createTransport({
  host: process.env.SMTP_HOST ?? "mailpit",
  port: Number(process.env.SMTP_PORT ?? 1025),
  secure: process.env.SMTP_SECURE === "true",
  ...(process.env.SMTP_USER
    ? { auth: { user: process.env.SMTP_USER, pass: process.env.SMTP_PASS } }
    : {}),
});

const FROM = process.env.SMTP_FROM ?? "Star Wars Wild Space <noreply@wildspace.local>";
const APP_URL = (process.env.APP_URL ?? "http://localhost:8080").replace(/\/$/, "");

export async function sendConfirmationEmail(to, token) {
  const url = `${APP_URL}/?email_confirm=${encodeURIComponent(token)}`;
  await transport.sendMail({
    from: FROM,
    to,
    subject: "Confirmez votre adresse email — Star Wars Wild Space",
    text: `Cliquez sur le lien ci-dessous pour confirmer votre compte :\n\n${url}\n\nCe lien expire dans 24 heures.`,
    html: `
      <h2>Star Wars — Wild Space</h2>
      <p>Cliquez sur le lien ci-dessous pour confirmer votre adresse email :</p>
      <p><a href="${url}" style="font-size:16px">${url}</a></p>
      <p><small>Ce lien expire dans 24 heures.</small></p>
    `,
  });
}

export async function sendPasswordResetEmail(to, token) {
  const url = `${APP_URL}/?reset=${encodeURIComponent(token)}`;
  await transport.sendMail({
    from: FROM,
    to,
    subject: "Réinitialisation de mot de passe — Star Wars Wild Space",
    text: `Cliquez sur le lien ci-dessous pour réinitialiser votre mot de passe :\n\n${url}\n\nCe lien expire dans 1 heure. Si vous n'avez pas fait cette demande, ignorez cet email.`,
    html: `
      <h2>Star Wars — Wild Space</h2>
      <p>Cliquez sur le lien ci-dessous pour réinitialiser votre mot de passe :</p>
      <p><a href="${url}" style="font-size:16px">${url}</a></p>
      <p><small>Ce lien expire dans 1 heure. Si vous n'avez pas fait cette demande, vous pouvez ignorer cet email.</small></p>
    `,
  });
}
