mirror of
https://github.com/datahub-project/datahub.git
synced 2025-11-21 15:23:54 +00:00
Co-authored-by: Chris Collins <chriscollins3456@gmail.com> Co-authored-by: purnimagarg1 <139125209+purnimagarg1@users.noreply.github.com>
36 lines
1013 B
TypeScript
36 lines
1013 B
TypeScript
import { useEffect, useMemo, useState } from 'react';
|
|
|
|
import { useGetEntitiesQuery } from '@graphql/entity.generated';
|
|
import { Entity } from '@types';
|
|
|
|
export function useGetEntities(
|
|
urns: string[],
|
|
checkForExistence?: boolean,
|
|
): {
|
|
entities: Entity[];
|
|
loading: boolean;
|
|
} {
|
|
const verifiedUrns = useMemo(
|
|
() => urns.filter((urn) => typeof urn === 'string' && urn.startsWith('urn:li:')),
|
|
[urns],
|
|
);
|
|
|
|
const { data, loading } = useGetEntitiesQuery({
|
|
variables: { urns: verifiedUrns, checkForExistence },
|
|
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 };
|
|
}
|