import Link from "next/link"; import { Prisma } from "@prisma/client"; import { prisma } from "@/lib/db"; import { requireUser } from "@/lib/auth/current-user"; import { maskAdForPlan } from "@/lib/locked-response"; import { planFromUser } from "@/lib/plans"; import { Card } from "@/components/ui/card"; import { AdCreativeMedia } from "@/components/ad-creative-media"; import { ApifyEmptySearch } from "@/components/ads/apify-empty-search"; export default async function AdsPage({ searchParams }: { searchParams: Promise> }) { const user = await requireUser(); const plan = planFromUser(user as any); const resolvedSearchParams = await searchParams; const q = resolvedSearchParams.q?.trim(); const niche = resolvedSearchParams.niche; const mediaType = resolvedSearchParams.mediaType; const where: Prisma.AdWhereInput = {}; if (q) where.OR = [{ primaryText: { contains: q, mode: "insensitive" } }, { headline: { contains: q, mode: "insensitive" } }, { brandPage: { name: { contains: q, mode: "insensitive" } } }]; if (niche) where.niche = { contains: niche, mode: "insensitive" }; if (mediaType) where.mediaType = mediaType as any; const ads = await prisma.ad.findMany({ where, include: { brandPage: true, creatives: { take: 1 }, savedBy: { where: { userId: user.id } } }, orderBy: { rankPercentile: "asc" }, take: 48 }); const isAdmin = user.role === "ADMIN"; const masked = ads.map((ad) => maskAdForPlan({ ...ad, isSaved: ad.savedBy.length > 0 }, plan?.code, isAdmin)); return (

Search Meta Adlibrary

Kazanan Meta reklamlarını keyword, niche ve medya tipine göre keşfet.

Plan: {plan?.name} · Free ise kartlar kilitli
{["Week's biggest winners", "US winners", "Dropship Ads", "Supplements", "Top Branded"].map((x) => {x})}
{q && masked.length === 0 && isAdmin && } {q && masked.length === 0 && !isAdmin && (

“{q}” için sonuç bulunamadı

Yeni reklamların içe aktarılması için yöneticinizle iletişime geçin.

)} {masked.map((ad: any) => ( {ad.isLocked &&
Start now — Unlock winners
}
{ad.headline}
Top %{Math.round(ad.rankPercentile || 0)}
{ad.brandPage?.name} · {ad.mediaType} · {ad.daysRunning} gün

{ad.primaryText}

{ad.countries.join(", ")}
Ülke
€{ad.estimatedSpendMin ?? "—"}
Min spend
{ad.adScore}
Score
))}
); }