export function useUpdateSchemaFromEntities()

in packages/graph-explorer/src/core/StateProvider/schema.ts [205:236]


export function useUpdateSchemaFromEntities() {
  return useAtomCallback(
    useCallback((get, set, entities: { vertices: Vertex[]; edges: Edge[] }) => {
      const activeSchema = get(activeSchemaSelector);
      if (entities.vertices.length === 0 && entities.edges.length === 0) {
        return;
      }
      if (!activeSchema) {
        return;
      }
      if (!shouldUpdateSchemaFromEntities(entities, activeSchema)) {
        logger.debug("Schema is already up to date with the given entities");
        return;
      }
      startTransition(() => {
        logger.debug("Updating schema from entities");
        set(activeSchemaSelector, prev => {
          if (!prev) {
            return prev;
          }
          return updateSchemaFromEntities(
            {
              nodes: toNodeMap(entities.vertices),
              edges: toEdgeMap(entities.edges),
            },
            prev
          );
        });
      });
    }, [])
  );
}