'use client';

import { useState } from 'react';
import { useRouter } from 'next/navigation';
import { Button } from '@/components/ui/button';
import { useToast } from '@/hooks/use-toast';
import { handleUndoLastSalesInvoiceUpdate } from '@/lib/actions/sales-invoice.actions';

type SalesLogUndoButtonProps = {
  invoiceId: string;
  userId: string;
  userName: string;
};

export default function SalesLogUndoButton({ invoiceId, userId, userName }: SalesLogUndoButtonProps) {
  const router = useRouter();
  const { toast } = useToast();
  const [isSubmitting, setIsSubmitting] = useState(false);

  const onUndo = async () => {
    try {
      setIsSubmitting(true);
      const result = await handleUndoLastSalesInvoiceUpdate(invoiceId, userId, userName);
      if (!result.success) {
        toast({ title: 'تعذر التراجع', description: result.error, variant: 'destructive' });
        return;
      }
      toast({ title: 'تم التراجع', description: 'تم استرجاع آخر تحديث بنجاح.' });
      router.refresh();
    } catch {
      toast({ title: 'خطأ', description: 'حدث خطأ غير متوقع أثناء التراجع.', variant: 'destructive' });
    } finally {
      setIsSubmitting(false);
    }
  };

  return (
    <Button type="button" size="sm" variant="outline" disabled={isSubmitting} onClick={onUndo}>
      {isSubmitting ? 'جارٍ التراجع...' : 'تراجع عن هذا التحديث'}
    </Button>
  );
}
