"use client"; import { Trash2 } from "lucide-react"; import Link from "next/link"; import { useTranslations } from "next-intl"; import { deleteAd } from "@/actions/admin-ads"; import { useConfirmDialog } from "@/components/admin/confirm-dialog"; import { Button } from "@/components/ui/button"; import { useServerAction } from "@/hooks/use-server-action"; export type AdRow = { id: string; image: string; createdAt: string | null; }; export function AdsTable({ ads }: { ads: AdRow[] }) { const t = useTranslations("pages.admin.ads"); const { run, isPending } = useServerAction(); const { confirm, dialog: confirmDialog } = useConfirmDialog(); async function handleDelete(row: AdRow) { const ok = await confirm({ title: t("delete"), description: t("confirmDelete"), confirmLabel: t("delete"), cancelLabel: t("form.cancel"), }); if (!ok) return; run(() => deleteAd({ id: row.id }), { successMessage: t("deleteSuccess"), errorMessage: t("deleteError"), }); } return ( <> {confirmDialog}
| {t("colPreview")} | {t("colImage")} | {t("colCreated")} | {t("colActions")} |
|---|---|---|---|
|
{/* eslint-disable-next-line @next/next/no-img-element */}
|
{ad.image}
|
{ad.createdAt ?? "—"} |
{t("edit")}
|