import { render } from "@react-email/components";
import type { ReactElement } from "react";
import { resend } from "./resend";

const from =
	process.env.BETTER_AUTH_EMAIL || "Better Auth <onboarding@resend.dev>";

type SendEmailInput = {
	to: string;
	subject: string;
	react: ReactElement;
};

/**
 * Envoie un email transactionnel via Resend.
 * Sans RESEND_API_KEY (dev local), l'email est rendu en texte brut et loggé
 * côté serveur : les liens (magic link, reset, vérification) sont lisibles
 * dans `d3k logs --type server`.
 */
export async function sendEmail({ to, subject, react }: SendEmailInput) {
	if (!process.env.RESEND_API_KEY) {
		const text = await render(react, { plainText: true });
		console.info(
			`\n[email:dev] RESEND_API_KEY absente — email non envoyé\nTo: ${to}\nSubject: ${subject}\n${text}\n`,
		);
		return;
	}
	const { error } = await resend.emails.send({ from, to, subject, react });
	if (error) {
		throw new Error(`Resend: ${error.message}`);
	}
}
