import { useEffect, useState } from 'react';
import { useQuery } from '@apollo/client';
import useQueueIpfsContent from 'src/hooks/useQueueIpfsContent';
import { PATTERN_CYBER } from 'src/constants/app';
import QUERY_GET_FOLLOWERS from './query';
const useGetDataGql = () => {
const { fetchWithDetails } = useQueueIpfsContent();
const { data: dataGql, loading: loadingGql } = useQuery(QUERY_GET_FOLLOWERS);
const [data, setData] = useState([]);
useEffect(() => {
if (!loadingGql && fetchWithDetails) {
if (dataGql !== null && dataGql.cyberlinks) {
const { cyberlinks } = dataGql;
cyberlinks.forEach(async (item) => {
const addressResolve = fetchWithDetails
? (await fetchWithDetails(item.particle_to)).content
: null;
if (addressResolve && addressResolve.match(PATTERN_CYBER)) {
setData((itemData) => [
...itemData,
{
to: addressResolve,
subject: item.neuron,
txhash: item.transaction_hash,
},
]);
}
});
}
}
}, [dataGql, loadingGql, fetchWithDetails]);
return { data };
};
export default useGetDataGql;