import React, { useEffect, useState } from "react";
import Image from "next/image";
import Link from "next/link";
import OTPInput from "@/components/auth/OTPInput";
import { useSelector } from "react-redux";
import { useRouter } from "next/router";
import { RootState } from "@/Redux/store";
import Swal from "sweetalert2";
import toast from "react-hot-toast";
import axios from "axios";
import Head from "next/head";

const handleSignIn = (icon: any, title: any) => {
  const Toast = Swal.mixin({
    toast: true,
    position: "bottom-end",
    showConfirmButton: false,
    timer: 5000,
    timerProgressBar: true,
    didOpen: (toast) => {
      toast.addEventListener("mouseenter", Swal.stopTimer);
      toast.addEventListener("mouseleave", Swal.resumeTimer);
    },
  });

  Toast.fire({
    icon: icon,
    title: title,
  });
};

const VerifyMobileOtp = () => {
  const [resendDisabled, setResendDisabled] = useState<boolean>(true);
  const [timer, setTimer] = useState<number>(60);

  const router = useRouter();
  const { number } = useSelector((state: RootState) => state.number);

  const handleSubmit = async () => {
    if (number.length === 11) {
      try {
        const data = {
          phoneCode: "+234",
          phone: number,
        };
        const response = await axios.post(
          "https://api.jazzagain.com/public/index.php/api/auth/login/",
          data
        );
        console.log("Response:", response);
        handleSignIn("success", "OTP Sent Successfully!");

        if (response) router.push(`/auth/verify-mobile-otp`);

        // Start countdown and disable resend button
        setResendDisabled(true);
        setTimer(60); // Restart countdown from 60 seconds
      } catch (error: any) {
        handleSignIn("error", error.response?.data?.message || "An error occurred");
      }
    } else {
      toast.error("Enter a valid number!");
    }
  };

  useEffect(() => {
    // Start the countdown timer on initial load and each time `timer` updates
    if (timer > 0) {
      const countdown = setInterval(() => setTimer((prev) => prev - 1), 1000);
      return () => clearInterval(countdown);
    } else if (timer === 0 && resendDisabled) {
      setResendDisabled(false); // Enable the resend button after countdown ends
    }
  }, [timer, resendDisabled]);

  return (
    <>
      <Head>
        <link rel="shortcut icon" href="/images/jazzagian-logo.png" />
        <script
          id='my-custom-script'
          dangerouslySetInnerHTML={{
            __html: `
                !function(f,b,e,v,n,t,s)
                {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
                n.callMethod.apply(n,arguments):n.queue.push(arguments)};
                if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
                n.queue=[];t=b.createElement(e);t.async=!0;
                t.src=v;s=b.getElementsByTagName(e)[0];
                s.parentNode.insertBefore(t,s)}(window, document,'script',
                'https://connect.facebook.net/en_US/fbevents.js');
                fbq('init', '408374148405242');
                fbq('track', 'CompleteRegistration');
              `,
          }}
        />
        <noscript>
          <img
            height="1"
            width="1"
            style={{ display: "none" }}
            src="https://www.facebook.com/tr?id=408374148405242&ev=CompleteRegistration&noscript=1"
            alt="facebook pixel"
          />
        </noscript>
      </Head>
      <div className="flex flex-col items-center">
        <div className="grid grid-cols-1 text-sm sm:text-base lg:grid-cols-2 text-center place-items-center my-auto">
          <div className="hidden lg:block border-r-2 border-gray-400 p-[3rem]">
            <Image
              src={"/images/otpImg.jpg"}
              height={500}
              width={500}
              alt="otp image"
              className="w-full rounded-3xl"
            />
          </div>

          <div className={"p-[1rem] sm:p-[3rem] rounded-lg"}>
            <div className="sm:px-[2rem]">
              <p>Get gently used fashion items at cheap prices.</p>
              <p>
                Make money from your wardrobe, <br /> selling clothes you
                don&apos;t rock anymore
              </p>
            </div>
            <div className="flex justify-center my-3">
              <Image
                src={"/images/jazzagian-logo.png"}
                width={100}
                height={100}
                alt="jazzagain logo"
                className="w-44"
              />
            </div>
            <h3 className="font-semibold text-lg mb-[1.5rem]">Create Account</h3>
            <div className="max-w-xs mx-auto">
              <p>Enter OTP to Verify Mobile Number</p>
              <OTPInput usernumber={number} />
              <p
                className={`cursor-pointer m-3 ${resendDisabled ? "text-gray-400" : "text-blue-500 underline"
                  }`}
                onClick={!resendDisabled ? handleSubmit : undefined}
              >
                {resendDisabled ? `Resend OTP in ${timer}s` : "Resend OTP"}
              </p>
            </div>
            <div>
              Already Have an Account?
              <Link
                href={"/auth/login"}
                className="text-[#FE342B] hover:text-[#383736]"
              >
                Login
              </Link>
            </div>
          </div>
        </div>
      </div>
    </>
  );
};

export default VerifyMobileOtp;
