Skip to content

Commit be391b2

Browse files
authored
chore: improve low gas balance message on Solana (#3796)
* chore: improve low gas balance message on Solana * chore: extract message into const * chore: run checksdn
1 parent 8c0e9e4 commit be391b2

2 files changed

Lines changed: 26 additions & 12 deletions

File tree

src/consts/wallet.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,8 +221,11 @@ export const SANCTIONED_WALLETS = Object.freeze(
221221
'TMuCgBejD5RsNANZdjGtaM3YyKGNgDoy7N',
222222
'TNmRfnSUXZoWWzxcDDbf95eGQYXt1mJDt8',
223223
'TNZxGWCwvsHr6JxQxzoeDXV597Yf7Zb7nV',
224+
'TQ5H49Wz3K57zNHmuXVp6uLzFwitxviABs',
224225
'TQ5mpZPbQMSq2s1vSM3RJgiB1AsTsiTpFZ',
226+
'TRakpsE1mZjCUMNPyozR4BW2ZtJsF7ZWFN',
225227
'TRBACioxdrdsYEZHvJWiUDZcMdBPpEe5Ub',
228+
'TSxAAo67VTDgKT537EVXxdogkJtk9c6ojz',
226229
'TTAHMdqoom4f2VTWniroPWQHcTRZ4caoH4',
227230
'TTgcTTNbNuFdbrhvbjMZVrdU5KALyzDaPw',
228231
'TTKnV2S1295UrPr7N67Tp9ykNL7xX2Z4Uj',
@@ -236,6 +239,7 @@ export const SANCTIONED_WALLETS = Object.freeze(
236239
'TX5GV4DyfxNB3rPkzZJhmqZ1efVmL4rEqG',
237240
'TXEaKf4rT3rMoD3Vuqnuhwr6vLq6BL5t33',
238241
'TXEsK1sEsKjZ1xtHitnyAAoqw3WLdYdRNW',
242+
'TYDUutYN4YLKUPeT7TG27Yyqw6kNVLq9QZ',
239243
'XnPFsRWTaSgiVauosEwQ6dEitGYXgwznz2',
240244
'Xs3vzQmNvAxRa3Xo8XzQqUb3BMgb9EogF4',
241245
'XyARKoupuArYtToA2S6yMdnoquDCDaBsaT',
@@ -259,6 +263,7 @@ export const SANCTIONED_WALLETS = Object.freeze(
259263
'0x43fa21d92141BA9db43052492E0DeEE5aa5f0A93',
260264
'0x4F47Bc496083C727c5fbe3CE9CDf2B0f6496270c',
261265
'0x530A64c0Ce595026a4A556b703644228179E2d57',
266+
'0x532B77B33A040587e9FD1800088225f99b8B0E8A',
262267
'0x53b6936513e738f44FB50d2b9476730C0Ab3Bfc1',
263268
'0x57EC89A0C056163A0314e413320f9B3ABe761259',
264269
'0x5A7a51bFb49F190e5A6060a5bc6052Ac14a3b59f',
@@ -284,7 +289,9 @@ export const SANCTIONED_WALLETS = Object.freeze(
284289
'0xd5ED34b52AC4ab84d8FA8A231a3218bbF01Ed510',
285290
'0xD8500C631dC32FA18645B7436344a99E4825e10e',
286291
'0xd882cFc20F52f2599D84b8e8D58C7FB62cfE344b',
292+
'0xDb2720ebAd55399117ddB4C4a4afd9a4CCAda8fE',
287293
'0xdcbEfFBECcE100cCE9E4b153C4e15cB885643193',
294+
'0xE3D35f68383732649669aA990832E017340DbcA5',
288295
'0xE950DC316b836e4EeFb8308bf32Bf7C72a1358FF',
289296
'0xeD6e0A7e4Ac94D976eeBfB82ccf777A3c6baD921',
290297
'0xf3701F445b6BDaFeDbcA97D1e477357839e4120D',

src/utils/errors.ts

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,22 @@ import {
1515
} from 'telemetry/types';
1616
import { InsufficientFundsForGasError } from 'sdklegacy';
1717
import { routes, amount as sdkAmount } from '@wormhole-foundation/sdk';
18+
import { chainDisplayName, getGasToken, getTokenSymbol } from 'utils';
1819

1920
// TODO SDKV2
2021
// attempt to capture errors using regex
2122
export const INSUFFICIENT_ALLOWANCE_REGEX = /insufficient token allowance/im;
2223
export const INSUFFICIENT_LAMPORTS_REGEX =
2324
/insufficient lamports.*?(\d+).*?(\d+)/im;
25+
export const SIMULATION_ACCOUNT_NOT_FOUND_REGEX =
26+
/simulation failed:.*accountnotfound/i;
2427
export const USER_REJECTED_REGEX = new RegExp(
2528
'user rejected|rejected the request|rejected from user|user cancel|aborted by user|plugin closed|denied request signature',
2629
'mi',
2730
);
2831
export const AMOUNT_IN_TOO_SMALL = new RegExp('AmountInTooSmall', 'm');
32+
const INSUFFICIENT_FUNDS_FOR_GAS_ERROR =
33+
'Insufficient funds for network fees. Please add more funds and try again';
2934

3035
export function interpretTransferError(
3136
e: any,
@@ -50,7 +55,7 @@ export function interpretTransferError(
5055
uiErrorMessage = 'Transfer timed out, please try again';
5156
internalErrorCode = ERR_TIMEOUT;
5257
} else if (InsufficientFundsForGasError.MESSAGE_REGEX.test(e?.message)) {
53-
uiErrorMessage = 'Insufficient funds';
58+
uiErrorMessage = INSUFFICIENT_FUNDS_FOR_GAS_ERROR;
5459
internalErrorCode = ERR_INSUFFICIENT_GAS;
5560
} else if (USER_REJECTED_REGEX.test(e?.message)) {
5661
uiErrorMessage = 'Transfer rejected in wallet, please try again';
@@ -74,17 +79,19 @@ export function interpretTransferError(
7479
: '';
7580
uiErrorMessage = `Amount exceeds Circle limit${limitString}. Please reduce transfer amount.`;
7681
internalErrorCode = ERR_AMOUNT_TOO_LARGE;
77-
} else if (INSUFFICIENT_LAMPORTS_REGEX.test(e?.message)) {
78-
const lamportMatches = e?.message.match(INSUFFICIENT_LAMPORTS_REGEX);
79-
const currentLamports = lamportMatches?.[1];
80-
const requiredLamports = lamportMatches?.[2];
81-
uiErrorMessage = `Insufficient funds for gas.`;
82-
if (currentLamports && requiredLamports) {
83-
const currentAmount = sdkAmount.fromBaseUnits(currentLamports, 9);
84-
const requiredAmount = sdkAmount.fromBaseUnits(requiredLamports, 9);
85-
uiErrorMessage += ` Current balance is ${sdkAmount.display(
86-
currentAmount,
87-
)} SOL, but required ${sdkAmount.display(requiredAmount)} SOL`;
82+
} else if (
83+
SIMULATION_ACCOUNT_NOT_FOUND_REGEX.test(e?.message) ||
84+
INSUFFICIENT_LAMPORTS_REGEX.test(e?.message)
85+
) {
86+
const gasChain = transferDetails.fromChain;
87+
try {
88+
const gasToken = getGasToken(gasChain);
89+
const gasSymbol = getTokenSymbol(gasToken);
90+
const chainName = chainDisplayName(gasChain);
91+
const chainSuffix = chainName ? ` on ${chainName}` : '';
92+
uiErrorMessage = `Insufficient ${gasSymbol} for fees${chainSuffix}. Please add more ${gasSymbol} and try again`;
93+
} catch {
94+
uiErrorMessage = INSUFFICIENT_FUNDS_FOR_GAS_ERROR;
8895
}
8996
internalErrorCode = ERR_INSUFFICIENT_GAS;
9097
}

0 commit comments

Comments
 (0)