feat: 修改请求
This commit is contained in:
parent
bd09158250
commit
091d628025
|
|
@ -1053,15 +1053,10 @@
|
||||||
"Community Auctions": "Community Auctions",
|
"Community Auctions": "Community Auctions",
|
||||||
"FAQs": "FAQs",
|
"FAQs": "FAQs",
|
||||||
"Auction duration": "Auction duration",
|
"Auction duration": "Auction duration",
|
||||||
"Terms & Conditions": "Terms & Conditions",
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"Hcc Info": "HighCityCoin",
|
"Hcc Info": "HighCityCoin",
|
||||||
"Hcc Nft": "其作用主要是在HighCitySwap上购买NFT、NFT盒子与其他可交易产品。",
|
"Hcc Nft": "其作用主要是在HighCitySwap上购买NFT、NFT盒子与其他可交易产品。",
|
||||||
"Hcc BTC": "同时,HCC与BTC、ETH具有相同属性,可以进行自由交易。",
|
"Hcc BTC": "同时,HCC与BTC、ETH具有相同属性,可以进行自由交易。",
|
||||||
"Bazaar":"NFT市场"
|
"Bazaar": "NFT市场",
|
||||||
|
"Insufficient Balance": "余额不足"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1055,8 +1055,6 @@
|
||||||
"Auction duration": "Auction duration",
|
"Auction duration": "Auction duration",
|
||||||
"Terms & Conditions": "Terms & Conditions",
|
"Terms & Conditions": "Terms & Conditions",
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"Hcc Info": "HighCityCoin简称HCC,由HighCityTM铸造,",
|
"Hcc Info": "HighCityCoin简称HCC,由HighCityTM铸造,",
|
||||||
"Hcc Nft": "其作用主要是在HighCitySwap上购买NFT、NFT盒子与其他可交易产品。",
|
"Hcc Nft": "其作用主要是在HighCitySwap上购买NFT、NFT盒子与其他可交易产品。",
|
||||||
"Hcc BTC": "同时,HCC与BTC、ETH具有相同属性,可以进行自由交易。",
|
"Hcc BTC": "同时,HCC与BTC、ETH具有相同属性,可以进行自由交易。",
|
||||||
|
|
@ -1120,5 +1118,6 @@
|
||||||
"By using the invitation at the top right of the page, new users can be invited to enter and obtained after users purchase coins": "使用页面右上方的邀请,可邀请新用户进入,并在用户购买币后获得",
|
"By using the invitation at the top right of the page, new users can be invited to enter and obtained after users purchase coins": "使用页面右上方的邀请,可邀请新用户进入,并在用户购买币后获得",
|
||||||
"The commission": "的提成!",
|
"The commission": "的提成!",
|
||||||
"market value": "市值",
|
"market value": "市值",
|
||||||
"Loaded all":"已加载全部"
|
"Loaded all": "已加载全部",
|
||||||
|
"Insufficient Balance": "余额不足"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,33 @@
|
||||||
import request from 'utils/request'
|
import request from 'utils/request'
|
||||||
|
|
||||||
export const getReferralInfo = () => {
|
export const getReferralRewardInfo = () => {
|
||||||
return request.request({
|
return request.request({
|
||||||
url: '/high_city/app/api/invite/reward',
|
url: '/high_city/app/api/invite/reward',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export const withdrawReward = () => {
|
export const getReferralConfigInfo = () => {
|
||||||
|
return request.request({
|
||||||
|
url: '/high_city/app/api/invite/config',
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getBuyReferralParams = () => {
|
||||||
|
return request.request({
|
||||||
|
url: '/high_city/app/api/invite/commander/purchase',
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getWithdrawRewardParams = () => {
|
||||||
return request.request({
|
return request.request({
|
||||||
url: '/high_city/app/api/invite/reward/receive',
|
url: '/high_city/app/api/invite/reward/receive',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
export const checkWithdrawResult = (params) => {
|
export const checkBuyResult = (params) => {
|
||||||
return request.request({
|
return request.request({
|
||||||
url: '/high_city/app/api/invite/commander/tx',
|
url: '/high_city/app/api/invite/commander/tx',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
|
|
@ -28,4 +42,4 @@ export const inviteReceive = () => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export default getReferralInfo
|
export default getReferralRewardInfo
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { createSlice } from '@reduxjs/toolkit'
|
import { createSlice } from '@reduxjs/toolkit'
|
||||||
import { getReferralInfo } from 'services/referral'
|
import { getReferralRewardInfo, getReferralConfigInfo } from 'services/referral'
|
||||||
import { ReferralInfo, ReferralConfigType } from 'types/referral'
|
import { ReferralInfo, ReferralConfigType, ReferralConfigInfo } from 'types/referral'
|
||||||
import BigNumber from 'bignumber.js'
|
import BigNumber from 'bignumber.js'
|
||||||
import erc20ABI from 'config/abi/erc20.json'
|
import erc20ABI from 'config/abi/erc20.json'
|
||||||
import multicall from 'utils/multicall'
|
import multicall from 'utils/multicall'
|
||||||
|
|
@ -16,7 +16,6 @@ const initialState: ReferralState = {
|
||||||
}
|
}
|
||||||
const payWayList = {
|
const payWayList = {
|
||||||
usdt: tokens.usdt,
|
usdt: tokens.usdt,
|
||||||
// bnb: tokens.bnb,
|
|
||||||
hcc: tokens.hcc,
|
hcc: tokens.hcc,
|
||||||
}
|
}
|
||||||
export const referralSlice = createSlice({
|
export const referralSlice = createSlice({
|
||||||
|
|
@ -40,13 +39,14 @@ export const fetchReferralInfoAsync = (account) => async (dispatch) => {
|
||||||
dispatch(setReferralInfo({}))
|
dispatch(setReferralInfo({}))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const data: ReferralInfo = await getReferralInfo()
|
const data: ReferralInfo = await getReferralRewardInfo()
|
||||||
|
const configInfo: ReferralConfigInfo[] = await getReferralConfigInfo()
|
||||||
dispatch(
|
dispatch(
|
||||||
setReferralInfo({
|
setReferralInfo({
|
||||||
commanderConfigInfo: data.inviteConfigList?.find((item) => item.type === ReferralConfigType.COMMANDER),
|
commanderConfigInfo: configInfo?.find((item) => item.type === ReferralConfigType.COMMANDER),
|
||||||
normalConfigInfo: data.inviteConfigList?.find((item) => item.type === ReferralConfigType.NORMAL),
|
normalConfigInfo: configInfo?.find((item) => item.type === ReferralConfigType.NORMAL),
|
||||||
isCommander: data.isCommander,
|
isCommander: data.isCommander,
|
||||||
rewardInfo: data.reward,
|
rewardInfo: data.reward || {},
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -62,7 +62,10 @@ export const fetchReferralUserAllowances = async (account: string) => {
|
||||||
const parsedLpAllowances = rawLpAllowances.map((balance) => {
|
const parsedLpAllowances = rawLpAllowances.map((balance) => {
|
||||||
return new BigNumber(balance).toNumber()
|
return new BigNumber(balance).toNumber()
|
||||||
})
|
})
|
||||||
return parsedLpAllowances
|
return {
|
||||||
|
usdt: parsedLpAllowances[0],
|
||||||
|
hcc: parsedLpAllowances[1],
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default referralSlice.reducer
|
export default referralSlice.reducer
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,109 @@
|
||||||
|
import React, { useState, useEffect } from 'react'
|
||||||
|
import { Flex, Button, Modal, Image } from '@pancakeswap/uikit'
|
||||||
|
import styled from 'styled-components'
|
||||||
|
import { useTranslation } from 'contexts/Localization'
|
||||||
|
import { useAccount } from 'state/userInfo/hooks'
|
||||||
|
import { fetchReferralUserAllowances } from 'state/referral'
|
||||||
|
import { useERC20 } from 'hooks/useContract'
|
||||||
|
import { getAddress } from 'utils/addressHelpers'
|
||||||
|
import useToast from 'hooks/useToast'
|
||||||
|
import { checkBuyResult } from 'services/referral'
|
||||||
|
import useRefresh from 'hooks/useRefresh'
|
||||||
|
import tokens from 'config/constants/tokens'
|
||||||
|
import { useCheckTokenBalance, useApproveReferral, useBuyTransaction } from '../hooks'
|
||||||
|
|
||||||
|
// interface BuyActionsProps {
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
const Btn = styled(Button)`
|
||||||
|
width: 50%;
|
||||||
|
margin: 20px auto 0px auto;
|
||||||
|
border-radius: 50px;
|
||||||
|
background: linear-gradient(180deg, #7be0fc 0%, #ac7bf1 100%);
|
||||||
|
border: none;
|
||||||
|
`
|
||||||
|
const BuyActions: React.FC = () => {
|
||||||
|
const { t } = useTranslation()
|
||||||
|
const account = useAccount()
|
||||||
|
const [allowanceList, setAllowanceList] = useState({ usdt: 0, hcc: 0 })
|
||||||
|
const usdtContract = useERC20(getAddress(tokens.usdt.address))
|
||||||
|
const [loading, setLoading] = useState(false)
|
||||||
|
const [txId, setTxId] = useState()
|
||||||
|
const { toastSuccess } = useToast()
|
||||||
|
const { fastRefresh } = useRefresh()
|
||||||
|
const hccContract = useERC20(getAddress(tokens.hcc.address))
|
||||||
|
const { onApprove: onUsdtApprove } = useApproveReferral(usdtContract)
|
||||||
|
const { onApprove: onHccApprove } = useApproveReferral(hccContract)
|
||||||
|
const buyTransaction = useBuyTransaction()
|
||||||
|
const handleApprove = async (approve) => {
|
||||||
|
try {
|
||||||
|
setLoading(true)
|
||||||
|
await approve()
|
||||||
|
setLoading(false)
|
||||||
|
getAllowances()
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const getAllowances = async () => {
|
||||||
|
const allowances = await fetchReferralUserAllowances(account)
|
||||||
|
setAllowanceList({
|
||||||
|
usdt: allowances.usdt,
|
||||||
|
hcc: allowances.hcc,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const handleBuy = async () => {
|
||||||
|
await buyTransaction()
|
||||||
|
}
|
||||||
|
const getTransactionResult = async () => {
|
||||||
|
const res = await checkBuyResult({ tx: txId })
|
||||||
|
if (res?.success) {
|
||||||
|
setLoading(false)
|
||||||
|
setTxId(undefined)
|
||||||
|
toastSuccess('Buy Success')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
useEffect(() => {
|
||||||
|
if (txId && loading) {
|
||||||
|
getTransactionResult()
|
||||||
|
}
|
||||||
|
}, [fastRefresh])
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (account) {
|
||||||
|
getAllowances()
|
||||||
|
} else {
|
||||||
|
setAllowanceList({ usdt: 0, hcc: 0 })
|
||||||
|
}
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Flex>
|
||||||
|
{!allowanceList.usdt && (
|
||||||
|
<Btn
|
||||||
|
disabled={loading}
|
||||||
|
onClick={() => {
|
||||||
|
handleApprove(onUsdtApprove)
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{t('Approve %coin% Contract', { coin: 'usdt' })}
|
||||||
|
</Btn>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{!allowanceList.hcc && (
|
||||||
|
<Btn
|
||||||
|
disabled={loading}
|
||||||
|
onClick={() => {
|
||||||
|
handleApprove(onHccApprove)
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{t('Approve %coin% Contract', { coin: 'hcc' })}
|
||||||
|
</Btn>
|
||||||
|
)}
|
||||||
|
{allowanceList?.usdt && allowanceList.hcc ? <Btn onClick={handleBuy}>{t('Buy It Now')}</Btn> : null}
|
||||||
|
</Flex>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default BuyActions
|
||||||
|
|
@ -3,6 +3,7 @@ import styled from 'styled-components'
|
||||||
import { useTranslation } from 'contexts/Localization'
|
import { useTranslation } from 'contexts/Localization'
|
||||||
import { useReferralNormalConfigInfo, useReferralCommanderConfigInfo } from 'state/referral/hooks'
|
import { useReferralNormalConfigInfo, useReferralCommanderConfigInfo } from 'state/referral/hooks'
|
||||||
import { Flex, Button, Modal, Image } from '@pancakeswap/uikit'
|
import { Flex, Button, Modal, Image } from '@pancakeswap/uikit'
|
||||||
|
import BuyActions from './BuyActions'
|
||||||
import TextFlex from './TextFlex'
|
import TextFlex from './TextFlex'
|
||||||
import FlexCom from './FlexCom'
|
import FlexCom from './FlexCom'
|
||||||
|
|
||||||
|
|
@ -27,13 +28,7 @@ const InfoDiv = styled.div`
|
||||||
margin-left: 60px;
|
margin-left: 60px;
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
const UpBtn = styled(Button)`
|
|
||||||
width: 50%;
|
|
||||||
margin: 20px auto 0px auto;
|
|
||||||
border-radius: 50px;
|
|
||||||
background: linear-gradient(180deg, #7be0fc 0%, #ac7bf1 100%);
|
|
||||||
border: none;
|
|
||||||
`
|
|
||||||
const ImageDiv = styled(Image)`
|
const ImageDiv = styled(Image)`
|
||||||
width: 300px;
|
width: 300px;
|
||||||
height: 300px;
|
height: 300px;
|
||||||
|
|
@ -77,10 +72,10 @@ const BuyNftModal: React.FC = () => {
|
||||||
<FlexCom name={t('Assets and chain')} value={t('Assets and chain')} />
|
<FlexCom name={t('Assets and chain')} value={t('Assets and chain')} />
|
||||||
</InfoDiv>
|
</InfoDiv>
|
||||||
</Flex>
|
</Flex>
|
||||||
|
<BuyActions />
|
||||||
<Flex>
|
{/* <Flex>
|
||||||
<UpBtn>{t('Buy It Now')}</UpBtn>
|
<UpBtn>{t('Buy It Now')}</UpBtn>
|
||||||
</Flex>
|
</Flex> */}
|
||||||
</ModalDiv>
|
</ModalDiv>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -55,9 +55,7 @@ const ConnectedCom: React.FC = () => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const [onBuyModal] = useModal(<BuyNftModal />)
|
const [onBuyModal] = useModal(<BuyNftModal />)
|
||||||
const referralNormalConfigInfo = useReferralNormalConfigInfo()
|
const referralNormalConfigInfo = useReferralNormalConfigInfo()
|
||||||
console.log('referralNormalConfigInfo:', referralNormalConfigInfo)
|
|
||||||
const referralRewardInfo = useReferralRewardInfo()
|
const referralRewardInfo = useReferralRewardInfo()
|
||||||
console.log('referralRewardInfo:', referralRewardInfo)
|
|
||||||
const referralCommanderConfigInfo = useReferralCommanderConfigInfo()
|
const referralCommanderConfigInfo = useReferralCommanderConfigInfo()
|
||||||
const getInviteReceive = async () => {
|
const getInviteReceive = async () => {
|
||||||
await inviteReceive()
|
await inviteReceive()
|
||||||
|
|
|
||||||
|
|
@ -1,39 +1,41 @@
|
||||||
import { useState, useCallback } from 'react'
|
import { useState, useCallback } from 'react'
|
||||||
import { useReferralchef, useReferralRewardchef } from 'hooks/useContract'
|
import { useReferralchef, useReferralRewardchef } from 'hooks/useContract'
|
||||||
import useTokenBalance, { useGetBnbBalance } from 'hooks/useTokenBalance'
|
import useTokenBalance from 'hooks/useTokenBalance'
|
||||||
import { getAddress } from 'utils/addressHelpers'
|
import { getAddress, getReferralAddress } from 'utils/addressHelpers'
|
||||||
import tokensList from 'config/constants/tokens'
|
import tokensList from 'config/constants/tokens'
|
||||||
import useToast from 'hooks/useToast'
|
import useToast from 'hooks/useToast'
|
||||||
import { useTranslation } from 'contexts/Localization'
|
import { useTranslation } from 'contexts/Localization'
|
||||||
|
import { ethers, Contract } from 'ethers'
|
||||||
import { getBalanceNumber, getDecimalAmountNumber } from 'utils/formatBalance'
|
import { getBalanceNumber, getDecimalAmountNumber } from 'utils/formatBalance'
|
||||||
import { withdrawReward } from 'services/referral'
|
import { getWithdrawRewardParams, getBuyReferralParams } from 'services/referral'
|
||||||
|
|
||||||
const useCheckTokenBalance = ({ isBnb, isHcc, isUsdt }) => {
|
export const useCheckTokenBalance = ({ isBnb, isHcc, isUsdt }) => {
|
||||||
const { balance: bnbTokenBalance } = useGetBnbBalance()
|
|
||||||
const { balance: usdtTokenBalance } = useTokenBalance(getAddress(tokensList.usdt.address))
|
const { balance: usdtTokenBalance } = useTokenBalance(getAddress(tokensList.usdt.address))
|
||||||
const { balance: hccTokenBalance } = useTokenBalance(getAddress(tokensList.hcc.address))
|
const { balance: hccTokenBalance } = useTokenBalance(getAddress(tokensList.hcc.address))
|
||||||
const { toastWarning } = useToast()
|
const { toastWarning } = useToast()
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const onCheck = useCallback(() => {
|
const onCheck = useCallback(
|
||||||
|
(hccAmount, usdtAmount) => {
|
||||||
if (
|
if (
|
||||||
(isBnb && getBalanceNumber(bnbTokenBalance) === 0) ||
|
(isHcc && getBalanceNumber(hccTokenBalance) === hccAmount) ||
|
||||||
(isHcc && getBalanceNumber(hccTokenBalance) === 0) ||
|
(isUsdt && getBalanceNumber(usdtTokenBalance) === usdtAmount)
|
||||||
(isUsdt && getBalanceNumber(usdtTokenBalance) === 0)
|
|
||||||
) {
|
) {
|
||||||
toastWarning(t('Insufficient Balance'))
|
toastWarning(t('Insufficient Balance'))
|
||||||
}
|
}
|
||||||
}, [isBnb, isHcc, isUsdt])
|
},
|
||||||
|
[isBnb, isHcc, isUsdt],
|
||||||
|
)
|
||||||
return [onCheck]
|
return [onCheck]
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useBuyTransaction = () => {
|
export const useBuyTransaction = () => {
|
||||||
const referralContract = useReferralchef()
|
const referralContract = useReferralchef()
|
||||||
const transaction = async () => {
|
const transaction = async () => {
|
||||||
const data = await withdrawReward()
|
const data = await getBuyReferralParams()
|
||||||
const { address, receive, timestamp, sign } = data
|
const { address, hccPrice, otherPaymentPirce, code, timestamp, sign } = data
|
||||||
const params = [address, receive, timestamp, sign]
|
const params = [address, hccPrice, otherPaymentPirce, code, timestamp, sign]
|
||||||
const price = getDecimalAmountNumber(receive)
|
// const price = getDecimalAmountNumber(receive)
|
||||||
const res = await referralContract.adminMint(...params, { value: price })
|
const res = await referralContract.mint(...params)
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
return transaction
|
return transaction
|
||||||
|
|
@ -42,7 +44,7 @@ export const useBuyTransaction = () => {
|
||||||
export const useWithdraw = () => {
|
export const useWithdraw = () => {
|
||||||
const referralRewardContract = useReferralRewardchef()
|
const referralRewardContract = useReferralRewardchef()
|
||||||
const transaction = async () => {
|
const transaction = async () => {
|
||||||
const data = await withdrawReward()
|
const data = await getWithdrawRewardParams()
|
||||||
const { address, receive, timestamp, sign } = data
|
const { address, receive, timestamp, sign } = data
|
||||||
const params = [address, receive, timestamp, sign]
|
const params = [address, receive, timestamp, sign]
|
||||||
const price = getDecimalAmountNumber(receive)
|
const price = getDecimalAmountNumber(receive)
|
||||||
|
|
@ -52,4 +54,18 @@ export const useWithdraw = () => {
|
||||||
return transaction
|
return transaction
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const useApproveReferral = (tokenContract: Contract) => {
|
||||||
|
const handleApprove = useCallback(async () => {
|
||||||
|
try {
|
||||||
|
const tx = await tokenContract.approve(getReferralAddress(), ethers.constants.MaxUint256)
|
||||||
|
const receipt = await tx.wait()
|
||||||
|
return receipt.status
|
||||||
|
} catch (e) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}, [tokenContract])
|
||||||
|
|
||||||
|
return { onApprove: handleApprove }
|
||||||
|
}
|
||||||
|
|
||||||
export default useCheckTokenBalance
|
export default useCheckTokenBalance
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue