forked from cerc-io/laconic-wallet-web
Add check for insufficient funds
This commit is contained in:
parent
cd640e77f8
commit
65c9014a5d
@ -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, '*');
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
Loading…
Reference in New Issue
Block a user