diff --git a/apps/client/src/network/handlers/CommonHandler.ts b/apps/client/src/network/handlers/CommonHandler.ts index 0c6d10b..61b35d2 100644 --- a/apps/client/src/network/handlers/CommonHandler.ts +++ b/apps/client/src/network/handlers/CommonHandler.ts @@ -1,5 +1,8 @@ import type { Socket } from "socket.io-client"; import { protocol } from "@repo/shared"; +import type { PayloadOf, SocketPayloadMap } from "@repo/shared"; + +type SocketEventName = keyof SocketPayloadMap; type CommonHandler = { onConnect: (callback: (id: string) => void) => void; @@ -7,7 +10,24 @@ }; export const createCommonHandler = (socket: Socket): CommonHandler => { - const connectListenerMap = new Map<(id: string) => void, () => void>(); + const connectListenerMap = new Map< + (id: string) => void, + (payload: PayloadOf) => void + >(); + + const onEvent = ( + event: TEvent, + callback: (payload: PayloadOf) => void + ) => { + (socket as any).on(event, callback); + }; + + const offEvent = ( + event: TEvent, + callback: (payload: PayloadOf) => void + ) => { + (socket as any).off(event, callback); + }; return { onConnect: (callback: (id: string) => void) => { @@ -15,18 +35,18 @@ callback(socket.id || ""); } - const listener = () => { + const listener = (_payload: PayloadOf) => { callback(socket.id || ""); }; connectListenerMap.set(callback, listener); - socket.on(protocol.SocketEvents.CONNECT, listener); + onEvent(protocol.SocketEvents.CONNECT, listener); }, offConnect: (callback: (id: string) => void) => { const listener = connectListenerMap.get(callback); if (!listener) return; - socket.off(protocol.SocketEvents.CONNECT, listener); + offEvent(protocol.SocketEvents.CONNECT, listener); connectListenerMap.delete(callback); } };