Aggiunge il dettaglio esteso di partita: formazioni e scontri diretti dal CSI
In Campionato > Storico partite ogni gara diventa cliccabile: verso /partita/$id se collegata a un evento CrAPP, verso la nuova /partita-csi/$id altrimenti (nessuna creazione automatica di eventi dal calendario CSI, quindi molte gare ne sono prive). Il dettaglio aggiunge formazioni (titolari/panchina/staff), storico scontri diretti e probabilità di vittoria calcolata dal CSI, letti on-demand da tre nuovi endpoint per-partita (match-main/players/stats.php) dietro /api/public/csi-partita/$id, con cache server per-partita separata da quella di /api/public/csi — è un dato aperto a richiesta, non precaricato per tutti come classifica e partite. Include anche logo squadra e metadati leggeri (girone, n° gara, arbitro, link al referto ufficiale) già presenti nel JSON esistente, a costo zero. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
import type { DettaglioPartitaCsi } from "./csi-core";
|
||||
|
||||
/**
|
||||
* Dettaglio di una singola gara CSI (formazioni, storico scontri diretti): una fetch in
|
||||
* più per partita, cache server 6h come `useCsi()`. Va usato solo quando l'utente apre il
|
||||
* dettaglio di una gara, mai in una lista: vedi docs/modules/collegamento-csi.md.
|
||||
*/
|
||||
export function useCsiPartita(matchId: string | undefined) {
|
||||
return useQuery<DettaglioPartitaCsi>({
|
||||
queryKey: ["csi-partita", matchId],
|
||||
queryFn: async () => {
|
||||
const res = await fetch(`/api/public/csi-partita/${matchId}`);
|
||||
if (!res.ok) throw new Error("csi-partita non disponibile");
|
||||
return res.json();
|
||||
},
|
||||
enabled: !!matchId,
|
||||
staleTime: 6 * 60 * 60_000,
|
||||
retry: 1,
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user