criação do website
This commit is contained in:
38
src/hooks/useMatches.ts
Normal file
38
src/hooks/useMatches.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
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 };
|
||||
}
|
||||
Reference in New Issue
Block a user