Files
VdcScoreLive/src/hooks/useMatches.ts
2026-05-05 17:12:06 +01:00

39 lines
1.2 KiB
TypeScript

import { useState, useEffect } from 'react';
import { ref, onValue } from 'firebase/database';
import { db } from '../lib/firebase';
import type { Match, Escalao } from '../types/database';
export function useMatches(escalao: Escalao, jornada: number) {
const [matches, setMatches] = useState<Match[]>([]);
const [loading, setLoading] = useState(true);
const [error, setError] = useState<Error | null>(null);
useEffect(() => {
// Referência para jornadas/[escalao]/[numero_jornada]
const matchesRef = ref(db, `jornadas/${escalao}/${jornada}`);
const unsubscribe = onValue(matchesRef, (snapshot) => {
const data = snapshot.val();
if (data) {
// Converte o objeto { "id": matchData } num array de Match
const matchesList: Match[] = Object.entries(data).map(([id, matchData]: [string, any]) => ({
id,
...matchData,
jornadaId: jornada.toString()
}));
setMatches(matchesList);
} else {
setMatches([]);
}
setLoading(false);
}, (err) => {
setError(err);
setLoading(false);
});
return () => unsubscribe();
}, [escalao, jornada]);
return { matches, loading, error };
}