import { useShuttle } from '@delphi-labs/shuttle-react' import Image from 'next/image' import { useCallback, useEffect, useMemo } from 'react' import Button from 'components/common/Button' import FullOverlayContent from 'components/common/FullOverlayContent' import { ChevronRight } from 'components/common/Icons' import Text from 'components/common/Text' import WalletFetchBalancesAndAccounts from 'components/Wallet/WalletFetchBalancesAndAccounts' import WalletSelect from 'components/Wallet/WalletSelect' import { BRIDGES } from 'constants/bridges' import useBaseAsset from 'hooks/assets/useBasetAsset' import useCurrentWallet from 'hooks/useCurrentWallet' import useToggle from 'hooks/useToggle' import useWalletBalances from 'hooks/useWalletBalances' import useStore from 'store' import { byDenom } from 'utils/array' import { defaultFee } from 'utils/constants' import { BN } from 'utils/helpers' function Bridge({ name, url, image }: Bridge) { return ( { window.open(url, '_blank') }} > {name} ) } export default function WalletBridges() { const chainConfig = useStore((s) => s.chainConfig) const address = useStore((s) => s.address) const currentWallet = useCurrentWallet() const { disconnectWallet } = useShuttle() const { data: walletBalances, isLoading } = useWalletBalances(address) const baseAsset = useBaseAsset() const [hasFunds, setHasFunds] = useToggle(false) const baseBalance = useMemo( () => walletBalances.find(byDenom(baseAsset.denom))?.amount ?? '0', [walletBalances, baseAsset], ) const handleClick = useCallback(() => { if (!currentWallet) return disconnectWallet(currentWallet) useStore.setState({ focusComponent: { component: } }) }, [currentWallet, disconnectWallet]) useEffect(() => { if (hasFunds) { useStore.setState({ focusComponent: { component: } }) return } if (BN(baseBalance).isGreaterThanOrEqualTo(defaultFee.amount[0].amount) && !isLoading) setHasFunds(true) }, [baseBalance, isLoading, hasFunds, setHasFunds]) return ( {BRIDGES.map((bridge) => ( ))} ) }