From 34ad3fe93233eea477c73d03b96adfdad5fefbe6 Mon Sep 17 00:00:00 2001 From: gary <1032230992@qq.com> Date: Fri, 29 Apr 2022 10:33:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E4=BD=99=E9=A2=9D?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/state/boards/fetchBoardsUser.ts | 10 +++++----- src/types/referral.ts | 9 ++++++++- src/views/Referral/components/BuyActions.tsx | 17 ++++++++++++++--- src/views/Referral/components/Regimental.tsx | 4 ++-- src/views/Referral/hooks/index.ts | 11 +++++------ src/views/Referral/index.tsx | 2 -- 6 files changed, 34 insertions(+), 19 deletions(-) diff --git a/src/state/boards/fetchBoardsUser.ts b/src/state/boards/fetchBoardsUser.ts index 28174d5..1ea0d89 100644 --- a/src/state/boards/fetchBoardsUser.ts +++ b/src/state/boards/fetchBoardsUser.ts @@ -8,8 +8,8 @@ import { getAddress, getBoardAddress } from 'utils/addressHelpers' export const fetchBoardUserAllowances = async (account: string) => { const calls = boardsConfig.map((board) => { const tokenAddresses = getAddress(board.tokenAddresses) - const boardChefAdress = getAddress(board.contractAddress) - return { address: tokenAddresses, name: 'allowance', params: [account, boardChefAdress] } + const boardChefAddress = getAddress(board.contractAddress) + return { address: tokenAddresses, name: 'allowance', params: [account, boardChefAddress] } }) const rawLpAllowances = await multicall(erc20ABI, calls) @@ -39,15 +39,15 @@ export const fetchBoardUserTokenBalances = async (account: string) => { export const fetchBoardUserInfo = async (account: string) => { const data = await Promise.all( boardsConfig.map(async (board) => { - const boardChefAdress = getAddress(board.contractAddress) + const boardChefAddress = getAddress(board.contractAddress) const calls = [ { - address: boardChefAdress, + address: boardChefAddress, name: 'userInfo', params: [account], }, { - address: boardChefAdress, + address: boardChefAddress, name: 'pendingHCC', params: [account], }, diff --git a/src/types/referral.ts b/src/types/referral.ts index 43cecd0..1aa1ea1 100644 --- a/src/types/referral.ts +++ b/src/types/referral.ts @@ -8,7 +8,14 @@ export interface ReferralConfigInfo { dividendSecond?: number receiveLimit?: number id?: number - properties?: Record + properties?: { + cover?: string + name?: string + price?: { + HCC: string + USDT: string + } + } type?: string } diff --git a/src/views/Referral/components/BuyActions.tsx b/src/views/Referral/components/BuyActions.tsx index 950f259..39dae44 100644 --- a/src/views/Referral/components/BuyActions.tsx +++ b/src/views/Referral/components/BuyActions.tsx @@ -1,5 +1,5 @@ import React, { useState, useEffect } from 'react' -import { Flex, Button, Modal, Image } from '@pancakeswap/uikit' +import { Flex, Button } from '@pancakeswap/uikit' import styled from 'styled-components' import { useTranslation } from 'contexts/Localization' import { useAccount } from 'state/userInfo/hooks' @@ -10,6 +10,7 @@ import useToast from 'hooks/useToast' import { checkBuyResult } from 'services/referral' import useRefresh from 'hooks/useRefresh' import tokens from 'config/constants/tokens' +import { useReferralCommanderConfigInfo } from 'state/referral/hooks' import { useCheckTokenBalance, useApproveReferral, useBuyTransaction } from '../hooks' const Btn = styled(Button)` @@ -22,6 +23,7 @@ const Btn = styled(Button)` const BuyActions: React.FC = () => { const { t } = useTranslation() const account = useAccount() + const referralCommanderConfigInfo = useReferralCommanderConfigInfo() const [allowanceList, setAllowanceList] = useState({ usdt: 0, hcc: 0 }) const usdtContract = useERC20(getAddress(tokens.usdt.address)) const [loading, setLoading] = useState(false) @@ -32,6 +34,7 @@ const BuyActions: React.FC = () => { const { onApprove: onUsdtApprove } = useApproveReferral(usdtContract) const { onApprove: onHccApprove } = useApproveReferral(hccContract) const buyTransaction = useBuyTransaction() + const [onCheckBalance] = useCheckTokenBalance() const handleApprove = async (approve) => { try { setLoading(true) @@ -52,8 +55,16 @@ const BuyActions: React.FC = () => { const handleBuy = async () => { setLoading(true) try { - const res = await buyTransaction() - setTxId(res.hash) + const enoughBalance = onCheckBalance( + referralCommanderConfigInfo.properties?.price?.HCC, + referralCommanderConfigInfo.properties?.price?.USDT, + ) + if (enoughBalance) { + const res = await buyTransaction() + setTxId(res.hash) + } else { + setLoading(false) + } } catch (e: any) { setLoading(false) toastError(e?.error?.message || e.message) diff --git a/src/views/Referral/components/Regimental.tsx b/src/views/Referral/components/Regimental.tsx index d88649e..5710b34 100644 --- a/src/views/Referral/components/Regimental.tsx +++ b/src/views/Referral/components/Regimental.tsx @@ -87,10 +87,10 @@ const RegimentalCom: React.FC = () => { - {referralCommanderConfigInfo.properties.name} + {referralCommanderConfigInfo?.properties?.name} - + {/* */} diff --git a/src/views/Referral/hooks/index.ts b/src/views/Referral/hooks/index.ts index c30ef9d..4283a47 100644 --- a/src/views/Referral/hooks/index.ts +++ b/src/views/Referral/hooks/index.ts @@ -9,21 +9,20 @@ import { ethers, Contract } from 'ethers' import { getBalanceNumber, getDecimalAmountNumber } from 'utils/formatBalance' import { getWithdrawRewardParams, getBuyReferralParams } from 'services/referral' -export const useCheckTokenBalance = ({ isBnb, isHcc, isUsdt }) => { +export const useCheckTokenBalance = () => { 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( (hccAmount, usdtAmount) => { - if ( - (isHcc && getBalanceNumber(hccTokenBalance) === hccAmount) || - (isUsdt && getBalanceNumber(usdtTokenBalance) === usdtAmount) - ) { + if (getBalanceNumber(hccTokenBalance) <= hccAmount || getBalanceNumber(usdtTokenBalance) <= usdtAmount) { toastWarning(t('Insufficient Balance')) + return false } + return true }, - [isBnb, isHcc, isUsdt], + [usdtTokenBalance, hccTokenBalance], ) return [onCheck] } diff --git a/src/views/Referral/index.tsx b/src/views/Referral/index.tsx index 1eec00b..7484254 100644 --- a/src/views/Referral/index.tsx +++ b/src/views/Referral/index.tsx @@ -41,8 +41,6 @@ const Nft: React.FC = () => { const account = useAccount() const referralIsCommander = useReferralIsCommander() - // const referralIsCommander = false - console.log('referralIsCommander:', referralIsCommander) useEffect(() => { dispatch(fetchReferralInfoAsync(account)) }, [account])