"use client";

import Script from "next/script";
import Image from "next/image";
import { useEffect } from "react";

interface FacebookPixelProps {
  pixelId: string;
  trackPageView?: boolean;
}

export default function FacebookPixel({
  pixelId,
  trackPageView = true,
}: FacebookPixelProps) {
  useEffect(() => {
    // Fire PageView if fbq is available
    if (
      trackPageView &&
      typeof window !== "undefined" &&
      typeof (window as any).fbq === "function"
    ) {
      (window as any).fbq("track", "PageView");
    }
  }, [trackPageView]);

  return (
    <>
      {/* Facebook Pixel Script */}
      <Script
        id="facebook-pixel-script"
        strategy="afterInteractive"
        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', '${pixelId}');
            ${trackPageView ? "fbq('track', 'PageView');" : ""}
          `,
        }}
      />

      <noscript>
        <img
          height="1"
          width="1"
          style={{ display: "none" }}
          src={`https://www.facebook.com/tr?id=${pixelId}&ev=PageView&noscript=1`}
          alt=""
        />
      </noscript>
    </>
  );
}
