33 lines
954 B
TypeScript
Raw Normal View History

import { useEffect, useMemo, useState } from 'react';
import { useGetEntitiesQuery } from '@graphql/entity.generated';
import { Entity } from '@types';
2025-01-29 20:42:01 -05:00
export function useGetEntities(urns: string[]): {
entities: Entity[];
loading: boolean;
} {
const verifiedUrns = useMemo(
() => urns.filter((urn) => typeof urn === 'string' && urn.startsWith('urn:li:')),
[urns],
);
2025-01-29 20:42:01 -05:00
const { data, loading } = useGetEntitiesQuery({
variables: { urns: verifiedUrns },
skip: !verifiedUrns.length,
fetchPolicy: 'cache-first',
});
const [entities, setEntities] = useState<Entity[]>([]);
useEffect(() => {
if (data?.entities && data.entities.length > 0) {
setEntities(data.entities as Entity[]);
} else if (!loading && (!data?.entities || data.entities.length === 0)) {
setEntities([]);
}
}, [data, loading]);
return { entities, loading };
2025-01-29 20:42:01 -05:00
}