hiCity-nft/src/views/Referral/hooks/index.ts

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