import { useCallback } from 'react'
import AssetAmountSelectActionModal from 'components/Modals/AssetAmountSelectActionModal'
import DetailsHeader from 'components/Modals/LendAndReclaim/DetailsHeader'
import useCurrentAccount from 'hooks/useCurrentAccount'
import useLendAndReclaimModal from 'hooks/useLendAndReclaimModal'
import { useUpdatedAccount } from 'hooks/useUpdatedAccount'
import useStore from 'store'
import { BNCoin } from 'types/classes/BNCoin'
function LendAndReclaimModalController() {
const currentAccount = useCurrentAccount()
const { config } = useLendAndReclaimModal()
if (!config || !currentAccount) return null
return
}
interface Props {
currentAccount: Account
config: LendAndReclaimModalConfig
}
function LendAndReclaimModal({ currentAccount, config }: Props) {
const lend = useStore((s) => s.lend)
const reclaim = useStore((s) => s.reclaim)
const { close } = useLendAndReclaimModal()
const { simulateLending } = useUpdatedAccount(currentAccount)
const { data, action } = config
const { asset } = data
const isLendAction = action === 'lend'
const actionText = isLendAction ? 'Lend' : 'Unlend'
const coinBalances = currentAccount[isLendAction ? 'deposits' : 'lends'] ?? []
const handleAmountChange = useCallback(
(value: BigNumber) => {
const coin = BNCoin.fromDenomAndBigNumber(asset.denom, value)
simulateLending(isLendAction, coin)
},
[asset.denom, isLendAction, simulateLending],
)
const handleAction = useCallback(
(value: BigNumber, isMax: boolean) => {
const coin = BNCoin.fromDenomAndBigNumber(asset.denom, value)
const options = {
accountId: currentAccount.id,
coin,
isMax,
}
if (isLendAction) {
lend(options)
} else {
reclaim(options)
}
close()
},
[asset.denom, close, currentAccount.id, isLendAction, lend, reclaim],
)
return (
}
coinBalances={coinBalances}
actionButtonText={actionText}
title={`${actionText} ${asset.symbol}`}
onClose={close}
onAction={handleAction}
onChange={handleAmountChange}
/>
)
}
export default LendAndReclaimModalController