import { Fragment, useState } from 'react' import { ArrowRightIcon, ChevronDownIcon, ClockIcon, ArrowTopRightOnSquareIcon, LinkIcon, } from '@heroicons/react/20/solid' import dayjs from 'dayjs' import { useTranslation } from 'next-i18next' import Image from 'next/image' import { breakpoints } from '../utils/theme' import { useViewport } from '../hooks/useViewport' import { IconButton } from './shared/Button' import { Transition } from '@headlessui/react' import SheenLoader from './shared/SheenLoader' import { useWallet } from '@solana/wallet-adapter-react' import { TradeHistoryItem } from '../store/mangoStore' import { countLeadingZeros, formatFixedDecimals, trimDecimals, } from '../utils/numbers' const TradeHistoryTable = ({ tradeHistory, loading, }: { tradeHistory: Array loading: boolean }) => { const { t } = useTranslation('common') const { connected } = useWallet() const [showTradeDetails, setTradeDetails] = useState('') const { width } = useViewport() const showTableView = width ? width > breakpoints.md : false const handleShowTradeDetails = (signature: string) => { showTradeDetails ? setTradeDetails('') : setTradeDetails(signature) } return connected ? ( !loading ? ( tradeHistory.length ? ( showTableView ? ( {tradeHistory.map((h, index) => { const { block_datetime, signature, swap_in_amount, swap_in_loan_origination_fee, swap_in_price_usd, swap_in_symbol, swap_out_amount, loan, loan_origination_fee, swap_out_price_usd, swap_out_symbol, } = h const borrowAmount = loan > 0 ? `${trimDecimals( loan, countLeadingZeros(loan) + 2 )} ${swap_in_symbol}` : 0 const borrowFee = swap_in_loan_origination_fee > 0 ? swap_in_loan_origination_fee.toFixed(4) : loan_origination_fee > 0 ? loan_origination_fee.toFixed(4) : 0 const inDecimals = countLeadingZeros(swap_in_amount) + 2 const outDecimals = countLeadingZeros(swap_out_amount) + 2 return ( ) })}
{t('date')} {t('trade')} {t('borrow')} {t('borrow-fee')}

{dayjs(block_datetime).format('ddd D MMM')}

{dayjs(block_datetime).format('h:mma')}

{`${trimDecimals( swap_in_amount, inDecimals )} ${swap_in_symbol}`}

{formatFixedDecimals(swap_in_price_usd, true)} | {formatFixedDecimals( swap_in_amount * swap_in_price_usd, true )}

{`${trimDecimals( swap_out_amount, outDecimals )} ${swap_out_symbol}`}

{formatFixedDecimals(swap_out_price_usd, true)} | {formatFixedDecimals( swap_out_amount * swap_out_price_usd, true )}

{borrowAmount}

${borrowFee}

) : (
{tradeHistory.map((h) => { const { block_datetime, signature, swap_in_amount, swap_in_loan, swap_in_loan_origination_fee, swap_in_price_usd, swap_in_symbol, swap_out_amount, loan, loan_origination_fee, swap_out_price_usd, swap_out_symbol, } = h const borrowAmount = swap_in_loan > 0 ? `${trimDecimals( swap_in_loan, countLeadingZeros(swap_in_loan) + 2 )} ${swap_in_symbol}` : loan > 0 ? `${trimDecimals( loan, countLeadingZeros(loan) + 2 )} ${swap_out_symbol}` : 0 const borrowFee = swap_in_loan_origination_fee > 0 ? swap_in_loan_origination_fee.toFixed(4) : loan_origination_fee > 0 ? loan_origination_fee.toFixed(4) : 0 return (

{`${swap_in_amount.toFixed( 2 )} ${swap_in_symbol}`}

{formatFixedDecimals(swap_in_price_usd, true)} | {formatFixedDecimals( swap_in_amount * swap_in_price_usd, true )}

{`${swap_out_amount.toFixed( 2 )} ${swap_out_symbol}`}

{formatFixedDecimals(swap_out_price_usd, true)} | {formatFixedDecimals( swap_out_amount * swap_out_price_usd, true )}

handleShowTradeDetails(signature)} >

{t('date')}

{dayjs(block_datetime).format('ddd D MMM')}

{dayjs(block_datetime).format('h:mma')}

{t('borrow')}

{borrowAmount}

{t('borrow-fee')}

${borrowFee}

{t('transaction')}

View on Solscan

) })}
) ) : (

No trade history found...

) ) : (
) ) : (

Connect to view your trade history

) } export default TradeHistoryTable