import { FormBuilder, FormField } from "@/components/forms/dynamic-submit-form";
import { type BlacklistFormData } from "@/types/black-list";
import { toast } from "sonner";

interface BlacklistFormProps {
  onSubmit: (data: BlacklistFormData) => Promise<void>;
  closeDialog: () => void;
  initialData?: Partial<BlacklistFormData>;
}

export function BlacklistForm({
  onSubmit,
  closeDialog,
  initialData,
}: BlacklistFormProps) {
  return (
    <FormBuilder<BlacklistFormData>
      defaultValues={{
        appName: initialData?.appName || "",
        processName: initialData?.processName || "",
      }}
      onSubmit={async (values: BlacklistFormData) => {
        if (!values.appName.trim()) {
          toast.error("Vui lòng nhập tên ứng dụng");
          return;
        }
        if (!values.processName.trim()) {
          toast.error("Vui lòng nhập tên tiến trình");
          return;
        }

        try {
          await onSubmit(values);
          toast.success("Thêm phần mềm bị chặn thành công!");
          closeDialog();
        } catch (error) {
          console.error("Error:", error);
          toast.error("Có lỗi xảy ra!");
        }
      }}
      submitLabel="Thêm"
      cancelLabel="Hủy"
      onCancel={closeDialog}
      showCancel={true}
    >
      {(form: any) => (
        <>
          <FormField<BlacklistFormData, "appName">
            form={form}
            name="appName"
            label="Tên ứng dụng"
            placeholder="VD: Google Chrome"
            required
          />

          <FormField<BlacklistFormData, "processName">
            form={form}
            name="processName"
            label="Tên tiến trình"
            placeholder="VD: chrome.exe"
            required
          />
        </>
      )}
    </FormBuilder>
  );
}
