@subwallet/extension-base 1.3.54-1 → 1.3.55-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/background/errors/BalanceError.js +4 -4
- package/background/errors/BitcoinProviderError.js +7 -7
- package/background/errors/EvmProviderError.js +8 -8
- package/background/errors/ProviderError.js +6 -5
- package/background/errors/SwapError.js +14 -13
- package/background/errors/TransactionError.js +22 -22
- package/background/warnings/TransactionWarning.js +2 -2
- package/cjs/background/errors/BalanceError.js +4 -4
- package/cjs/background/errors/BitcoinProviderError.js +7 -7
- package/cjs/background/errors/EvmProviderError.js +8 -8
- package/cjs/background/errors/ProviderError.js +6 -5
- package/cjs/background/errors/SwapError.js +14 -13
- package/cjs/background/errors/TransactionError.js +22 -22
- package/cjs/background/warnings/TransactionWarning.js +2 -2
- package/cjs/core/logic-validation/index.js +15 -3
- package/cjs/core/logic-validation/request.js +37 -37
- package/cjs/core/logic-validation/transfer.js +21 -17
- package/cjs/koni/api/dotsama/parseTransaction.js +1 -1
- package/cjs/koni/api/staking/bonding/relayChain.js +1 -1
- package/cjs/koni/api/staking/bonding/utils.js +16 -16
- package/cjs/koni/api/staking/paraChain.js +1 -1
- package/cjs/koni/background/handlers/Extension.js +28 -26
- package/cjs/koni/background/handlers/State.js +19 -14
- package/cjs/koni/background/handlers/Tabs.js +23 -1
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/index.js +3 -3
- package/cjs/services/balance-service/transfer/smart-contract.js +1 -1
- package/cjs/services/balance-service/transfer/xcm/index.js +7 -1
- package/cjs/services/balance-service/transfer/xcm/utils.js +24 -18
- package/cjs/services/chain-service/constants.js +2 -2
- package/cjs/services/chain-service/handler/types.js +1 -0
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/earning-service/constants/chains.js +1 -2
- package/cjs/services/earning-service/handlers/base.js +2 -1
- package/cjs/services/earning-service/handlers/lending/base.js +3 -3
- package/cjs/services/earning-service/handlers/liquid-staking/base.js +3 -3
- package/cjs/services/earning-service/handlers/native-staking/amplitude.js +1 -1
- package/cjs/services/earning-service/handlers/native-staking/base-para.js +1 -1
- package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +2 -2
- package/cjs/services/earning-service/handlers/native-staking/tao.js +26 -6
- package/cjs/services/earning-service/handlers/nomination-pool/index.js +2 -2
- package/cjs/services/earning-service/handlers/special.js +12 -9
- package/cjs/services/keyring-service/context/handlers/Derive.js +1 -1
- package/cjs/services/keyring-service/context/handlers/Json.js +11 -11
- package/cjs/services/keyring-service/context/handlers/Ledger.js +3 -3
- package/cjs/services/keyring-service/context/handlers/Mnemonic.js +10 -10
- package/cjs/services/keyring-service/context/handlers/Modify.js +3 -3
- package/cjs/services/keyring-service/context/handlers/Secret.js +7 -7
- package/cjs/services/migration-service/scripts/DeleteEarningData.js +1 -1
- package/cjs/services/migration-service/scripts/MigrateTransactionHistoryBySymbol.js +1 -6
- package/cjs/services/migration-service/scripts/databases/MigrateAssetSetting.js +1 -6
- package/cjs/services/migration-service/scripts/index.js +3 -3
- package/cjs/services/request-service/handler/BitcoinRequestHandler.js +1 -1
- package/cjs/services/request-service/handler/CardanoRequestHandler.js +2 -2
- package/cjs/services/request-service/handler/EvmRequestHandler.js +5 -5
- package/cjs/services/request-service/handler/TonRequestHandler.js +2 -2
- package/cjs/services/setting-service/i18n/extend.js +1 -1
- package/cjs/services/swap-service/handler/base-handler.js +123 -11
- package/cjs/services/swap-service/index.js +1 -1
- package/cjs/services/transaction-service/index.js +12 -12
- package/cjs/services/transaction-service/utils.js +4 -1
- package/cjs/types/account/error/common.js +5 -4
- package/cjs/types/account/error/derive.js +8 -7
- package/cjs/utils/account/derive/info/solo.js +2 -2
- package/cjs/utils/eth/parseTransaction/index.js +1 -1
- package/cjs/utils/fee/transfer.js +8 -3
- package/cjs/utils/index.js +1 -1
- package/core/logic-validation/index.js +15 -3
- package/core/logic-validation/request.js +37 -37
- package/core/logic-validation/transfer.js +21 -17
- package/koni/api/dotsama/parseTransaction.js +1 -1
- package/koni/api/staking/bonding/relayChain.js +1 -1
- package/koni/api/staking/bonding/utils.js +16 -16
- package/koni/api/staking/paraChain.js +1 -1
- package/koni/background/handlers/Extension.js +28 -26
- package/koni/background/handlers/State.d.ts +1 -0
- package/koni/background/handlers/State.js +19 -14
- package/koni/background/handlers/Tabs.js +23 -1
- package/package.json +6 -6
- package/packageInfo.js +1 -1
- package/services/balance-service/index.js +3 -3
- package/services/balance-service/transfer/smart-contract.js +1 -1
- package/services/balance-service/transfer/xcm/index.js +7 -1
- package/services/balance-service/transfer/xcm/utils.d.ts +6 -0
- package/services/balance-service/transfer/xcm/utils.js +24 -18
- package/services/chain-service/constants.js +2 -2
- package/services/chain-service/handler/types.d.ts +2 -1
- package/services/chain-service/handler/types.js +1 -0
- package/services/chain-service/utils/patch.d.ts +1 -1
- package/services/chain-service/utils/patch.js +1 -1
- package/services/earning-service/constants/chains.d.ts +0 -1
- package/services/earning-service/constants/chains.js +1 -2
- package/services/earning-service/handlers/base.js +3 -2
- package/services/earning-service/handlers/lending/base.js +3 -3
- package/services/earning-service/handlers/liquid-staking/base.js +3 -3
- package/services/earning-service/handlers/native-staking/amplitude.js +1 -1
- package/services/earning-service/handlers/native-staking/base-para.js +1 -1
- package/services/earning-service/handlers/native-staking/relay-chain.js +2 -2
- package/services/earning-service/handlers/native-staking/tao.js +26 -6
- package/services/earning-service/handlers/nomination-pool/index.js +2 -2
- package/services/earning-service/handlers/special.js +12 -9
- package/services/keyring-service/context/handlers/Derive.js +1 -1
- package/services/keyring-service/context/handlers/Json.js +11 -11
- package/services/keyring-service/context/handlers/Ledger.js +3 -3
- package/services/keyring-service/context/handlers/Mnemonic.js +10 -10
- package/services/keyring-service/context/handlers/Modify.js +3 -3
- package/services/keyring-service/context/handlers/Secret.js +7 -7
- package/services/migration-service/scripts/DeleteEarningData.js +1 -1
- package/services/migration-service/scripts/MigrateTransactionHistoryBySymbol.js +1 -6
- package/services/migration-service/scripts/databases/MigrateAssetSetting.js +1 -6
- package/services/migration-service/scripts/index.js +3 -3
- package/services/request-service/handler/BitcoinRequestHandler.js +1 -1
- package/services/request-service/handler/CardanoRequestHandler.js +2 -2
- package/services/request-service/handler/EvmRequestHandler.js +5 -5
- package/services/request-service/handler/TonRequestHandler.js +2 -2
- package/services/setting-service/i18n/extend.js +1 -1
- package/services/swap-service/handler/base-handler.d.ts +2 -1
- package/services/swap-service/handler/base-handler.js +124 -12
- package/services/swap-service/index.js +1 -1
- package/services/transaction-service/index.js +12 -12
- package/services/transaction-service/utils.js +4 -1
- package/types/account/error/common.js +5 -4
- package/types/account/error/derive.js +8 -7
- package/types/balance/transfer.d.ts +1 -0
- package/utils/account/derive/info/solo.js +2 -2
- package/utils/eth/parseTransaction/index.js +1 -1
- package/utils/fee/transfer.d.ts +3 -1
- package/utils/fee/transfer.js +5 -1
- package/utils/index.js +1 -1
|
@@ -64,7 +64,7 @@ class EvmRequestHandler {
|
|
|
64
64
|
// Check duplicate request
|
|
65
65
|
const duplicated = Object.values(confirmationType).find(c => c.url === url && c.payloadJson === payloadJson);
|
|
66
66
|
if (duplicated) {
|
|
67
|
-
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.INVALID_PARAMS, (0, _i18next.t)('
|
|
67
|
+
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.INVALID_PARAMS, (0, _i18next.t)('bg.DAPP.services.service.request.EvmHandler.duplicateRequest'));
|
|
68
68
|
}
|
|
69
69
|
confirmationType[id] = {
|
|
70
70
|
id,
|
|
@@ -109,7 +109,7 @@ class EvmRequestHandler {
|
|
|
109
109
|
// Check duplicate request
|
|
110
110
|
const exists = confirmationType[id];
|
|
111
111
|
if (!exists) {
|
|
112
|
-
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.INVALID_PARAMS, (0, _i18next.t)('
|
|
112
|
+
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.INVALID_PARAMS, (0, _i18next.t)('bg.DAPP.services.service.request.EvmHandler.requestDoesNotExist'));
|
|
113
113
|
}
|
|
114
114
|
const payloadJson = JSON.stringify(payload);
|
|
115
115
|
confirmationType[id] = {
|
|
@@ -142,7 +142,7 @@ class EvmRequestHandler {
|
|
|
142
142
|
case 'eth_signTypedData_v4':
|
|
143
143
|
return await pair.evm.signMessage(payload, type);
|
|
144
144
|
default:
|
|
145
|
-
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.INVALID_PARAMS, (0, _i18next.t)('
|
|
145
|
+
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.INVALID_PARAMS, (0, _i18next.t)('bg.DAPP.services.service.request.EvmHandler.unsupportedAction'));
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
148
|
configToTransaction(config) {
|
|
@@ -251,8 +251,8 @@ class EvmRequestHandler {
|
|
|
251
251
|
} = this.confirmationsPromiseMap[id];
|
|
252
252
|
const confirmation = confirmations[type][id];
|
|
253
253
|
if (!resolver || !confirmation) {
|
|
254
|
-
this.#logger.error((0, _i18next.t)('
|
|
255
|
-
throw new Error((0, _i18next.t)('
|
|
254
|
+
this.#logger.error((0, _i18next.t)('bg.DAPP.services.service.request.EvmHandler.unableToProceed'), type, id);
|
|
255
|
+
throw new Error((0, _i18next.t)('bg.DAPP.services.service.request.EvmHandler.unableToProceed'));
|
|
256
256
|
}
|
|
257
257
|
|
|
258
258
|
// Fill signature for some special type
|
|
@@ -95,8 +95,8 @@ class TonRequestHandler {
|
|
|
95
95
|
} = this.confirmationsPromiseMap[id];
|
|
96
96
|
const confirmation = confirmations[type][id];
|
|
97
97
|
if (!resolver || !confirmation) {
|
|
98
|
-
this.#logger.error((0, _i18next.t)('
|
|
99
|
-
throw new Error((0, _i18next.t)('
|
|
98
|
+
this.#logger.error((0, _i18next.t)('bg.DAPP.services.service.request.TonHandler.unableToProceed'), type, id);
|
|
99
|
+
throw new Error((0, _i18next.t)('bg.DAPP.services.service.request.TonHandler.unableToProceed'));
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
// Fill signature for some special type
|
|
@@ -10,7 +10,7 @@ var _utils = require("@subwallet/extension-base/utils");
|
|
|
10
10
|
|
|
11
11
|
const ExternalTranslation = [
|
|
12
12
|
// Case change password
|
|
13
|
-
(0, _utils.detectTranslate)('
|
|
13
|
+
(0, _utils.detectTranslate)('bg.SETTING.services.service.setting.i18nExtend.invalidMasterPassword')];
|
|
14
14
|
exports.ExternalTranslation = ExternalTranslation;
|
|
15
15
|
const InternalTranslation = [];
|
|
16
16
|
exports.InternalTranslation = InternalTranslation;
|
|
@@ -318,7 +318,23 @@ class SwapBaseHandler {
|
|
|
318
318
|
}
|
|
319
319
|
return [];
|
|
320
320
|
}
|
|
321
|
-
async validateBridgeStep(
|
|
321
|
+
async validateBridgeStep(request) {
|
|
322
|
+
const {
|
|
323
|
+
bnBridgeAmount,
|
|
324
|
+
bnBridgeDeliveryFee,
|
|
325
|
+
bnBridgeFeeAmount,
|
|
326
|
+
bnFeeTokenBalance,
|
|
327
|
+
bnFromTokenBalance,
|
|
328
|
+
fromChain,
|
|
329
|
+
fromToken,
|
|
330
|
+
isFirstBridge,
|
|
331
|
+
receiver,
|
|
332
|
+
selectedFeeToken,
|
|
333
|
+
sender,
|
|
334
|
+
toChain,
|
|
335
|
+
toChainNativeToken,
|
|
336
|
+
toToken
|
|
337
|
+
} = request;
|
|
322
338
|
const minBridgeAmountRequired = new _bignumber.default((0, _utils3._getTokenMinAmount)(toToken)).multipliedBy(_utils4.FEE_RATE_MULTIPLIER.high);
|
|
323
339
|
const spendingAndFeePaymentValidation = (0, _logicValidation.validateSpendingAndFeePayment)(fromToken, selectedFeeToken, bnBridgeAmount, bnFromTokenBalance, bnBridgeFeeAmount, bnFeeTokenBalance);
|
|
324
340
|
if (spendingAndFeePaymentValidation.length > 0) {
|
|
@@ -328,7 +344,7 @@ class SwapBaseHandler {
|
|
|
328
344
|
const atLeastStr = (0, _utils5.formatNumber)(minBridgeAmountRequired.plus(bnBridgeDeliveryFee), (0, _utils3._getAssetDecimals)(toToken), _utils5.balanceFormatter, {
|
|
329
345
|
maxNumberFormat: (0, _utils3._getAssetDecimals)(toToken) || 6
|
|
330
346
|
});
|
|
331
|
-
return [new _TransactionError.TransactionError(_types.TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT, (0, _i18next.t)('
|
|
347
|
+
return [new _TransactionError.TransactionError(_types.TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT, (0, _i18next.t)('bg.SWAP.services.service.swap.baseHandler.transferMinimumToKeepDestAlive', {
|
|
332
348
|
replace: {
|
|
333
349
|
amount: atLeastStr,
|
|
334
350
|
symbol: fromToken.symbol
|
|
@@ -350,7 +366,7 @@ class SwapBaseHandler {
|
|
|
350
366
|
// sending token cannot keep account alive, must check with native token
|
|
351
367
|
const toChainNativeTokenBalance = await this.balanceService.getTotalBalance(receiver, toToken.originChain, toChainNativeToken.slug, _KoniTypes.ExtrinsicType.TRANSFER_BALANCE);
|
|
352
368
|
if (!(0, _systemPallet._isAccountActive)(toChainNativeTokenBalance.metadata)) {
|
|
353
|
-
return [new _TransactionError.TransactionError(_types.TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT, (0, _i18next.t)('
|
|
369
|
+
return [new _TransactionError.TransactionError(_types.TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT, (0, _i18next.t)('bg.SWAP.services.service.swap.baseHandler.recipientBalanceTooLow', {
|
|
354
370
|
replace: {
|
|
355
371
|
amount: toChainNativeTokenBalance.value,
|
|
356
372
|
nativeSymbol: toChainNativeToken.symbol,
|
|
@@ -359,6 +375,27 @@ class SwapBaseHandler {
|
|
|
359
375
|
}))];
|
|
360
376
|
}
|
|
361
377
|
}
|
|
378
|
+
|
|
379
|
+
// dry-run xcm
|
|
380
|
+
const substrateApi = await this.chainService.getSubstrateApi(fromToken.originChain).isReady;
|
|
381
|
+
const feeInfo = await this.feeService.subscribeChainFee((0, _getId.getId)(), fromToken.originChain, 'substrate');
|
|
382
|
+
const xcmRequest = {
|
|
383
|
+
originTokenInfo: fromToken,
|
|
384
|
+
destinationTokenInfo: toToken,
|
|
385
|
+
sendingValue: bnBridgeAmount.toString(),
|
|
386
|
+
recipient: receiver,
|
|
387
|
+
substrateApi: substrateApi,
|
|
388
|
+
sender: sender,
|
|
389
|
+
destinationChain: toChain,
|
|
390
|
+
originChain: fromChain,
|
|
391
|
+
feeInfo
|
|
392
|
+
};
|
|
393
|
+
const isDryRunSuccess = await (0, _xcm.dryRunXcmExtrinsicV2)(xcmRequest);
|
|
394
|
+
|
|
395
|
+
// temp skip dry-run for later step todo: wait for dry-run-predict
|
|
396
|
+
if (isFirstBridge && !isDryRunSuccess) {
|
|
397
|
+
return [new _TransactionError.TransactionError(_types.BasicTxErrorType.UNABLE_TO_SEND, 'Unable to perform transaction. Select another token or destination chain and try again')];
|
|
398
|
+
}
|
|
362
399
|
}
|
|
363
400
|
return [];
|
|
364
401
|
}
|
|
@@ -371,7 +408,7 @@ class SwapBaseHandler {
|
|
|
371
408
|
const atLeastStr = (0, _utils5.formatNumber)((0, _utils3._getTokenMinAmount)(receivingToken), (0, _utils3._getAssetDecimals)(receivingToken), _utils5.balanceFormatter, {
|
|
372
409
|
maxNumberFormat: (0, _utils3._getAssetDecimals)(receivingToken) || 6
|
|
373
410
|
});
|
|
374
|
-
return [new _TransactionError.TransactionError(_swap.SwapErrorType.NOT_MEET_MIN_SWAP, (0, _i18next.t)('
|
|
411
|
+
return [new _TransactionError.TransactionError(_swap.SwapErrorType.NOT_MEET_MIN_SWAP, (0, _i18next.t)('bg.SWAP.services.service.swap.baseHandler.receiveMinimumAmount', {
|
|
375
412
|
replace: {
|
|
376
413
|
number: atLeastStr,
|
|
377
414
|
symbol: (0, _utils3._getAssetSymbol)(receivingToken)
|
|
@@ -457,7 +494,22 @@ class SwapBaseHandler {
|
|
|
457
494
|
// Native token balance has already accounted for ED aka strict mode
|
|
458
495
|
const bnBridgeFromTokenBalance = new _bignumber.default(bridgeFromTokenBalance.value);
|
|
459
496
|
const bnBridgeFeeTokenBalance = new _bignumber.default(bridgeFeeTokenBalance.value);
|
|
460
|
-
const bridgeStepValidation = await this.validateBridgeStep(
|
|
497
|
+
const bridgeStepValidation = await this.validateBridgeStep({
|
|
498
|
+
fromChain,
|
|
499
|
+
toChain,
|
|
500
|
+
sender: bridgeSender,
|
|
501
|
+
receiver: bridgeReceiver,
|
|
502
|
+
fromToken: bridgeFromToken,
|
|
503
|
+
toToken: bridgeToToken,
|
|
504
|
+
selectedFeeToken: bridgeSelectedFeeToken,
|
|
505
|
+
toChainNativeToken: bridgeToChainNativeToken,
|
|
506
|
+
bnBridgeAmount,
|
|
507
|
+
bnFromTokenBalance: bnBridgeFromTokenBalance,
|
|
508
|
+
bnBridgeFeeAmount,
|
|
509
|
+
bnFeeTokenBalance: bnBridgeFeeTokenBalance,
|
|
510
|
+
bnBridgeDeliveryFee,
|
|
511
|
+
isFirstBridge: true
|
|
512
|
+
});
|
|
461
513
|
if (bridgeStepValidation.length > 0) {
|
|
462
514
|
return bridgeStepValidation;
|
|
463
515
|
}
|
|
@@ -499,7 +551,12 @@ class SwapBaseHandler {
|
|
|
499
551
|
const atLeastString = (0, _utils5.formatNumber)((0, _utils3._getTokenMinAmount)(swapToken), (0, _utils3._getAssetDecimals)(swapToken), _utils5.balanceFormatter, {
|
|
500
552
|
maxNumberFormat: (0, _utils3._getAssetDecimals)(swapToken) || 6
|
|
501
553
|
});
|
|
502
|
-
return [new _TransactionError.TransactionError(_swap.SwapErrorType.NOT_MEET_MIN_SWAP, (0, _i18next.t)(
|
|
554
|
+
return [new _TransactionError.TransactionError(_swap.SwapErrorType.NOT_MEET_MIN_SWAP, (0, _i18next.t)('bg.SWAP.services.service.swap.baseHandler.swapAmountTooSmall', {
|
|
555
|
+
replace: {
|
|
556
|
+
amount: atLeastString,
|
|
557
|
+
symbol: (0, _utils3._getAssetSymbol)(swapToken)
|
|
558
|
+
}
|
|
559
|
+
}))];
|
|
503
560
|
}
|
|
504
561
|
const swapFeeToken = this.chainService.getAssetBySlug(swapFee.selectedFeeToken || swapFee.defaultFeeToken);
|
|
505
562
|
const swapToChain = this.chainService.getChainInfoByKey(swapMetadata.destinationTokenInfo.originChain);
|
|
@@ -542,7 +599,12 @@ class SwapBaseHandler {
|
|
|
542
599
|
const atLeastString = (0, _utils5.formatNumber)((0, _utils3._getTokenMinAmount)(swapToken), (0, _utils3._getAssetDecimals)(swapToken), _utils5.balanceFormatter, {
|
|
543
600
|
maxNumberFormat: (0, _utils3._getAssetDecimals)(swapToken) || 6
|
|
544
601
|
});
|
|
545
|
-
return [new _TransactionError.TransactionError(_swap.SwapErrorType.NOT_MEET_MIN_SWAP, (0, _i18next.t)(
|
|
602
|
+
return [new _TransactionError.TransactionError(_swap.SwapErrorType.NOT_MEET_MIN_SWAP, (0, _i18next.t)('bg.SWAP.services.service.swap.baseHandler.swapAmountTooSmall', {
|
|
603
|
+
replace: {
|
|
604
|
+
amount: atLeastString,
|
|
605
|
+
symbol: (0, _utils3._getAssetSymbol)(swapToken)
|
|
606
|
+
}
|
|
607
|
+
}))];
|
|
546
608
|
}
|
|
547
609
|
const swapFeeToken = this.chainService.getAssetBySlug(swapFee.selectedFeeToken || swapFee.defaultFeeToken);
|
|
548
610
|
const swapToChain = this.chainService.getChainInfoByKey(swapMetadata.destinationTokenInfo.originChain);
|
|
@@ -588,7 +650,22 @@ class SwapBaseHandler {
|
|
|
588
650
|
// Native token balance has already accounted for ED aka strict mode
|
|
589
651
|
const bnBridgeFromTokenBalance = new _bignumber.default(bridgeFromTokenBalance.value).plus(bnSwapReceivingAmount);
|
|
590
652
|
const bnBridgeFeeTokenBalance = new _bignumber.default(bridgeFeeTokenBalance.value);
|
|
591
|
-
const bridgeStepValidation = await this.validateBridgeStep(
|
|
653
|
+
const bridgeStepValidation = await this.validateBridgeStep({
|
|
654
|
+
fromChain,
|
|
655
|
+
toChain,
|
|
656
|
+
sender: bridgeSender,
|
|
657
|
+
receiver: bridgeReceiver,
|
|
658
|
+
fromToken: bridgeFromToken,
|
|
659
|
+
toToken: bridgeToToken,
|
|
660
|
+
selectedFeeToken: bridgeSelectedFeeToken,
|
|
661
|
+
toChainNativeToken: bridgeToChainNativeToken,
|
|
662
|
+
bnBridgeAmount,
|
|
663
|
+
bnFromTokenBalance: bnBridgeFromTokenBalance,
|
|
664
|
+
bnBridgeFeeAmount,
|
|
665
|
+
bnFeeTokenBalance: bnBridgeFeeTokenBalance,
|
|
666
|
+
bnBridgeDeliveryFee,
|
|
667
|
+
isFirstBridge: false
|
|
668
|
+
});
|
|
592
669
|
if (bridgeStepValidation.length > 0) {
|
|
593
670
|
return bridgeStepValidation;
|
|
594
671
|
}
|
|
@@ -627,7 +704,22 @@ class SwapBaseHandler {
|
|
|
627
704
|
// Native token balance has already accounted for ED aka strict mode
|
|
628
705
|
const bnBridgeFromTokenBalance = new _bignumber.default(bridgeFromTokenBalance.value);
|
|
629
706
|
const bnBridgeFeeTokenBalance = new _bignumber.default(bridgeFeeTokenBalance.value);
|
|
630
|
-
const bridgeStepValidation = await this.validateBridgeStep(
|
|
707
|
+
const bridgeStepValidation = await this.validateBridgeStep({
|
|
708
|
+
fromChain,
|
|
709
|
+
toChain,
|
|
710
|
+
sender: bridgeSender,
|
|
711
|
+
receiver: bridgeReceiver,
|
|
712
|
+
fromToken: bridgeFromToken,
|
|
713
|
+
toToken: bridgeToToken,
|
|
714
|
+
selectedFeeToken: bridgeSelectedFeeToken,
|
|
715
|
+
toChainNativeToken: bridgeToChainNativeToken,
|
|
716
|
+
bnBridgeAmount,
|
|
717
|
+
bnFromTokenBalance: bnBridgeFromTokenBalance,
|
|
718
|
+
bnBridgeFeeAmount,
|
|
719
|
+
bnFeeTokenBalance: bnBridgeFeeTokenBalance,
|
|
720
|
+
bnBridgeDeliveryFee,
|
|
721
|
+
isFirstBridge: true
|
|
722
|
+
});
|
|
631
723
|
if (bridgeStepValidation.length > 0) {
|
|
632
724
|
return bridgeStepValidation;
|
|
633
725
|
}
|
|
@@ -669,7 +761,12 @@ class SwapBaseHandler {
|
|
|
669
761
|
const atLeastString = (0, _utils5.formatNumber)((0, _utils3._getTokenMinAmount)(swapToken), (0, _utils3._getAssetDecimals)(swapToken), _utils5.balanceFormatter, {
|
|
670
762
|
maxNumberFormat: (0, _utils3._getAssetDecimals)(swapToken) || 6
|
|
671
763
|
});
|
|
672
|
-
return [new _TransactionError.TransactionError(_swap.SwapErrorType.NOT_MEET_MIN_SWAP, (0, _i18next.t)(
|
|
764
|
+
return [new _TransactionError.TransactionError(_swap.SwapErrorType.NOT_MEET_MIN_SWAP, (0, _i18next.t)('bg.SWAP.services.service.swap.baseHandler.swapAmountTooSmall', {
|
|
765
|
+
replace: {
|
|
766
|
+
amount: atLeastString,
|
|
767
|
+
symbol: (0, _utils3._getAssetSymbol)(swapToken)
|
|
768
|
+
}
|
|
769
|
+
}))];
|
|
673
770
|
}
|
|
674
771
|
const swapFeeToken = this.chainService.getAssetBySlug(swapFee.selectedFeeToken || swapFee.defaultFeeToken);
|
|
675
772
|
const swapToChain = this.chainService.getChainInfoByKey(swapMetadata.destinationTokenInfo.originChain);
|
|
@@ -715,7 +812,22 @@ class SwapBaseHandler {
|
|
|
715
812
|
// Native token balance has already accounted for ED aka strict mode
|
|
716
813
|
const bnTransitFromTokenBalance = new _bignumber.default(transitFromTokenBalance.value).plus(bnSwapReceivingAmount);
|
|
717
814
|
const bnTransitFeeTokenBalance = new _bignumber.default(transitFeeTokenBalance.value);
|
|
718
|
-
const transitStepValidation = await this.validateBridgeStep(
|
|
815
|
+
const transitStepValidation = await this.validateBridgeStep({
|
|
816
|
+
fromChain: fromTransitChain,
|
|
817
|
+
toChain: toTransitChain,
|
|
818
|
+
sender: transitSender,
|
|
819
|
+
receiver: transitReceiver,
|
|
820
|
+
fromToken: transitFromToken,
|
|
821
|
+
toToken: transitToToken,
|
|
822
|
+
selectedFeeToken: transitSelectedFeeToken,
|
|
823
|
+
toChainNativeToken: transitToChainNativeToken,
|
|
824
|
+
bnBridgeAmount: bnTransitAmount,
|
|
825
|
+
bnFromTokenBalance: bnTransitFromTokenBalance,
|
|
826
|
+
bnBridgeFeeAmount: bnTransitFeeAmount,
|
|
827
|
+
bnFeeTokenBalance: bnTransitFeeTokenBalance,
|
|
828
|
+
bnBridgeDeliveryFee: bnTransitDeliveryFee,
|
|
829
|
+
isFirstBridge: false
|
|
830
|
+
});
|
|
719
831
|
if (transitStepValidation.length > 0) {
|
|
720
832
|
return transitStepValidation;
|
|
721
833
|
}
|
|
@@ -486,7 +486,7 @@ class SwapService {
|
|
|
486
486
|
blockedActionsMap
|
|
487
487
|
} = blockedActionsFeaturesMap;
|
|
488
488
|
if (blockedActionsMap.swap.includes(currentAction)) {
|
|
489
|
-
return [new _TransactionError.TransactionError(_types3.BasicTxErrorType.UNSUPPORTED, (0, _i18next.t)('
|
|
489
|
+
return [new _TransactionError.TransactionError(_types3.BasicTxErrorType.UNSUPPORTED, (0, _i18next.t)('bg.SWAP.services.service.swap.featureUnderMaintenance'))];
|
|
490
490
|
}
|
|
491
491
|
}
|
|
492
492
|
if (handler) {
|
|
@@ -101,7 +101,7 @@ class TransactionService {
|
|
|
101
101
|
// Check support for transaction
|
|
102
102
|
(0, _transfer.checkSupportForTransaction)(validationResponse, transaction);
|
|
103
103
|
if (!chainInfo) {
|
|
104
|
-
validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INTERNAL_ERROR, (0, _i18next.t)('
|
|
104
|
+
validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INTERNAL_ERROR, (0, _i18next.t)('bg.TRANSACTION_SERVICE.services.service.transaction.cannotFindNetwork')));
|
|
105
105
|
}
|
|
106
106
|
const substrateApi = this.state.chainService.getSubstrateApi(chainInfo.slug);
|
|
107
107
|
const evmApi = this.state.chainService.getEvmApi(chainInfo.slug);
|
|
@@ -1228,8 +1228,8 @@ class TransactionService {
|
|
|
1228
1228
|
const info = (0, _util.isHex)(extrinsicHash) ? extrinsicHash : (0, _helpers.getBaseTransactionInfo)(transaction, this.state.chainService.getChainInfoMap());
|
|
1229
1229
|
this.state.notificationService.notify({
|
|
1230
1230
|
type: _KoniTypes.NotificationType.SUCCESS,
|
|
1231
|
-
title: (0, _i18next.t)('
|
|
1232
|
-
message: (0, _i18next.t)('
|
|
1231
|
+
title: (0, _i18next.t)('bg.TRANSACTION_SERVICE.services.service.transaction.transactionCompleted'),
|
|
1232
|
+
message: (0, _i18next.t)('bg.TRANSACTION_SERVICE.services.service.transaction.transactionInfoCompleted', {
|
|
1233
1233
|
replace: {
|
|
1234
1234
|
info
|
|
1235
1235
|
}
|
|
@@ -1268,8 +1268,8 @@ class TransactionService {
|
|
|
1268
1268
|
const info = (0, _util.isHex)(transaction === null || transaction === void 0 ? void 0 : transaction.extrinsicHash) ? transaction === null || transaction === void 0 ? void 0 : transaction.extrinsicHash : (0, _helpers.getBaseTransactionInfo)(transaction, this.state.chainService.getChainInfoMap());
|
|
1269
1269
|
this.state.notificationService.notify({
|
|
1270
1270
|
type: _KoniTypes.NotificationType.ERROR,
|
|
1271
|
-
title: (0, _i18next.t)('
|
|
1272
|
-
message: (0, _i18next.t)('
|
|
1271
|
+
title: (0, _i18next.t)('bg.TRANSACTION_SERVICE.services.service.transaction.transactionFailed'),
|
|
1272
|
+
message: (0, _i18next.t)('bg.TRANSACTION_SERVICE.services.service.transaction.transactionInfoFailed', {
|
|
1273
1273
|
replace: {
|
|
1274
1274
|
info
|
|
1275
1275
|
}
|
|
@@ -1307,8 +1307,8 @@ class TransactionService {
|
|
|
1307
1307
|
const info = (0, _util.isHex)(transaction === null || transaction === void 0 ? void 0 : transaction.extrinsicHash) ? transaction === null || transaction === void 0 ? void 0 : transaction.extrinsicHash : (0, _helpers.getBaseTransactionInfo)(transaction, this.state.chainService.getChainInfoMap());
|
|
1308
1308
|
this.state.notificationService.notify({
|
|
1309
1309
|
type: _KoniTypes.NotificationType.ERROR,
|
|
1310
|
-
title: (0, _i18next.t)('
|
|
1311
|
-
message: (0, _i18next.t)('
|
|
1310
|
+
title: (0, _i18next.t)('bg.TRANSACTION_SERVICE.services.service.transaction.transactionTimedOut'),
|
|
1311
|
+
message: (0, _i18next.t)('bg.TRANSACTION_SERVICE.services.service.transaction.transactionInfoTimedOut', {
|
|
1312
1312
|
replace: {
|
|
1313
1313
|
info
|
|
1314
1314
|
}
|
|
@@ -1517,7 +1517,7 @@ class TransactionService {
|
|
|
1517
1517
|
if (isApproved) {
|
|
1518
1518
|
let signedTransaction;
|
|
1519
1519
|
if (!payload) {
|
|
1520
|
-
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.UNAUTHORIZED, (0, _i18next.t)('
|
|
1520
|
+
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.UNAUTHORIZED, (0, _i18next.t)('bg.TRANSACTION_SERVICE.services.service.transaction.failedToSign'));
|
|
1521
1521
|
}
|
|
1522
1522
|
const web3Api = this.state.chainService.getEvmApi(chain).api;
|
|
1523
1523
|
if (!isExternal) {
|
|
@@ -1526,7 +1526,7 @@ class TransactionService {
|
|
|
1526
1526
|
const signed = (0, _mergeTransactionAndSignature.mergeTransactionAndSignature)(txObject, payload);
|
|
1527
1527
|
const recover = web3Api.eth.accounts.recoverTransaction(signed);
|
|
1528
1528
|
if (recover.toLowerCase() !== account.address.toLowerCase()) {
|
|
1529
|
-
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.UNAUTHORIZED, (0, _i18next.t)('
|
|
1529
|
+
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.UNAUTHORIZED, (0, _i18next.t)('bg.TRANSACTION_SERVICE.services.service.transaction.wrongSignatureSignWithDappAccount'));
|
|
1530
1530
|
}
|
|
1531
1531
|
signedTransaction = signed;
|
|
1532
1532
|
}
|
|
@@ -1610,7 +1610,7 @@ class TransactionService {
|
|
|
1610
1610
|
emitter.emit('send', eventData); // This event is needed after sending transaction with queue
|
|
1611
1611
|
|
|
1612
1612
|
if (!signature) {
|
|
1613
|
-
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.UNAUTHORIZED, (0, _i18next.t)('
|
|
1613
|
+
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.UNAUTHORIZED, (0, _i18next.t)('bg.TRANSACTION_SERVICE.services.service.transaction.failedToSign'));
|
|
1614
1614
|
}
|
|
1615
1615
|
eventData.extrinsicHash = signature;
|
|
1616
1616
|
emitter.emit('extrinsicHash', eventData);
|
|
@@ -1666,7 +1666,7 @@ class TransactionService {
|
|
|
1666
1666
|
emitter.emit('send', eventData);
|
|
1667
1667
|
transaction.submitSwapOrder().then(isSendSuccess => {
|
|
1668
1668
|
if (!isSendSuccess) {
|
|
1669
|
-
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.UNAUTHORIZED, (0, _i18next.t)('
|
|
1669
|
+
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.UNAUTHORIZED, (0, _i18next.t)('bg.TRANSACTION_SERVICE.services.service.transaction.failedToSign'));
|
|
1670
1670
|
}
|
|
1671
1671
|
this.handleTransactionTimeout(emitter, eventData);
|
|
1672
1672
|
transaction.cronCheckTxSuccess().then(order => {
|
|
@@ -2103,7 +2103,7 @@ class TransactionService {
|
|
|
2103
2103
|
const timeout = setTimeout(() => {
|
|
2104
2104
|
const transaction = this.getTransaction(eventData.id);
|
|
2105
2105
|
if (transaction.status !== _KoniTypes.ExtrinsicStatus.SUCCESS && transaction.status !== _KoniTypes.ExtrinsicStatus.FAIL) {
|
|
2106
|
-
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.TIMEOUT, (0, _i18next.t)('
|
|
2106
|
+
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.TIMEOUT, (0, _i18next.t)('bg.TRANSACTION_SERVICE.services.service.transaction.transactionTimeout')));
|
|
2107
2107
|
emitter.emit('timeout', eventData);
|
|
2108
2108
|
clearTimeout(timeout);
|
|
2109
2109
|
}
|
|
@@ -24,6 +24,9 @@ function getBlockExplorerAccountRoute(explorerLink) {
|
|
|
24
24
|
if (explorerLink.includes('explorer.subspace.network')) {
|
|
25
25
|
return 'accounts';
|
|
26
26
|
}
|
|
27
|
+
if (explorerLink.includes('explorer.comstats.org')) {
|
|
28
|
+
return 'accounts';
|
|
29
|
+
}
|
|
27
30
|
if (explorerLink.includes('edgscan.ink')) {
|
|
28
31
|
return 'accounts';
|
|
29
32
|
}
|
|
@@ -81,7 +84,7 @@ function getBlockExplorerTxRoute(chainInfo) {
|
|
|
81
84
|
if (['gen6_public', 'joystream'].includes(chainInfo.slug)) {
|
|
82
85
|
return '#/extrinsics';
|
|
83
86
|
}
|
|
84
|
-
if (['edgeware'].includes(chainInfo.slug)) {
|
|
87
|
+
if (['edgeware', 'commune'].includes(chainInfo.slug)) {
|
|
85
88
|
return 'extrinsics';
|
|
86
89
|
}
|
|
87
90
|
if (['mosaicTest', 'polkadex'].includes(chainInfo.slug)) {
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.SWCommonAccountError = exports.CommonAccountErrorType = void 0;
|
|
7
7
|
var _SWError = require("@subwallet/extension-base/background/errors/SWError");
|
|
8
8
|
var _utils = require("@subwallet/extension-base/utils");
|
|
9
|
+
var _i18next = require("i18next");
|
|
9
10
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
11
|
// SPDX-License-Identifier: Apache-2.0
|
|
11
12
|
let CommonAccountErrorType;
|
|
@@ -17,15 +18,15 @@ exports.CommonAccountErrorType = CommonAccountErrorType;
|
|
|
17
18
|
})(CommonAccountErrorType || (exports.CommonAccountErrorType = CommonAccountErrorType = {}));
|
|
18
19
|
const DEFAULT_DATA = {
|
|
19
20
|
[CommonAccountErrorType.ACCOUNT_NOT_FOUND]: {
|
|
20
|
-
message: (0, _utils.detectTranslate)('
|
|
21
|
+
message: (0, _utils.detectTranslate)('bg.ACCOUNT.types.error.account.common.accountNotFound'),
|
|
21
22
|
code: 1001
|
|
22
23
|
},
|
|
23
24
|
[CommonAccountErrorType.ACCOUNT_EXISTED]: {
|
|
24
|
-
message: (0, _utils.detectTranslate)('
|
|
25
|
+
message: (0, _utils.detectTranslate)('bg.ACCOUNT.types.error.account.common.accountAlreadyExistsWithName'),
|
|
25
26
|
code: 1002
|
|
26
27
|
},
|
|
27
28
|
[CommonAccountErrorType.ACCOUNT_NAME_EXISTED]: {
|
|
28
|
-
message: (0, _utils.detectTranslate)('
|
|
29
|
+
message: (0, _utils.detectTranslate)('bg.ACCOUNT.types.error.account.common.accountNameInUse'),
|
|
29
30
|
code: 1003
|
|
30
31
|
}
|
|
31
32
|
};
|
|
@@ -33,7 +34,7 @@ class SWCommonAccountError extends _SWError.SWError {
|
|
|
33
34
|
errorClass = 'Account';
|
|
34
35
|
constructor(errorType, _message) {
|
|
35
36
|
const defaultData = DEFAULT_DATA[errorType];
|
|
36
|
-
const message = _message || defaultData.message;
|
|
37
|
+
const message = _message || (0, _i18next.t)(defaultData.message) || '';
|
|
37
38
|
super(errorType, message, defaultData.code);
|
|
38
39
|
}
|
|
39
40
|
}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.SWDeriveError = exports.DeriveErrorType = void 0;
|
|
7
7
|
var _SWError = require("@subwallet/extension-base/background/errors/SWError");
|
|
8
8
|
var _utils = require("@subwallet/extension-base/utils");
|
|
9
|
+
var _i18next = require("i18next");
|
|
9
10
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
11
|
// SPDX-License-Identifier: Apache-2.0
|
|
11
12
|
let DeriveErrorType;
|
|
@@ -20,27 +21,27 @@ exports.DeriveErrorType = DeriveErrorType;
|
|
|
20
21
|
})(DeriveErrorType || (exports.DeriveErrorType = DeriveErrorType = {}));
|
|
21
22
|
const DEFAULT_DATA = {
|
|
22
23
|
[DeriveErrorType.INVALID_DERIVATION_PATH]: {
|
|
23
|
-
message: (0, _utils.detectTranslate)('
|
|
24
|
+
message: (0, _utils.detectTranslate)('bg.ACCOUNT.types.error.account.derive.invalidDerivationPath'),
|
|
24
25
|
code: 1001
|
|
25
26
|
},
|
|
26
27
|
[DeriveErrorType.INVALID_DERIVATION_TYPE]: {
|
|
27
|
-
message: (0, _utils.detectTranslate)('
|
|
28
|
+
message: (0, _utils.detectTranslate)('bg.ACCOUNT.types.error.account.derive.derivationPathNotSupported'),
|
|
28
29
|
code: 1002
|
|
29
30
|
},
|
|
30
31
|
[DeriveErrorType.ROOT_ACCOUNT_NOT_FOUND]: {
|
|
31
|
-
message: (0, _utils.detectTranslate)('
|
|
32
|
+
message: (0, _utils.detectTranslate)('bg.ACCOUNT.types.error.account.derive.accountNotFound'),
|
|
32
33
|
code: 1003
|
|
33
34
|
},
|
|
34
35
|
[DeriveErrorType.INVALID_ACCOUNT_TYPE]: {
|
|
35
|
-
message: (0, _utils.detectTranslate)('
|
|
36
|
+
message: (0, _utils.detectTranslate)('bg.ACCOUNT.types.error.account.derive.invalidAccountType'),
|
|
36
37
|
code: 1004
|
|
37
38
|
},
|
|
38
39
|
[DeriveErrorType.MAX_DERIVATION_DEPTH]: {
|
|
39
|
-
message: (0, _utils.detectTranslate)('
|
|
40
|
+
message: (0, _utils.detectTranslate)('bg.ACCOUNT.types.error.account.derive.derivationPathNotSupported'),
|
|
40
41
|
code: 1005
|
|
41
42
|
},
|
|
42
43
|
[DeriveErrorType.MIN_DERIVATION_DEPTH]: {
|
|
43
|
-
message: (0, _utils.detectTranslate)('
|
|
44
|
+
message: (0, _utils.detectTranslate)('bg.ACCOUNT.types.error.account.derive.derivationPathNotSupported'),
|
|
44
45
|
code: 1006
|
|
45
46
|
}
|
|
46
47
|
};
|
|
@@ -48,7 +49,7 @@ class SWDeriveError extends _SWError.SWError {
|
|
|
48
49
|
errorClass = 'Derive';
|
|
49
50
|
constructor(errorType, _message) {
|
|
50
51
|
const defaultData = DEFAULT_DATA[errorType];
|
|
51
|
-
const message = _message || defaultData.message;
|
|
52
|
+
const message = _message || (0, _i18next.t)(defaultData.message) || '';
|
|
52
53
|
super(errorType, message, defaultData.code);
|
|
53
54
|
}
|
|
54
55
|
}
|
|
@@ -195,7 +195,7 @@ const findSoloNextDerive = parentAddress => {
|
|
|
195
195
|
try {
|
|
196
196
|
parentPair = _uiKeyring.keyring.getPair(parentAddress);
|
|
197
197
|
} catch (e) {}
|
|
198
|
-
(0, _util.assert)(parentPair, (0, _i18next.t)('
|
|
198
|
+
(0, _util.assert)(parentPair, (0, _i18next.t)('bg.ACCOUNT.utils.account.deriveSoloInfo.unableToFindAccount'));
|
|
199
199
|
const deriveInfo = getSoloDerivationInfo(parentPair.type, parentPair.meta);
|
|
200
200
|
const needChangeRoot = deriveInfo.depth > 0;
|
|
201
201
|
let rootPair;
|
|
@@ -206,7 +206,7 @@ const findSoloNextDerive = parentAddress => {
|
|
|
206
206
|
} else {
|
|
207
207
|
rootPair = parentPair;
|
|
208
208
|
}
|
|
209
|
-
(0, _util.assert)(rootPair, (0, _i18next.t)('
|
|
209
|
+
(0, _util.assert)(rootPair, (0, _i18next.t)('bg.ACCOUNT.utils.account.deriveSoloInfo.unableToFindParentAccount'));
|
|
210
210
|
const rootAddress = rootPair.address;
|
|
211
211
|
const currentDepth = deriveInfo.depth;
|
|
212
212
|
const currentIndex = (_deriveInfo$autoIndex = deriveInfo.autoIndexes) === null || _deriveInfo$autoIndex === void 0 ? void 0 : _deriveInfo$autoIndex[currentDepth - 1];
|
|
@@ -188,7 +188,7 @@ const getChainInfoByChainId = (networkMap, chainId) => {
|
|
|
188
188
|
const parseEvmRlp = async (data, networkMap, evmApiMap) => {
|
|
189
189
|
const tx = (0, _eth.createTransactionFromRLP)(data);
|
|
190
190
|
if (!tx) {
|
|
191
|
-
throw new Error((0, _i18next.t)('
|
|
191
|
+
throw new Error((0, _i18next.t)('bg.DAPP.utils.eth.parseTransaction.failedToDecodeQr'));
|
|
192
192
|
}
|
|
193
193
|
const result = {
|
|
194
194
|
input: tx.data,
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.detectTransferTxType = exports.calculateXcmMaxTransferable = exports.calculateTransferMaxTransferable = exports.calculateMaxTransferable = void 0;
|
|
7
|
+
exports.isEvmEIP1559FeeDetail = exports.detectTransferTxType = exports.calculateXcmMaxTransferable = exports.calculateTransferMaxTransferable = exports.calculateMaxTransferable = void 0;
|
|
8
8
|
var _constants = require("@subwallet/extension-base/constants");
|
|
9
9
|
var _xcmParser = require("@subwallet/extension-base/core/substrate/xcm-parser");
|
|
10
10
|
var _consts = require("@subwallet/extension-base/services/balance-service/helpers/subscribe/cardano/consts");
|
|
@@ -99,6 +99,7 @@ const calculateTransferMaxTransferable = async (id, request, freeBalance, fee) =
|
|
|
99
99
|
substrateApi,
|
|
100
100
|
to,
|
|
101
101
|
tonApi,
|
|
102
|
+
transferAll,
|
|
102
103
|
value
|
|
103
104
|
} = request;
|
|
104
105
|
const feeChainType = fee.type;
|
|
@@ -181,7 +182,7 @@ const calculateTransferMaxTransferable = async (id, request, freeBalance, fee) =
|
|
|
181
182
|
});
|
|
182
183
|
} else {
|
|
183
184
|
[transaction] = await (0, _token.createSubstrateExtrinsic)({
|
|
184
|
-
transferAll:
|
|
185
|
+
transferAll: !!transferAll,
|
|
185
186
|
value,
|
|
186
187
|
from: address,
|
|
187
188
|
networkKey: srcChain.slug,
|
|
@@ -517,4 +518,8 @@ const calculateXcmMaxTransferable = async (id, request, freeBalance, fee) => {
|
|
|
517
518
|
error
|
|
518
519
|
};
|
|
519
520
|
};
|
|
520
|
-
exports.calculateXcmMaxTransferable = calculateXcmMaxTransferable;
|
|
521
|
+
exports.calculateXcmMaxTransferable = calculateXcmMaxTransferable;
|
|
522
|
+
const isEvmEIP1559FeeDetail = fee => {
|
|
523
|
+
return !!fee && fee.type === 'evm' && 'baseGasFee' in fee && typeof fee.baseGasFee === 'string' && 'options' in fee && !!fee.options && typeof fee.options === 'object' && fee.gasPrice === undefined;
|
|
524
|
+
};
|
|
525
|
+
exports.isEvmEIP1559FeeDetail = isEvmEIP1559FeeDetail;
|
package/cjs/utils/index.js
CHANGED
|
@@ -626,7 +626,7 @@ async function waitTimeout(ms) {
|
|
|
626
626
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
627
627
|
}
|
|
628
628
|
const stripUrl = url => {
|
|
629
|
-
(0, _util.assert)(url && (url.startsWith('http:') || url.startsWith('https:') || url.startsWith('ipfs:') || url.startsWith('ipns:')), (0, _i18next.t)('
|
|
629
|
+
(0, _util.assert)(url && (url.startsWith('http:') || url.startsWith('https:') || url.startsWith('ipfs:') || url.startsWith('ipns:')), (0, _i18next.t)('bg.utils.invalidUrlForProvider'));
|
|
630
630
|
const parts = url.split('/');
|
|
631
631
|
return parts[2];
|
|
632
632
|
};
|
|
@@ -14,14 +14,26 @@ export * from "./transfer.js";
|
|
|
14
14
|
export function validateSpendingAndFeePayment(spendingToken, feeToken, bnSpendingAmount, bnFromTokenBalance, bnFeeAmount, bnFeeTokenBalance) {
|
|
15
15
|
if (spendingToken.slug === feeToken.slug) {
|
|
16
16
|
if (bnFromTokenBalance.lte(bnSpendingAmount.plus(bnFeeAmount).plus(_isNativeToken(spendingToken) ? '0' : _getTokenMinAmount(spendingToken)))) {
|
|
17
|
-
return [new TransactionError(BasicTxErrorType.NOT_ENOUGH_BALANCE, t(
|
|
17
|
+
return [new TransactionError(BasicTxErrorType.NOT_ENOUGH_BALANCE, t('bg.core.validation.insufficientSpendingTokenBalance', {
|
|
18
|
+
replace: {
|
|
19
|
+
spendingTokenSymbol: spendingToken.symbol
|
|
20
|
+
}
|
|
21
|
+
}))];
|
|
18
22
|
}
|
|
19
23
|
} else {
|
|
20
24
|
if (bnFromTokenBalance.lte(bnSpendingAmount.plus(_isNativeToken(spendingToken) ? '0' : _getTokenMinAmount(spendingToken)))) {
|
|
21
|
-
return [new TransactionError(BasicTxErrorType.NOT_ENOUGH_BALANCE, t(
|
|
25
|
+
return [new TransactionError(BasicTxErrorType.NOT_ENOUGH_BALANCE, t('bg.core.validation.insufficientSpendingTokenBalance', {
|
|
26
|
+
replace: {
|
|
27
|
+
spendingTokenSymbol: spendingToken.symbol
|
|
28
|
+
}
|
|
29
|
+
}))];
|
|
22
30
|
}
|
|
23
31
|
if (bnFeeTokenBalance.lte(bnFeeAmount.plus(_isNativeToken(feeToken) ? '0' : _getTokenMinAmount(feeToken)))) {
|
|
24
|
-
return [new TransactionError(BasicTxErrorType.NOT_ENOUGH_BALANCE, t(
|
|
32
|
+
return [new TransactionError(BasicTxErrorType.NOT_ENOUGH_BALANCE, t('bg.core.validation.insufficientFeeTokenBalance', {
|
|
33
|
+
replace: {
|
|
34
|
+
feeTokenSymbol: feeToken.symbol
|
|
35
|
+
}
|
|
36
|
+
}))];
|
|
25
37
|
}
|
|
26
38
|
}
|
|
27
39
|
return [];
|