UNPKG

@shogun-sdk/one-shot

Version:

Shogun SDK - One Shot: React Components and hooks for cross-chain swaps

39 lines (32 loc) 1.15 kB
import { Balance, getEVMWalletBalance } from '@shogun-sdk/money-legos'; import { useQuery } from '@tanstack/react-query'; import { useCallback, useMemo } from 'react'; import { useShogunBalances } from './../contexts/ShogunBalancesContext.js'; import { useDerivedState } from './useDerivedState.js'; export const useEVMBalance = (userEVMAddress: string) => { const { client } = useShogunBalances(); const fetcher = useCallback(async () => { const balance = await getEVMWalletBalance(client.sdk, userEVMAddress); return balance; }, [client, userEVMAddress]); const { data, isLoading } = useQuery({ queryKey: ['evmBalance', userEVMAddress], queryFn: fetcher, enabled: Boolean(userEVMAddress), refetchInterval: 5000, }); const flattened = useMemo(() => { if (!data) return []; return Object.values(data).flatMap((chain) => chain.items.map((item) => ({ ...item, chainId: item.tokenId?.split(':')[1], // Extract chainId from tokenId })), ); }, [data]); const [state] = useDerivedState<Balance[]>(flattened); return { data: state, pending: isLoading, }; };