import type { Server as HttpServer } from "http";
import { Server } from "socket.io";
import { env } from "../lib/env";
import { setSocketServer } from "../lib/socketBus";

export function createSocketServer(httpServer: HttpServer) {
  const io = new Server(httpServer, {
    cors: {
      origin: env.CLIENT_URL,
      credentials: true,
    },
  });

  io.on("connection", (socket) => {
    socket.on("identify", (userId: string) => {
      socket.join(`user:${userId}`);
    });

    socket.on("board:join", (boardId: string) => {
      socket.join(`board:${boardId}`);
    });

    socket.on("board:leave", (boardId: string) => {
      socket.leave(`board:${boardId}`);
    });
  });

  setSocketServer(io);
  return io;
}
