UNPKG

@shogun-sdk/one-shot

Version:

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

45 lines 2.12 kB
import { getSolanaTokenBalances, getPortfolioTokens } from '@shogun-sdk/money-legos'; import { useQuery } from '@tanstack/react-query'; import { useCallback, useEffect, useMemo } from 'react'; import { useShogunBalances } from '../contexts/ShogunBalancesContext.js'; import { useEVMBalance } from './useEVMBalance.js'; export const useSolanaQueryKey = (userSolanaAddress) => { return useMemo(() => ['getTokensSolanaFromRPCCodex', userSolanaAddress], [userSolanaAddress]); }; export const useEVMQueryKey = (userEVMAddress) => { return useMemo(() => ['getTokensEVMFromCodex', userEVMAddress], [userEVMAddress]); }; export const useTokenBalances = ({ userEVMAddress, userSolanaAddress, tokenIn, tokenOut, }) => { const { data } = useEVMBalance(userEVMAddress); const evmQueryKey = useEVMQueryKey(userEVMAddress); const { client } = useShogunBalances(); const fetcher = useCallback(async () => { return getPortfolioTokens(client.sdk, data, userEVMAddress, { tokenIn, tokenOut }); }, [client, data, userEVMAddress, tokenIn, tokenOut]); const { data: evmBalances, isLoading: isLoadingEVM, refetch: refetchEVM, } = useQuery({ queryKey: evmQueryKey, queryFn: fetcher, enabled: !!userEVMAddress, refetchInterval: 30000, refetchIntervalInBackground: false, }); const solanaQueryKey = useSolanaQueryKey(userSolanaAddress); const { data: solanaBalances, isLoading: isLoadingSolana, refetch: refetchSolana, } = useQuery({ queryKey: solanaQueryKey, queryFn: () => getSolanaTokenBalances(client.sdk, userSolanaAddress), enabled: !!userSolanaAddress, refetchInterval: 30000, refetchIntervalInBackground: false, }); useEffect(() => { refetchEVM(); refetchSolana(); }, [refetchEVM, refetchSolana]); return useMemo(() => ({ evmBalances: evmBalances || [], solanaBalances: solanaBalances || [], isLoadingEVM, isLoadingSolana, }), [evmBalances, solanaBalances, isLoadingEVM, isLoadingSolana]); }; //# sourceMappingURL=useTokenBalances.js.map