import { useState, useEffect, useMemo } from "react"; import { getCurrentCeloPreloadData, getCeloPreloadDataUpdates } from "./preload"; import type { CeloPreloadData, CeloValidatorGroup } from "./types"; export function useCeloPreloadData(): CeloPreloadData { const [state, setState] = useState(getCurrentCeloPreloadData); useEffect(() => { const sub = getCeloPreloadDataUpdates().subscribe(data => { setState(data); }); return () => sub.unsubscribe(); }, []); return state; } export function useValidatorGroups(search?: string): CeloValidatorGroup[] { const { validatorGroups } = useCeloPreloadData(); return useMemo(() => { if (validatorGroups.length === 0 || !search) { return validatorGroups; } const lowercaseSearch = search.toLowerCase(); return validatorGroups.filter( vg => vg.name.toLowerCase().includes(lowercaseSearch) || vg.address.toLowerCase().includes(lowercaseSearch), ); }, [validatorGroups, search]); }