import React, { useEffect, useState, useRef } from "react";
import FingerprintJS from "@fingerprintjs/fingerprintjs";
import Image from "next/image";
import apiInstance from "@/interceptor/instance";
import Head from "next/head";
import { useRouter } from "next/router";

function AirtelWeb(): JSX.Element {
  const [isLoading, setIsLoading] = useState(true);
  const router = useRouter();
  const hasExecuted = useRef(false);

  const fetchDataAndPost = async () => {
    try {
      const headersRes = await fetch("/api/headers");
      const { userAgent, ip } = await headersRes.json();

      const fp = await FingerprintJS.load();
      const result = await fp.get();

      const postData = {
        deviceId: result.visitorId,
        userAgent,
        ipAddress: ip,
        source: 'web'
      };

      await apiInstance.post("/api/airtelUserActivity", postData);
    } catch (error) {
      console.error("Error fetching or posting data:", error);
    }
  };

  useEffect(() => {
    if (hasExecuted.current) return;
    hasExecuted.current = true;

    const executeFetchAndRedirect = async () => {
      await fetchDataAndPost();
      setIsLoading(false);
      router.push("/");
    };

    executeFetchAndRedirect();
  }, [router]);

  return (
    <>
      <Head>
        <link rel="shortcut icon" href="/images/jazzagian-logo.png" />
        <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', '360254480441103');
              fbq('track', 'Web');
            `,
          }}
        />
        <noscript>
          <Image
            height="1"
            width="1"
            alt=""
            style={{ display: 'none' }}
            src="https://www.facebook.com/tr?id=360254480441103&ev=Airtel&noscript=1"
          />
        </noscript>
      </Head>

      <div>
        {isLoading ? (
          <div className="flex items-center justify-center h-[100vh]">
            <Image
              src={"/images/loading.gif"}
              width={100}
              height={100}
              alt="...loading"
            />
          </div>
        ) : (
          <></>
        )}
      </div>
    </>
  );
}

export default AirtelWeb;