58 lines
2.1 KiB
TypeScript
58 lines
2.1 KiB
TypeScript
import { useState, useCallback } from 'react'
|
|
import { useReferralchef, useReferralRewardchef } from 'hooks/useContract'
|
|
import useTokenBalance, { useGetBnbBalance } from 'hooks/useTokenBalance'
|
|
import { getAddress } from 'utils/addressHelpers'
|
|
import tokensList from 'config/constants/tokens'
|
|
import useToast from 'hooks/useToast'
|
|
import { useTranslation } from 'contexts/Localization'
|
|
import { getBalanceNumber, getDecimalAmountNumber } from 'utils/formatBalance'
|
|
import { withdrawReward } from 'services/referral'
|
|
|
|
const useCheckTokenBalance = ({ isBnb, isHcc, isUsdt }) => {
|
|
const { balance: bnbTokenBalance } = useGetBnbBalance()
|
|
const { balance: usdtTokenBalance } = useTokenBalance(getAddress(tokensList.usdt.address))
|
|
const { balance: hccTokenBalance } = useTokenBalance(getAddress(tokensList.hcc.address))
|
|
const { toastWarning } = useToast()
|
|
const { t } = useTranslation()
|
|
const onCheck = useCallback(() => {
|
|
if (
|
|
(isBnb && getBalanceNumber(bnbTokenBalance) === 0) ||
|
|
(isHcc && getBalanceNumber(hccTokenBalance) === 0) ||
|
|
(isUsdt && getBalanceNumber(usdtTokenBalance) === 0)
|
|
) {
|
|
toastWarning(t('Insufficient Balance'))
|
|
}
|
|
}, [isBnb, isHcc, isUsdt])
|
|
return [onCheck]
|
|
}
|
|
|
|
export const useBuyTransaction = () => {
|
|
const referralContract = useReferralchef()
|
|
const transaction = async () => {
|
|
const data = await withdrawReward()
|
|
const { to, amount, code, signature } = data
|
|
console.log(data)
|
|
const params = [to, amount, code, signature]
|
|
const price = getDecimalAmountNumber(amount)
|
|
const res = await referralContract.adminMint(...params, { value: price })
|
|
return res
|
|
}
|
|
return transaction
|
|
}
|
|
|
|
export const useWithdraw = () => {
|
|
const referralRewardContract = useReferralRewardchef()
|
|
const transaction = async () => {
|
|
const data = await withdrawReward()
|
|
const { to, amount, expiredTime, signature } = data
|
|
console.log(data)
|
|
const params = [to, amount, expiredTime, signature]
|
|
const price = getDecimalAmountNumber(amount)
|
|
const res = await referralRewardContract.withDrawReward(...params, { value: price })
|
|
return res
|
|
}
|
|
return transaction
|
|
}
|
|
|
|
export default useCheckTokenBalance
|