cyb/src/hooks/usePoolListInterval.ts

import { QueryLiquidityPoolsResponse } from '@cybercongress/cyber-js/build/codec/tendermint/liquidity/v1beta1/query';
import { useQuery } from '@tanstack/react-query';
import { useEffect, useState } from 'react';
import { useQueryClient } from 'src/contexts/queryClient';
import { setPools } from 'src/redux/features/warp';
import { useAppDispatch, useAppSelector } from 'src/redux/hooks';
import { Option } from 'src/types';

type OptionPoolListInterval = {
  refetchInterval?: number | false;
};

const keyQuery = 'liquidityPools';

function usePoolListInterval(option: OptionPoolListInterval = { refetchInterval: false }) {
  const queryClient = useQueryClient();
  const dispatch = useAppDispatch();
  const { pools: poolsLS } = useAppSelector((state) => state.warp);

  const [dataPool, setDataPool] = useState<Option<QueryLiquidityPoolsResponse>>(poolsLS);

  const { data } = useQuery(
    [keyQuery],
    () => {
      return queryClient?.pools() as Option<QueryLiquidityPoolsResponse>;
    },
    {
      enabled: Boolean(queryClient),
      refetchInterval: option.refetchInterval,
    }
  );

  useEffect(() => {
    if (data) {
      setDataPool(data);
      dispatch(setPools(data));
    }
  }, [data, dispatch]);

  return dataPool?.pools;
}

export default usePoolListInterval;

Synonyms

pussy-ts/src/hooks/usePoolListInterval.ts

Neighbours