DB:
- quiz_question gains `lang` ('fr' default) and `active` (true default); migration 0002
- only active questions are served to games (pool filter)
History:
- engine writes a game_history row at game end (modes + ranked results), fire-and-forget
- public GET /api/history/:code lists a room's recent games
- lobby shows a "Parties précédentes" collapsible (date, modes, winner/scores)
Back-office:
- create form has a FR/EN language select; lang stored
- per-question active toggle (PATCH /questions/:id) — disable without deleting;
inactive rows dimmed and labelled
- seeds set lang (opentdb=en, manual/pokemon=fr)
Verified e2e: migration applied; game played → /api/history returns it.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
22 lines
537 B
TypeScript
22 lines
537 B
TypeScript
// Historique public des parties d'une room.
|
|
|
|
const SERVER_URL = import.meta.env.VITE_SERVER_URL ?? "http://localhost:3001"
|
|
|
|
export interface GameHistoryEntry {
|
|
id: string
|
|
playedAt: string
|
|
modes: string[]
|
|
results: { name: string; score: number }[]
|
|
}
|
|
|
|
export async function fetchHistory(code: string): Promise<GameHistoryEntry[]> {
|
|
try {
|
|
const res = await fetch(`${SERVER_URL}/api/history/${code}`)
|
|
if (!res.ok) {
|
|
return []
|
|
}
|
|
return (await res.json()) as GameHistoryEntry[]
|
|
} catch {
|
|
return []
|
|
}
|
|
}
|