import Link from "next/link"; import { PlaceholderActions, ShellPage } from "@/components/page-templates"; import { TablePlaceholder } from "@/components/placeholders"; import { dispatchCampaign, deleteCampaign } from "@/lib/admin-crud"; import { getSession } from "@/lib/auth"; import { prisma } from "@/lib/prisma"; export default async function CampaignsPage({ searchParams }: { searchParams?: Promise<{ error?: string }>; }) { const params = await (searchParams ?? Promise.resolve({ error: undefined })); const session = await getSession(); const campaigns = session ? await prisma.broadcastCampaign.findMany({ where: { tenantId: session.tenantId }, include: { channel: true }, orderBy: { createdAt: "desc" } }) : []; const error = params.error; const infoMessage = error === "campaign_not_found" ? "Campaign tidak ditemukan." : error === "missing_fields" ? "Lengkapi data campaign." : null; const campaignErrorMessage = error === "no_recipients" ? "Campaign tidak punya recipient (audience kosong)." : error === "campaign_not_ready" ? "Campaign tidak bisa dikirim dalam status ini." : null; return ( } > {infoMessage ?

{infoMessage}

: null} [ campaign.name, campaign.channel.channelName, campaign.audienceType, campaign.status, campaign.scheduledAt ? new Date(campaign.scheduledAt).toLocaleDateString() : "Not scheduled",
Detail Recipients
])} /> {campaignErrorMessage ?

{campaignErrorMessage}

: null}
); }