import { useStore } from "@/store";
import { TPlanName } from "@/types";
import { sendData } from "@/utils/actions";
import { planSchemas, TPlanInputValues } from "@/utils/form-schemas";
import { timeOut } from "@/utils/helpers";
import { zodResolver } from "@hookform/resolvers/zod";
import { useState } from "react";
import { SubmitHandler, useForm } from "react-hook-form";

const usePlanContactForm = (currentPlanName: TPlanName) => {
  const { setModal, setUserData, plan, userData } = useStore();
  const [isSendingForm, setIsSendingForm] = useState(false);
  const [formError, setFormError] = useState("");
  const {
    register,
    handleSubmit,
    setValue,
    control,
    formState: { errors },
  } = useForm<TPlanInputValues>({
    defaultValues: { telefono: userData?.phone },
    resolver: zodResolver(planSchemas[currentPlanName as string]),
  });
  const onSubmit: SubmitHandler<TPlanInputValues> = async (data) => {
    setFormError("");
    setIsSendingForm(true);
    await timeOut(1000);
    const res = await sendData("issuing", { ...data, productId: plan.productId });
    if (res?.ok) {
      console.log(res);
      setModal("success");
      setUserData({ phone: "", token: "", pin: "" });
    } else {
      setFormError(res?.message as string);
    }
    setIsSendingForm(false);
  };
  return {
    phone: userData.phone,
    isSendingForm,
    register,
    handleSubmit,
    onSubmit,
    setValue,
    errors,
    control,
    formError,
  };
};

export default usePlanContactForm;
