@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
33 lines (27 loc) • 1.01 kB
text/typescript
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]);
}