import { headers } from 'next/headers';
import { resolveStoreIdentifier } from '@/lib/storeHost';
import type { Product } from '@/components/store/config/defaultStoreConfig';

/**
 * Ficha de un producto para el render del servidor (ruta /producto/[slug]). Sirve
 * para la metadata (título, descripción, imagen de vista previa) y para abrir la
 * ficha al cargar. null si no existe o el backend no respondió.
 */
export async function loadStoreProduct(slugOrId: string): Promise<Product | null> {
	const backendUrl = process.env.BACKEND_URL;
	const appToken = process.env.STORE_APP_TOKEN;
	const hdrs = await headers();
	const subdominio = resolveStoreIdentifier(hdrs.get('host') ?? '') ?? process.env.STORE_SUBDOMINIO_DEV;

	if (!backendUrl || !appToken || !subdominio) return null;

	try {
		const res = await fetch(
			`${backendUrl}/api/v1/store/productos/${encodeURIComponent(slugOrId)}?subdominio=${encodeURIComponent(subdominio)}`,
			{
				headers: { 'x-app-key': appToken },
				next: { revalidate: 60, tags: [`store-catalog-${subdominio}`] },
				signal: AbortSignal.timeout(8000)
			}
		);

		if (!res.ok) return null;

		return (await res.json()) as Product;
	} catch {
		return null;
	}
}
