import { useEffect, useState } from "react";
import { socketService } from "@/lib/socket";
import { Socket } from "socket.io-client";

export function useSocket(room?: string) {
  const [isConnected, setIsConnected] = useState(false);
  const [socket, setSocket] = useState<Socket | null>(null);

  useEffect(() => {
    const s = socketService.connect();
    setSocket(s);
    setIsConnected(s.connected);

    const onConnect = () => setIsConnected(true);
    const onDisconnect = () => setIsConnected(false);

    s.on("connect", onConnect);
    s.on("disconnect", onDisconnect);

    if (room) {
      socketService.joinRoom(room);
    }

    return () => {
      s.off("connect", onConnect);
      s.off("disconnect", onDisconnect);
      if (room) {
        socketService.leaveRoom(room);
      }
    };
  }, [room]);

  return {
    socket,
    isConnected,
    joinRoom: (r: string) => socketService.joinRoom(r),
    leaveRoom: (r: string) => socketService.leaveRoom(r),
  };
}
