Add check for insufficient funds

This commit is contained in:
Adw8 2024-11-11 12:11:13 +05:30
parent cd640e77f8
commit 65c9014a5d

View File

@ -76,6 +76,13 @@ export const WalletEmbed = () => {
source?.postMessage({ type, data }, origin); source?.postMessage({ type, data }, origin);
}; };
const checkSufficientFunds = (amount: string, balance: string) => {
const amountBigNum = BigNumber.from(String(amount));
const balanceBigNum = BigNumber.from(balance);
return balanceBigNum.gt(amountBigNum);
};
useEffect(() => { useEffect(() => {
const handleGetAccounts = async (event: MessageEvent) => { const handleGetAccounts = async (event: MessageEvent) => {
if (event.data.type !== 'REQUEST_WALLET_ACCOUNTS') return; if (event.data.type !== 'REQUEST_WALLET_ACCOUNTS') return;
@ -172,16 +179,6 @@ export const WalletEmbed = () => {
}, },
}; };
const gasEstimation = await client.simulate(fromAddress, [sendMsg], MEMO);
const gasLimit = String(
Math.round(gasEstimation * Number(process.env.REACT_APP_GAS_ADJUSTMENT))
);
setGasLimit(gasLimit);
const gasPrice = GasPrice.fromString(`${network.gasPrice}${network.nativeDenom}`);
const cosmosFees = calculateFee(Number(gasLimit), gasPrice);
setFees(cosmosFees.amount[0].amount);
setTransactionDetails({ setTransactionDetails({
chainId, chainId,
fromAddress, fromAddress,
@ -192,6 +189,21 @@ export const WalletEmbed = () => {
requestedNetwork: network, requestedNetwork: network,
}); });
if (!checkSufficientFunds(amount, balance.amount)) {
console.log("Insufficient funds detected. Throwing error.");
throw new Error('Insufficient funds');
}
const gasEstimation = await client.simulate(fromAddress, [sendMsg], MEMO);
const gasLimit = String(
Math.round(gasEstimation * Number(process.env.REACT_APP_GAS_ADJUSTMENT))
);
setGasLimit(gasLimit);
const gasPrice = GasPrice.fromString(`${network.gasPrice}${network.nativeDenom}`);
const cosmosFees = calculateFee(Number(gasLimit), gasPrice);
setFees(cosmosFees.amount[0].amount);
setIsTxRequested(true); setIsTxRequested(true);
} catch (error) { } catch (error) {
if (!(error instanceof Error)) { if (!(error instanceof Error)) {
@ -346,7 +358,8 @@ export const WalletEmbed = () => {
hideDialog={() => { hideDialog={() => {
setTxError(null) setTxError(null)
if (window.parent) { if (window.parent) {
window.parent.postMessage('closeIframe', '*'); sendMessage(window.parent, 'TRANSACTION_RESPONSE', null, '*');
sendMessage(window.parent, 'closeIframe', null, '*');
} }
}} }}
/> />