Newer
Older
PixelPaintWar / apps / client / src / network / handlers / LobbyHandler.ts
import type { Socket } from "socket.io-client";
import { protocol } from "@repo/shared";
import type { roomTypes } from "@repo/shared";

type LobbyHandler = {
  onRoomUpdate: (callback: (room: roomTypes.Room) => void) => void;
  offRoomUpdate: (callback: (room: roomTypes.Room) => void) => void;
  startGame: () => void;
};

export const createLobbyHandler = (socket: Socket): LobbyHandler => {
  return {
    onRoomUpdate: (callback: (room: roomTypes.Room) => void) => {
      socket.on(protocol.SocketEvents.ROOM_UPDATE, callback);
    },
    offRoomUpdate: (callback: (room: roomTypes.Room) => void) => {
      socket.off(protocol.SocketEvents.ROOM_UPDATE, callback);
    },
    startGame: () => {
      socket.emit(protocol.SocketEvents.START_GAME);
    }
  };
};

export type { LobbyHandler };