"use client";
import { useSession } from "next-auth/react";
import React, { memo, useEffect } from "react";
import io, { Socket } from "socket.io-client";

interface SocketProviderProps {
  children: React.ReactNode;
}
export const socket: Socket = io(process.env.NEXT_PUBLIC_API_URL!);
// export const socket: Socket = io("https://ibfoods.online");

const SocketProvider: React.FC<SocketProviderProps> = ({ children }) => {
  const { data: session, status } = useSession();

  useEffect(() => {
    const setupSocket = () => {
      socket.emit("setup", { id: session?.user?.id });
    };

    setupSocket();
    return () => {
      socket.off("setup");
    };
  }, [status, session]);

  useEffect(() => {
    const checkSocketConnection = () => {
      //   if (status === "authenticated") {
      socket.on("connected", (data) => {});
      //   }
    };
    checkSocketConnection();
    // return () => {
    //   socket.off("connected");
    // };
  }, [status, session]);

  return (
    <SocketContext.Provider value={socket}>{children}</SocketContext.Provider>
  );
};

export const SocketContext = React.createContext({} as Socket);

export default memo(SocketProvider);
