import { getSession } from '@/lib/session'
import { isAdmin } from '@/lib/admin'
import { getAccountRankInfo } from '@/lib/account'
/**
* Etiqueta de verificación de Google AdSense, con TRES interruptores:
*
* 1. `ADSENSE_CLIENT_ID` en el .env. Vacío o sin poner = no se emite nada. Es el
* interruptor del administrador. No lleva prefijo NEXT_PUBLIC_ a propósito:
* esto se renderiza en el servidor (el layout ya es dinámico porque
* lee la sesión), así que no hace falta exponerlo al bundle del cliente.
* 2. Admin (allowlist ADMIN_EMAILS o gmlevel de AzerothCore): sin etiqueta, para
* que la navegación del staff no cuente como tráfico con anuncios.
* 3. Rango de la cuenta (ns-ranks, ver getAccountRank en lib/account.ts) y pagos:
* solo ve anuncios el rango 1 (Newbie, el de por defecto) que ADEMÁS nunca ha
* pagado. Son dos cortes distintos a propósito: cualquier pago confirmado por
* Stripe o SumUp los quita por mínimo que sea, y el mínimo de SumUp (0,20 € =
* 20 PD) no llega a los 100 PD del rango 2, así que mirar solo el rango dejaría
* con anuncios a alguien que ya ha pagado.
*
* Ambas comprobaciones cortan en seco sin tocar la BD si no hay sesión, así que el
* visitante anónimo (el caso normal) no paga ninguna consulta extra.
*
* Ojo: esto es solo la etiqueta de verificación de la cuenta, no carga adsbygoogle.js
* ni escribe cookies, por eso no pasa por el banner de consentimiento. El día que se
* añada el script de anuncios sí tendrá que ir detrás de la categoría «Marketing»
* (useConsent('marketing'), ver components/Analytics.tsx).
*/
export async function AdSense() {
const client = process.env.ADSENSE_CLIENT_ID
if (!client) return null
const session = await getSession()
if (await isAdmin(session)) return null
if (session.accountId) {
const { level, donatedPD } = await getAccountRankInfo(session.accountId)
if (level >= 2 || donatedPD > 0) return null
}
return
}