import { OrderBy } from '@cybercongress/cyber-ts/cosmos/tx/v1beta1/service';
import { useInfiniteQuery } from '@tanstack/react-query';
import { useMemo } from 'react';
import { CID_TWEET } from 'src/constants/app';
// import { useCyberClient } from 'src/contexts/queryCyberClient';
import { getTransactions } from 'src/services/transactions/lcd';

const LIMIT = 20;

function useGetLog(address: string | null) {
  // const { rpc } = useCyberClient();
  const { data, fetchNextPage, hasNextPage, refetch, error, isInitialLoading } = useInfiniteQuery(
    ['useGetLog', address],
    async ({ pageParam = 0 }: { pageParam?: number }) => {
      // const response = await rpc.cosmos.tx.v1beta1.getTxsEvent({
      //   // pagination: { limit: LIMIT, offset },
      //   events: [
      //     `cyberlink.particleFrom='${CID_TWEET}'`,
      //     `cyberlink.neuron='${address}'`,
      //   ],
      //   orderBy: OrderBy.ORDER_BY_DESC,
      // });

      const response = await getTransactions({
        events: [
          {
            key: 'cyberlink.particleFrom',
            value: CID_TWEET,
          },
          {
            key: 'cyberlink.neuron',
            value: address,
          },
        ],
        orderBy: OrderBy.ORDER_BY_DESC,
      });

      return { data: response, page: pageParam };
    },
    {
      enabled: Boolean(address),
      getNextPageParam: (lastPage) => {
        const { page } = lastPage;

        const total = lastPage.data?.pagination?.total || 0;

        if (!total || (page + 1) * LIMIT > total) {
          return undefined;
        }

        return page + 1;
      },
    }
  );

  const memoData = useMemo(() => {
    return (
      data?.pages?.reduce((acc, page) => {
        return acc.concat(page.data?.txResponses || []);
      }, []) || []
    );
  }, [data]);

  return {
    data: memoData,
    fetchNextPage,
    hasNextPage,
    refetch,
    error,
    isInitialLoading,
  };
}

export default useGetLog;

Synonyms

pussy-ts/src/pages/robot/_refactor/account/hooks/useGetLog.ts

Neighbours