diff --git a/app/api/rooms/[code]/route.ts b/app/api/rooms/[code]/route.ts
index 0ba021f..e0d5203 100644
--- a/app/api/rooms/[code]/route.ts
+++ b/app/api/rooms/[code]/route.ts
@@ -127,7 +127,7 @@ export async function PATCH(
article?: string;
startArticle?: string;
targetArticle?: string;
- value?: boolean;
+ value?: boolean | number | string;
};
// Nettoyer les joueurs inactifs uniquement hors partie (lobby/résultats)
@@ -351,6 +351,19 @@ export async function PATCH(
return Response.json({ room });
}
+ // Hôte change le mode de jeu
+ case "setGameMode": {
+ const host = room.players.find((p) => p.id === playerId);
+ if (!host?.isHost) {
+ return Response.json({ error: "Seul l'hôte peut modifier ce paramètre" }, { status: 403 });
+ }
+ if (value === "race" || value === "all_finish") {
+ room.gameMode = value;
+ await saveRoom(room);
+ }
+ return Response.json({ room });
+ }
+
// Hôte change la limite de temps
case "setTimeLimit": {
const host = room.players.find((p) => p.id === playerId);
diff --git a/app/components/LobbyScreen.tsx b/app/components/LobbyScreen.tsx
index 1407461..54de24f 100644
--- a/app/components/LobbyScreen.tsx
+++ b/app/components/LobbyScreen.tsx
@@ -18,6 +18,7 @@ type LobbyScreenProps = {
setTotalRounds: (v: number) => void;
gameMode: Room["gameMode"];
setGameMode: (v: Room["gameMode"]) => void;
+ onSetGameMode: (v: Room["gameMode"]) => void;
onSetSearchAllowed: (v: boolean) => void;
onSetTimeLimit: (v: number) => void;
};
@@ -37,6 +38,7 @@ export function LobbyScreen({
setTotalRounds,
gameMode,
setGameMode,
+ onSetGameMode,
onSetSearchAllowed,
onSetTimeLimit,
}: LobbyScreenProps) {
@@ -151,7 +153,7 @@ export function LobbyScreen({
Mode de jeu