From a310c716e13e5244a456184a8edbee9a48c439eb Mon Sep 17 00:00:00 2001 From: Hau Nguyen Van Date: Fri, 27 Dec 2024 15:29:36 +0700 Subject: [PATCH] fix check balance new orai --- .../Balance/TransferConvertToken/index.tsx | 2 +- src/pages/Balance/index.tsx | 60 +++++++++++-------- 2 files changed, 37 insertions(+), 25 deletions(-) diff --git a/src/pages/Balance/TransferConvertToken/index.tsx b/src/pages/Balance/TransferConvertToken/index.tsx index ac8b42707..3d0f46bc1 100644 --- a/src/pages/Balance/TransferConvertToken/index.tsx +++ b/src/pages/Balance/TransferConvertToken/index.tsx @@ -409,7 +409,7 @@ const TransferConvertToken: FC = ({ {net && (
- {' '} + chainSymbolImageUrl
{net.chainName}
diff --git a/src/pages/Balance/index.tsx b/src/pages/Balance/index.tsx index 93fd502e5..7b7f58d97 100644 --- a/src/pages/Balance/index.tsx +++ b/src/pages/Balance/index.tsx @@ -503,9 +503,11 @@ const Balance: React.FC = () => { const handleTransferSolToOraichain = async ({ fromToken, + toToken, transferAmount }: { fromToken: TokenItemType; + toToken: TokenItemType; transferAmount: number; }) => { if (!oraiAddress) { @@ -514,16 +516,24 @@ const Balance: React.FC = () => { const web3Solana = new Web3SolanaProgramInteraction(); console.log('from token address: ', fromToken.contractAddress); + if (fromToken.contractAddress !== MAX_SOL_CONTRACT_ADDRESS) { - const bridgeBalance = - fromToken.contractAddress === NATIVE_MINT.toBase58() - ? await web3Solana.getSolanaBalance(new PublicKey(SOL_RELAYER_ADDRESS)) - : await web3Solana.getTokenBalance(SOL_RELAYER_ADDRESS, fromToken.contractAddress); - console.log('token balance to oraichain: ', bridgeBalance, fromToken.contractAddress); - if (bridgeBalance < transferAmount) { - throw new Error( - `Transfer ${fromToken.denom} to Oraichain failed. The bridge balance only has ${bridgeBalance}${fromToken.denom}, wanted ${transferAmount}${fromToken.denom}` - ); + // TODO: need check if support new token in solana + const currentBridgeBalance = await window.client.getBalance(ORAICHAIN_RELAYER_ADDRESS, toToken.denom); + console.log( + 'Current bridge balance oraichain: ', + toDisplay(currentBridgeBalance.amount, toToken.decimals), + toToken.denom + ); + if (toDisplay(currentBridgeBalance.amount, toToken.decimals) < transferAmount) { + const message = `Transfer ${toToken.denom} to Oraichain failed. The bridge balance only has ${toDisplay( + currentBridgeBalance.amount, + toToken.decimals + )}${currentBridgeBalance.denom.toUpperCase()}, wanted ${transferAmount}${currentBridgeBalance.denom.toUpperCase()}`; + displayToast(TToastType.TX_FAILED, { + message + }); + throw new Error(message); } } @@ -538,9 +548,11 @@ const Balance: React.FC = () => { const handleTransferOraichainToSol = async ({ fromToken, + toToken, transferAmount }: { fromToken: TokenItemType; + toToken: TokenItemType; transferAmount: number; }) => { if (!solAddress) { @@ -549,20 +561,19 @@ const Balance: React.FC = () => { const receiverAddress = ORAICHAIN_RELAYER_ADDRESS; - if (fromToken.denom !== MAX_ORAICHAIN_DENOM) { - const currentBridgeBalance = await window.client.getBalance(receiverAddress, fromToken.denom); - console.log( - 'Current bridge balance transfer to sol: ', - toDisplay(currentBridgeBalance.amount, fromToken.decimals), - fromToken.denom - ); - if (toDisplay(currentBridgeBalance.amount, fromToken.decimals) < transferAmount) { - throw new Error( - `Transfer ${fromToken.denom} to Solana failed. The bridge balance only has ${toDisplay( - currentBridgeBalance.amount, - fromToken.decimals - )}${currentBridgeBalance.denom.toUpperCase()}, wanted ${transferAmount}${currentBridgeBalance.denom.toUpperCase()}` - ); + if (fromToken.denom === MAX_ORAICHAIN_DENOM) { + const web3Solana = new Web3SolanaProgramInteraction(); + const bridgeBalance = + fromToken.contractAddress === NATIVE_MINT.toBase58() + ? await web3Solana.getSolanaBalance(new PublicKey(SOL_RELAYER_ADDRESS)) + : await web3Solana.getTokenBalance(SOL_RELAYER_ADDRESS, toToken.contractAddress); + console.log('token balance to solana: ', bridgeBalance, toToken.contractAddress); + if (bridgeBalance < transferAmount) { + const message = `Transfer ${fromToken.denom} to Solana failed. The bridge balance only has ${bridgeBalance}${fromToken.denom}, wanted ${transferAmount}${fromToken.denom}`; + displayToast(TToastType.TX_FAILED, { + message + }); + throw new Error(message); } } @@ -672,11 +683,12 @@ const Balance: React.FC = () => { if (isSolToOraichain || isOraichainToSol) { if (isOraichainToSol) { - return handleTransferOraichainToSol({ fromToken: from, transferAmount: fromAmount }); + return handleTransferOraichainToSol({ fromToken: from, toToken: newToToken, transferAmount: fromAmount }); } return handleTransferSolToOraichain({ fromToken: from, + toToken: newToToken, transferAmount: fromAmount }); }