import { useEffect, useState } from 'react';
import { PATTERN_CYBER } from 'src/constants/patterns';
import { useCyberlinksByParticleQuery } from 'src/generated/graphql';
import useQueueIpfsContent from 'src/hooks/useQueueIpfsContent';
import { QUERY_GET_FOLLOWERS } from './query';

const useGetDataGql = () => {
  const { fetchWithDetails } = useQueueIpfsContent();
  const { data: dataGql, loading: loadingGql } = useCyberlinksByParticleQuery({
    variables: {
      limit: 1000,
      where: QUERY_GET_FOLLOWERS,
      offset: 0,
    },
  });
  const [data, setData] = useState([]);

  useEffect(() => {
    if (!loadingGql && fetchWithDetails) {
      if (dataGql) {
        const { cyberlinks } = dataGql;

        cyberlinks.forEach(async (item) => {
          const addressResolve = fetchWithDetails
            ? (await fetchWithDetails(item.to)).content
            : null;
          if (addressResolve?.match(PATTERN_CYBER)) {
            setData((itemData) => [
              ...itemData,
              {
                to: addressResolve,
                subject: item.neuron,
                txhash: item.transaction_hash,
              },
            ]);
          }
        });
      }
    }
  }, [dataGql, loadingGql, fetchWithDetails]);

  return { data };
};

export default useGetDataGql;

Synonyms

pussy-ts/src/redux/hooks.ts
cyb/src/redux/hooks.ts
cyber-ts/packages/cyber-ts/src/hooks.ts

Neighbours