import { useCallback, useMemo, useState } from 'react' import { useLocation, useNavigate, useParams } from 'react-router-dom' import AssetBalanceRow from 'components/AssetBalanceRow' import Button from 'components/Button' import { ArrowRight } from 'components/Icons' import Modal from 'components/Modal' import AccoundDeleteAlertDialog from 'components/Modals/Account/AccountDeleteAlertDialog' import Text from 'components/Text' import useStore from 'store' import { BNCoin } from 'types/classes/BNCoin' import { getAssetByDenom } from 'utils/assets' import { combineBNCoins } from 'utils/parsers' import { getPage, getRoute } from 'utils/route' interface Props { modal: Account } export default function AccountDeleteController() { const modal = useStore((s) => s.accountDeleteModal) if (!modal) return null return } function AccountDeleteModal(props: Props) { const modal = props.modal const deleteAccount = useStore((s) => s.deleteAccount) const navigate = useNavigate() const { pathname } = useLocation() const { address } = useParams() const { debts, vaults, id: accountId } = modal || {} const [isConfirming, setIsConfirming] = useState(false) const closeDeleteAccountModal = useCallback(() => { useStore.setState({ accountDeleteModal: null }) }, []) const deleteAccountHandler = useCallback(async () => { setIsConfirming(true) const options = { accountId: modal.id, lends: modal.lends } const isSuccess = await deleteAccount(options) setIsConfirming(false) if (isSuccess) { navigate(getRoute(getPage(pathname), address)) closeDeleteAccountModal() } }, [modal, deleteAccount, navigate, pathname, address, closeDeleteAccountModal]) const depositsAndLends = useMemo( () => combineBNCoins([...modal.deposits, ...modal.lends]), [modal], ) if (debts.length > 0) return ( , onClick: () => { navigate(getRoute('borrow', address, accountId)) closeDeleteAccountModal() }, }} /> ) if (vaults.length > 0) return ( , onClick: () => { navigate(getRoute('farm', address, accountId)) closeDeleteAccountModal() }, }} /> ) if (depositsAndLends.length === 0) return ( , isAsync: true, onClick: deleteAccountHandler, }} /> ) return ( {`Delete Credit Account ${modal.id}`} } modalClassName='max-w-modal-sm' headerClassName='gradient-header p-4 border-b-white/5 border-b' contentClassName='w-full' >
The following assets within your credit account will be sent to your wallet.
{depositsAndLends.map((position, index) => { const coin = BNCoin.fromDenomAndBigNumber(position.denom, position.amount) const asset = getAssetByDenom(position.denom) if (!asset) return null return })}
) }