import { getSession } from './session' import { isAdmin } from './admin' import { getAccountRankInfo } from './account' /** * ¿A este visitante se le sirven anuncios? * * Criterio único para TODA la publicidad (la etiqueta de AdSense y el script de * Monetag), para que no se puedan desincronizar: * * - Admin (allowlist ADMIN_EMAILS o gmlevel de AzerothCore): nunca. La navegación * del staff no debe contar como tráfico con anuncios. * - Rango 2+ (100 PD, ver getAccountRank en lib/account.ts) o cualquier pago * confirmado por Stripe/SumUp: nunca. Los anuncios son la contrapartida de no * haber donado. * - El resto (anónimos y rango 1 sin pagos): sí. * * Los dos cortes del segundo punto son distintos a propósito: 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. * * Corta 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. */ export async function shouldServeAds(): Promise { const session = await getSession() if (await isAdmin(session)) return false if (session.accountId) { const { level, donatedPD } = await getAccountRankInfo(session.accountId) if (level >= 2 || donatedPD > 0) return false } return true }