import { authClient } from "@lib/auth.js";
import { createSocket, SocketContext } from "@lib/socket.js";
import { useEffect, useState } from "react";

function SocketProvider({ children }) {
  const { data: session } = authClient.useSession();
  const userId = session?.user?.id ?? null;
  const [socket, setSocket] = useState(null);

  useEffect(() => {
    if (!userId) {
      setSocket(null);
      return;
    }

    const instance = createSocket();
    setSocket(instance);

    return () => {
      instance.disconnect();
      setSocket(null);
    };
  }, [userId]);

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

window.SocketProvider = SocketProvider;
