"use client";

import { useTransition } from "react";
import Icon from "@/components/Icon";
import { useDialog } from "@/components/feedback/DialogProvider";
import { deleteInvoiceAdmin } from "./_actions";

export default function RowDeleteButton({
  invoiceId,
  number,
}: {
  invoiceId: string;
  number: string;
}) {
  const [isDeleting, startDeleting] = useTransition();
  const { confirm, toast } = useDialog();

  async function onDelete() {
    const ok = await confirm({
      title: `Supprimer la facture ${number} ?`,
      body: "Cette action est irréversible. Une fois la facture émise, sa suppression est interdite par les obligations comptables (conservation 10 ans).",
      confirmLabel: "Supprimer",
      danger: true,
    });
    if (!ok) return;
    startDeleting(async () => {
      try {
        await deleteInvoiceAdmin(invoiceId);
      } catch {
        toast({
          message: "La suppression a échoué.",
          variant: "error",
        });
      }
    });
  }

  return (
    <button
      type="button"
      onClick={onDelete}
      disabled={isDeleting}
      aria-label="Supprimer la facture"
      title="Supprimer"
      className="p-2 text-on-surface-variant hover:text-error transition-colors disabled:opacity-30 disabled:cursor-not-allowed"
    >
      <Icon name="delete" className="!text-base" />
    </button>
  );
}
