cyb/src/containers/ipfs/hooks/useGetCommunity.ts

import { useQuery } from '@tanstack/react-query';
import { getFromLink, getToLink } from 'src/services/transactions/lcd';

const reduceParticleArr = (data) => {
  return data.reduce((acc, item) => {
    let addressCreator = '';
    if (item.body.messages[0].neuron) {
      addressCreator = item.body.messages[0].neuron;
    }
    if (item.body.messages[0].sender) {
      addressCreator = item.body.messages[0].sender;
    }
    return [...acc, addressCreator];
  }, []);
};

const offset = '0';
const limit = '20';

const fetchFunc = async (hash, func) => {
  try {
    const responseSearchResults = await func(hash, offset, limit);
    return responseSearchResults?.txs || [];
  } catch (_error) {
    return [];
  }
};

function useGetCommunity(cid: string) {
  const { data } = useQuery(
    ['useGetCommunity', cid],
    async () => {
      const responseTo = await fetchFunc(cid, getToLink);
      const responseFrom = await fetchFunc(cid, getFromLink);
      const reduceTo = reduceParticleArr(responseTo);
      const reduceFrom = reduceParticleArr(responseFrom);

      return [...new Set(reduceTo.concat(reduceFrom))];
    },
    {
      enabled: Boolean(cid),
      retry: false,
      staleTime: 5 * 60 * 1000,
    }
  );
  return { community: data };
}

export default useGetCommunity;

Synonyms

pussy-ts/src/containers/ipfs/hooks/useGetCommunity.ts
pussy-ts/src/pages/robot/_refactor/account/hooks/useGetCommunity.ts
cyb/src/pages/robot/_refactor/account/hooks/useGetCommunity.ts

Neighbours