mango-v4-ui/hooks/useAccountPositionsFull.ts

38 lines
1.1 KiB
TypeScript
Raw Normal View History

2023-09-08 02:39:56 -07:00
import { Bank } from '@blockworks-foundation/mango-v4'
import useMangoAccountAccounts from './useMangoAccountAccounts'
import { useMemo } from 'react'
export default function useTokenPositionsFull(banks: Array<Bank | undefined>) {
2023-09-08 02:39:56 -07:00
const { usedTokens, totalTokens } = useMangoAccountAccounts()
const tokenPositionsFull = useMemo(() => {
if (
banks.every((bank) => bank === undefined) ||
!usedTokens.length ||
!totalTokens.length
2023-09-08 02:39:56 -07:00
)
return false
let alreadyHasPositionCount = 0
for (const bank of banks) {
const hasPosition = usedTokens.find(
(token) => token.tokenIndex === bank?.tokenIndex,
)
if (hasPosition) {
alreadyHasPositionCount += 1
}
}
2023-09-08 02:39:56 -07:00
const availableTokenPositions = totalTokens.length - usedTokens.length
2023-09-08 02:39:56 -07:00
if (
alreadyHasPositionCount === banks.length ||
availableTokenPositions >= banks.length ||
(banks.length === 2 &&
alreadyHasPositionCount &&
alreadyHasPositionCount === availableTokenPositions)
2023-09-08 02:39:56 -07:00
) {
return false
} else return true
}, [banks, usedTokens, totalTokens])
2023-09-08 02:39:56 -07:00
return tokenPositionsFull
}