From 2114084234226c8e0b12e253ef201249efab2f2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20F=C3=B6rtsch?= Date: Thu, 12 Mar 2026 11:18:58 +0100 Subject: [PATCH] fix host dish visibility, show correct countries to host Co-Authored-By: Claude Opus 4.6 --- packages/server/src/games/game-manager.ts | 4 ++-- packages/server/src/ws/handler.ts | 3 ++- packages/server/tests/game-manager.test.ts | 13 ++++++++++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/server/src/games/game-manager.ts b/packages/server/src/games/game-manager.ts index 1613ec9..73dc9d7 100644 --- a/packages/server/src/games/game-manager.ts +++ b/packages/server/src/games/game-manager.ts @@ -155,7 +155,7 @@ export class GameManager { // ─── State for client ─────────────────────────────────────────── - getGameStateForPlayer(playerId: string, playerLookup: Map): GameState { + getGameStateForPlayer(playerId: string, playerLookup: Map, isHost: boolean): GameState { return { lineup, myPrediction: this.getPrediction(playerId), @@ -163,7 +163,7 @@ export class GameManager { dishes: this.dishes.map((d) => ({ id: d.id, name: d.name, - correctCountry: d.revealed ? d.correctCountry : "", + correctCountry: d.revealed || isHost ? d.correctCountry : "", revealed: d.revealed, })), myDishGuesses: this.getDishGuesses(playerId), diff --git a/packages/server/src/ws/handler.ts b/packages/server/src/ws/handler.ts index 5b12a64..ce33126 100644 --- a/packages/server/src/ws/handler.ts +++ b/packages/server/src/ws/handler.ts @@ -47,7 +47,8 @@ function sendGameState(ws: WSContext, roomCode: string, sessionId: string) { if (!gm || !playerId) return const playerLookup = roomManager.getPlayerLookup(roomCode) - const gameState = gm.getGameStateForPlayer(playerId, playerLookup) + const isHost = roomManager.isHost(roomCode, sessionId) + const gameState = gm.getGameStateForPlayer(playerId, playerLookup, isHost) sendTo(ws, { type: "game_state", gameState }) } diff --git a/packages/server/tests/game-manager.test.ts b/packages/server/tests/game-manager.test.ts index f37307e..bcda6cc 100644 --- a/packages/server/tests/game-manager.test.ts +++ b/packages/server/tests/game-manager.test.ts @@ -136,7 +136,7 @@ describe("GameManager", () => { it("hides correct country for unrevealed dishes", () => { gm.addDish("Köttbullar", "SE") const lookup = new Map() - const state = gm.getGameStateForPlayer("p1", lookup) + const state = gm.getGameStateForPlayer("p1", lookup, false) expect(state.dishes[0]?.correctCountry).toBe("") }) @@ -144,7 +144,14 @@ describe("GameManager", () => { gm.addDish("Köttbullar", "SE") gm.revealDishes() const lookup = new Map() - const state = gm.getGameStateForPlayer("p1", lookup) + const state = gm.getGameStateForPlayer("p1", lookup, false) + expect(state.dishes[0]?.correctCountry).toBe("SE") + }) + + it("shows correct country to host for unrevealed dishes", () => { + gm.addDish("Köttbullar", "SE") + const lookup = new Map() + const state = gm.getGameStateForPlayer("p1", lookup, true) expect(state.dishes[0]?.correctCountry).toBe("SE") }) @@ -152,7 +159,7 @@ describe("GameManager", () => { gm.submitPrediction("p1", "SE", ["DE", "IT", "FR"], "GB") gm.submitPrediction("p2", "NO", ["DE", "IT", "FR"], "GB") const lookup = new Map() - const state = gm.getGameStateForPlayer("p1", lookup) + const state = gm.getGameStateForPlayer("p1", lookup, false) expect(state.myPrediction?.predictedWinner).toBe("SE") }) })