'use client' import classNames from 'classnames' import { usePathname, useRouter } from 'next/navigation' import { useEffect, useState } from 'react' import AccountStats from 'components/Account/AccountStats' import { Button } from 'components/Button' import Card from 'components/Card' import { ArrowCircledTopRight, ArrowDownLine, ArrowUpLine, TrashBin } from 'components/Icons' import Radio from 'components/Radio' import SwitchWithLabel from 'components/SwitchWithLabel' import { Text } from 'components/Text' import { ASSETS } from 'constants/assets' import useParams, { getRoute } from 'utils/route' import useStore from 'store' import { calculateAccountBalance } from 'utils/accounts' import { hardcodedFee } from 'utils/contants' import { formatValue } from 'utils/formatters' interface Props { setShowFundAccount: (showFundAccount: boolean) => void accounts: Account[] } const accountCardHeaderClasses = classNames( 'flex w-full items-center justify-between bg-white/20 px-4 py-2.5 text-white/70', 'border border-transparent border-b-white/20', ) export default function AccountList(props: Props) { const router = useRouter() const params = useParams() const selectedAccount = params.accountId const prices = useStore((s) => s.prices) const deleteAccount = useStore((s) => s.deleteAccount) const [isLending, setIsLending] = useState(false) const accountSelected = !!selectedAccount && !isNaN(Number(selectedAccount)) const selectedAccountDetails = props.accounts.find((account) => account.id === selectedAccount) const selectedAccountBalance = selectedAccountDetails ? calculateAccountBalance(selectedAccountDetails, prices) : 0 async function deleteAccountHandler() { if (!accountSelected) return const isSuccess = await deleteAccount({ fee: hardcodedFee, accountId: selectedAccount }) if (isSuccess) { router.push(`/wallets/${params.address}/accounts`) } } function onChangeLendSwitch(isLending: boolean) { setIsLending(isLending) /* TODO: handle lending assets */ } useEffect(() => { const element = document.getElementById(`account-${selectedAccount}`) if (element) { element.scrollIntoView({ behavior: 'smooth' }) } }, [selectedAccount]) if (!props.accounts?.length) return null return (
{props.accounts.map((account) => { const positionBalance = calculateAccountBalance(account, prices) const isActive = selectedAccount === account.id return (
{ if (isActive) return router.push(getRoute(params, { accountId: account.id })) }} > Credit Account {account.id}
} > {isActive ? ( <>
) : (
)}
) })} ) }