import "server-only";
import type { EpostaIcerik } from "./eposta";

/**
 * Ortak e-posta göndericisi (Resend). Şablonlar eposta.ts'te, gönderim
 * burada — magic link (auth.ts) ve kredi hatırlatması aynı yoldan çıkar.
 * RESEND_API_KEY yoksa dev fallback: içerik terminale yazılır.
 */
export async function epostaGonder(
  to: string,
  icerik: EpostaIcerik,
): Promise<void> {
  if (!process.env.RESEND_API_KEY) {
    console.log(
      `\n[eposta] (dev) ${to} adresine gönderilecekti — ${icerik.subject}\n${icerik.text}\n`,
    );
    return;
  }
  const { Resend } = await import("resend");
  const resend = new Resend(process.env.RESEND_API_KEY);
  const { error } = await resend.emails.send({
    from: process.env.EMAIL_FROM ?? "KolayTercih <onboarding@resend.dev>",
    to,
    subject: icerik.subject,
    html: icerik.html,
    // Düz metin alternatifi spam puanını düşürür ve HTML'i engelleyen
    // istemcilerde içeriğin okunabilir kalmasını sağlar.
    text: icerik.text,
  });
  // Resend SDK hata fırlatmaz, { data, error } döndürür. Kontrol etmezsek
  // doğrulanmamış domain/kota hatası sessizce yutulur — fırlatarak çağıran
  // tarafın (better-auth, hatırlatma taraması) haberdar olmasını sağlıyoruz.
  if (error) {
    console.error(`[eposta] Gönderilemedi (${to}):`, error);
    throw new Error(`Resend: ${error.name} — ${error.message}`);
  }
}