feat(lend): useUpdatedAccount implementation (#390)

* feat(lend): useUpdatedAccount implementation

* feat(lend): addressed to PR comment
This commit is contained in:
Yusuf Seyrek 2023-08-24 13:59:26 +03:00 committed by GitHub
parent 997171a185
commit 6dcc13affb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 29 additions and 2 deletions

View File

@ -7,6 +7,7 @@ import useLendAndReclaimModal from 'hooks/useLendAndReclaimModal'
import DetailsHeader from 'components/Modals/LendAndReclaim/DetailsHeader'
import AssetAmountSelectActionModal from 'components/Modals/AssetAmountSelectActionModal'
import { BNCoin } from 'types/classes/BNCoin'
import { useUpdatedAccount } from 'hooks/useUpdatedAccount'
function LendAndReclaimModalController() {
const currentAccount = useCurrentAccount()
@ -28,6 +29,8 @@ function LendAndReclaimModal({ currentAccount, config }: Props) {
const { close } = useLendAndReclaimModal()
const [isConfirming, setIsConfirming] = useToggle()
const [accountChange, setAccountChange] = useState<AccountChange | undefined>()
const { setAddedLends, setRemovedLends, removeDeposits, addDeposits } =
useUpdatedAccount(currentAccount)
const { data, action } = config
const { asset } = data
@ -39,8 +42,17 @@ function LendAndReclaimModal({ currentAccount, config }: Props) {
const handleAmountChange = useCallback(
(value: BigNumber) => {
setAccountChange(getAccountChange(isLendAction, value, asset.denom))
const coin = BNCoin.fromDenomAndBigNumber(asset.denom, value)
if (isLendAction) {
setAddedLends([coin])
removeDeposits([coin])
} else {
addDeposits([coin])
setRemovedLends([coin])
}
},
[asset.denom, isLendAction],
[addDeposits, asset.denom, isLendAction, removeDeposits, setAddedLends, setRemovedLends],
)
const handleAction = useCallback(

View File

@ -19,6 +19,8 @@ export function useUpdatedAccount(account?: Account) {
const [addedDebt, addDebt] = useState<BNCoin[]>([])
const [removedDebt, removeDebt] = useState<BNCoin[]>([])
const [addedVaultValues, addVaultValues] = useState<VaultValue[]>([])
const [addedLends, setAddedLends] = useState<BNCoin[]>([])
const [removedLends, setRemovedLends] = useState<BNCoin[]>([])
const removeDepositByDenom = useCallback(
(denom: string) => {
@ -46,11 +48,22 @@ export function useUpdatedAccount(account?: Account) {
accountCopy.vaults = addValueToVaults(addedVaultValues, [...accountCopy.vaults])
accountCopy.deposits = removeCoins(removedDeposits, [...accountCopy.deposits])
accountCopy.debts = removeCoins(removedDebt, [...accountCopy.debts])
accountCopy.lends = addCoins(addedLends, [...accountCopy.lends])
accountCopy.lends = removeCoins(removedLends, [...accountCopy.lends])
setUpdatedAccount(accountCopy)
useStore.setState({ updatedAccount: accountCopy })
return () => useStore.setState({ updatedAccount: undefined })
}, [account, addedDebt, removedDebt, addedDeposits, removedDeposits, addedVaultValues])
}, [
account,
addedDebt,
removedDebt,
addedDeposits,
removedDeposits,
addedVaultValues,
addedLends,
removedLends,
])
return {
updatedAccount,
@ -64,5 +77,7 @@ export function useUpdatedAccount(account?: Account) {
addedDebt,
removedDeposits,
removedDebt,
setAddedLends,
setRemovedLends,
}
}