24bd28fcca
- El nombre del autor muestra un personaje ALEATORIO de la cuenta (no la id). - Nombre con <Hermandad> en dorado (oculto si el personaje no tiene guild). - Avatar = imagen de raza del personaje (raza+género). - Cajas nuevas: puntos de logros, nivel y clase (con su color de clase). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
36 lines
1.4 KiB
TypeScript
36 lines
1.4 KiB
TypeScript
import { shouldServeAds } from '@/lib/ads'
|
|
import { AdSenseScript } from './AdSenseScript'
|
|
|
|
/**
|
|
* Google AdSense: etiqueta de verificación de la cuenta + script de anuncios
|
|
* («Auto ads»: se pega en todas las páginas y Google decide dónde colocarlos).
|
|
*
|
|
* 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 <Header/>
|
|
* lee la sesión), así que no hace falta exponerlo al bundle del cliente ni
|
|
* rebuildear para activarlo o desactivarlo.
|
|
* 2. El filtro común de publicidad (`shouldServeAds`, ver lib/ads.ts): fuera para
|
|
* admins y para quien sea rango 2+ o haya pagado alguna vez.
|
|
* 3. El consentimiento «Marketing» del visitante, pero SOLO para el script, en
|
|
* <AdSenseScript/> (cliente). La <meta> se queda fuera del banner a propósito:
|
|
* es un identificador estático de la cuenta, no carga nada ni escribe cookies,
|
|
* y Google la quiere presente para poder verificar el sitio aunque el visitante
|
|
* rechace los anuncios.
|
|
*/
|
|
export async function AdSense() {
|
|
const client = process.env.ADSENSE_CLIENT_ID
|
|
if (!client) return null
|
|
|
|
if (!(await shouldServeAds())) return null
|
|
|
|
return (
|
|
<>
|
|
<meta name="google-adsense-account" content={client} />
|
|
<AdSenseScript client={client} />
|
|
</>
|
|
)
|
|
}
|