pussy-ts/src/pages/teleport/hooks/useSetupIbcClient.ts

/* eslint-disable no-restricted-syntax */
import { useState, useEffect } from 'react';
import { GasPrice, SigningStargateClient } from '@cosmjs/stargate';
import { useSigningClient } from 'src/contexts/signerClient';
import { getKeplr } from 'src/utils/keplrUtils';
import { Decimal } from '@cosmjs/math';
import { CYBER } from '../../../utils/config';
import useGetBalancesIbc from './useGetBalancesIbc';

import networks from '../../../utils/networkListIbc';

function useSetupIbcClient(denom, network) {
  const { signingClient } = useSigningClient();
  const [ibcClient, setIbcClient] = useState(null);
  const { balanceIbc, denomIbc } = useGetBalancesIbc(ibcClient, denom);

  useEffect(() => {
    const createClient = async () => {
      setIbcClient(null);

      let client = null;
      if (network && network !== CYBER.CHAIN_ID) {
        const keplr = await getKeplr();
        const { rpc, prefix, chainId } = networks[network];
        await keplr.enable(chainId);
        const offlineSigner = await keplr.getOfflineSignerAuto(chainId);

        const chainInfos = await keplr.getChainInfosWithoutEndpoints();
        const chainInfoA = chainInfos.find((item) => item.chainId === chainId);
        const feeCurrenciesA = chainInfoA.feeCurrencies[0];

        const GasPriceA = new GasPrice(
          Decimal.fromUserInput(
            feeCurrenciesA.gasPriceStep?.average.toString() || '0',
            3
          ),
          feeCurrenciesA?.coinMinimalDenom
        );

        const options = { prefix, gasPrice: GasPriceA };
        client = await SigningStargateClient.connectWithSigner(
          rpc,
          offlineSigner,
          options
        );
      } else {
        client = signingClient;
      }
      setIbcClient(client);
    };
    createClient();
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, [network, signingClient]);

  return { ibcClient, balanceIbc, denomIbc };
}

export default useSetupIbcClient;

Synonyms

cyb/src/pages/teleport/hooks/useSetupIbcClient.ts

Neighbours