import nodemailer, { type Transporter } from 'nodemailer'

let cached: Transporter | null | undefined

/** SMTP z hostingu (cPanel) — nadawca @twojalodka.pl */
export function isSmtpConfigured(): boolean {
  const user = process.env.SMTP_USER?.trim()
  const pass = process.env.SMTP_PASS?.trim()
  const host = process.env.SMTP_HOST?.trim()
  return Boolean(host && user && pass)
}

export function getMailFrom(): string {
  return process.env.MAIL_FROM?.trim() || 'Twoja Łódka <kontakt@twojalodka.pl>'
}

export function getMailReplyTo(): string | undefined {
  const v = process.env.MAIL_REPLY_TO?.trim()
  return v || undefined
}

export function getSmtpTransport(): Transporter | null {
  if (cached !== undefined) return cached
  if (!isSmtpConfigured()) {
    cached = null
    return null
  }

  const port = Number(process.env.SMTP_PORT ?? 465)
  const secure =
    process.env.SMTP_SECURE === '1' ||
    process.env.SMTP_SECURE === 'true' ||
    (Number.isFinite(port) && port === 465)

  cached = nodemailer.createTransport({
    host: process.env.SMTP_HOST!.trim(),
    port: Number.isFinite(port) ? port : 465,
    secure,
    auth: {
      user: process.env.SMTP_USER!.trim(),
      pass: process.env.SMTP_PASS!.trim(),
    },
  })

  return cached
}
