diff --git a/app/src/app.service.ts b/app/src/app.service.ts index 257720f..955b5f6 100644 --- a/app/src/app.service.ts +++ b/app/src/app.service.ts @@ -16,7 +16,10 @@ import { JoinLobbyEvent, } from 'interface'; import { createWsExceptionFilter } from './websocket-exception-filter'; -import { PlayerNotFoundException } from './exceptions'; +import { + MissingPlayerNameException, + PlayerNotFoundException, +} from './exceptions'; @WebSocketGateway({ cors: true }) @Injectable() @@ -31,7 +34,12 @@ export class AppService implements OnGatewayConnection { this.playerService.createPlayer(client.id); } - @UseFilters(createWsExceptionFilter([PlayerNotFoundException])) + @UseFilters( + createWsExceptionFilter([ + PlayerNotFoundException, + MissingPlayerNameException, + ]), + ) @SubscribeMessage(ClientEvent.CREATE_LOBBY) handleCreateLobby( @ConnectedSocket() client: Socket, @@ -47,6 +55,12 @@ export class AppService implements OnGatewayConnection { }); } + @UseFilters( + createWsExceptionFilter([ + PlayerNotFoundException, + MissingPlayerNameException, + ]), + ) @SubscribeMessage(ClientEvent.JOIN_LOBBY) handleJoinLobby( @ConnectedSocket() client: Socket, diff --git a/app/src/exceptions.ts b/app/src/exceptions.ts index e845efd..886ad1b 100644 --- a/app/src/exceptions.ts +++ b/app/src/exceptions.ts @@ -10,6 +10,12 @@ export abstract class WebSocketException extends WsException { } } +export class MissingPlayerNameException extends WebSocketException { + constructor() { + super('Missing player name', ErrorCode.MISSING_USER_NAME); + } +} + export class PlayerNotFoundException extends WebSocketException { constructor(playerId: string) { super( diff --git a/app/src/players/player.service.ts b/app/src/players/player.service.ts index db45efe..adc7cc8 100644 --- a/app/src/players/player.service.ts +++ b/app/src/players/player.service.ts @@ -1,6 +1,9 @@ import { Injectable, Logger } from '@nestjs/common'; import { Player } from './player'; -import { PlayerNotFoundException } from 'src/exceptions'; +import { + MissingPlayerNameException, + PlayerNotFoundException, +} from 'src/exceptions'; @Injectable() export class PlayerService { @@ -13,6 +16,9 @@ export class PlayerService { } addUserName(socketId: string, userName: string) { + if (!userName) { + throw new MissingPlayerNameException(); + } this.players.get(socketId).userName = userName; } diff --git a/interface/server-events/CreateLobbyError.ts b/interface/server-events/CreateLobbyError.ts index d488e52..8003490 100644 --- a/interface/server-events/CreateLobbyError.ts +++ b/interface/server-events/CreateLobbyError.ts @@ -3,7 +3,7 @@ import { Socket as ClientSocket } from "socket.io-client"; import { ErrorCode, ServerError } from "./ServerError"; export type CreateLobbyError = { - error: ErrorCode.PLAYER_NOT_FOUND | ErrorCode.GAME_NOT_FOUND; + error: ErrorCode; }; export const emitCreateLobbyError = ( diff --git a/interface/server-events/ServerError.ts b/interface/server-events/ServerError.ts index adb14fd..8ba99a3 100644 --- a/interface/server-events/ServerError.ts +++ b/interface/server-events/ServerError.ts @@ -6,4 +6,5 @@ export enum ServerError { export enum ErrorCode { PLAYER_NOT_FOUND = "player-not-found", GAME_NOT_FOUND = "game-not-found", + MISSING_USER_NAME = "player-user-name-not-found", }