Files
nym/explorer/src/hooks/useNymClient.tsx
T
2024-03-13 14:35:17 +00:00

32 lines
1.2 KiB
TypeScript

import { useEffect, useState } from 'react';
import { useChain } from '@cosmos-kit/react';
import { contracts } from '@nymproject/contract-clients';
import { MixnetClient, MixnetQueryClient } from '@nymproject/contract-clients/Mixnet.client';
import { COSMOS_KIT_USE_CHAIN, NYM_MIXNET_CONTRACT } from '@src/api/constants';
export const useNymClient = (address?: string) => {
const [nymClient, setNymClient] = useState<MixnetClient>();
const [nymQueryClient, setNymQueryClient] = useState<MixnetQueryClient>();
const { getCosmWasmClient, getSigningCosmWasmClient } = useChain(COSMOS_KIT_USE_CHAIN);
useEffect(() => {
if (address) {
const init = async () => {
const cosmWasmSigningClient = await getSigningCosmWasmClient();
const cosmWasmClient = await getCosmWasmClient();
const client = new contracts.Mixnet.MixnetClient(cosmWasmSigningClient as any, address, NYM_MIXNET_CONTRACT);
const queryClient = new contracts.Mixnet.MixnetQueryClient(cosmWasmClient as any, NYM_MIXNET_CONTRACT);
setNymClient(client);
setNymQueryClient(queryClient);
};
init();
}
}, [address, getCosmWasmClient, getSigningCosmWasmClient]);
return { nymClient, nymQueryClient };
};