@subwallet/extension-base 1.3.45-1 → 1.3.46-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/KoniTypes.d.ts +5 -0
- package/background/KoniTypes.js +5 -0
- package/background/types.d.ts +2 -0
- package/cjs/background/KoniTypes.js +7 -1
- package/cjs/core/logic-validation/request.js +55 -28
- package/cjs/core/utils.js +22 -0
- package/cjs/koni/background/handlers/Extension.js +84 -61
- package/cjs/koni/background/handlers/Tabs.js +11 -3
- package/cjs/packageInfo.js +1 -1
- package/cjs/page/evm/index.js +64 -105
- package/cjs/page/index.js +5 -3
- package/cjs/page/substrate/Accounts.js +2 -1
- package/cjs/services/balance-service/helpers/subscribe/index.js +3 -76
- package/cjs/services/chain-service/index.js +3 -0
- package/cjs/services/chain-service/utils/index.js +31 -1
- package/cjs/services/earning-service/constants/chains.js +2 -1
- package/cjs/services/earning-service/handlers/native-staking/base.js +3 -0
- package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +9 -2
- package/cjs/services/earning-service/handlers/nomination-pool/index.js +6 -3
- package/cjs/services/earning-service/service.js +39 -17
- package/cjs/services/keyring-service/context/handlers/Json.js +2 -1
- package/cjs/services/keyring-service/context/handlers/Ledger.js +7 -2
- package/cjs/services/request-service/handler/AuthRequestHandler.js +30 -6
- package/cjs/types/account/info/keyring.js +1 -0
- package/cjs/utils/account/analyze.js +5 -2
- package/cjs/utils/account/common.js +93 -2
- package/cjs/utils/account/transform.js +10 -0
- package/cjs/utils/asset.js +9 -2
- package/cjs/utils/staticData/index.js +7 -2
- package/core/logic-validation/request.js +31 -4
- package/core/types.d.ts +3 -2
- package/core/utils.js +24 -2
- package/koni/background/handlers/Extension.js +31 -8
- package/koni/background/handlers/Tabs.js +11 -4
- package/package.json +7 -6
- package/packageInfo.js +1 -1
- package/page/evm/index.d.ts +9 -18
- package/page/evm/index.js +62 -101
- package/page/index.js +5 -3
- package/page/substrate/Accounts.js +2 -1
- package/services/balance-service/helpers/subscribe/index.d.ts +1 -11
- package/services/balance-service/helpers/subscribe/index.js +3 -74
- package/services/chain-service/index.d.ts +1 -0
- package/services/chain-service/index.js +3 -0
- package/services/chain-service/utils/index.d.ts +10 -2
- package/services/chain-service/utils/index.js +26 -2
- package/services/earning-service/constants/chains.d.ts +1 -0
- package/services/earning-service/constants/chains.js +2 -1
- package/services/earning-service/handlers/native-staking/base.d.ts +1 -0
- package/services/earning-service/handlers/native-staking/base.js +3 -0
- package/services/earning-service/handlers/native-staking/relay-chain.js +9 -2
- package/services/earning-service/handlers/nomination-pool/index.d.ts +1 -0
- package/services/earning-service/handlers/nomination-pool/index.js +6 -3
- package/services/earning-service/service.d.ts +2 -0
- package/services/earning-service/service.js +42 -20
- package/services/keyring-service/context/handlers/Json.js +2 -1
- package/services/keyring-service/context/handlers/Ledger.js +7 -2
- package/services/request-service/handler/AuthRequestHandler.d.ts +1 -0
- package/services/request-service/handler/AuthRequestHandler.js +30 -6
- package/services/request-service/types.d.ts +1 -0
- package/types/account/action/subscribe.d.ts +3 -0
- package/types/account/info/keyring.d.ts +3 -0
- package/types/account/info/keyring.js +1 -0
- package/types/balance/transfer.d.ts +1 -0
- package/utils/account/analyze.js +5 -2
- package/utils/account/common.d.ts +13 -1
- package/utils/account/common.js +91 -2
- package/utils/account/transform.js +10 -0
- package/utils/asset.d.ts +2 -1
- package/utils/asset.js +7 -1
- package/utils/staticData/assetHubStaking.json +1 -0
- package/utils/staticData/index.d.ts +4 -1
- package/utils/staticData/index.js +5 -1
|
@@ -664,6 +664,7 @@ export interface CreateHardwareAccountItem {
|
|
|
664
664
|
isEthereum: boolean;
|
|
665
665
|
isGeneric: boolean;
|
|
666
666
|
isLedgerRecovery?: boolean;
|
|
667
|
+
isSubstrateECDSA?: boolean;
|
|
667
668
|
}
|
|
668
669
|
export interface RequestAccountCreateHardwareV2 extends CreateHardwareAccountItem {
|
|
669
670
|
isAllowed?: boolean;
|
|
@@ -1235,6 +1236,10 @@ export interface LedgerNetwork {
|
|
|
1235
1236
|
/** Slip44 in the derivation path */
|
|
1236
1237
|
slip44: number;
|
|
1237
1238
|
}
|
|
1239
|
+
export declare const enum POLKADOT_LEDGER_SCHEME {
|
|
1240
|
+
ED25519 = "ed25519",
|
|
1241
|
+
ECDSA = "ecdsa"
|
|
1242
|
+
}
|
|
1238
1243
|
export interface MigrationLedgerNetwork extends Omit<LedgerNetwork, 'isGeneric' | 'isEthereum' | 'isDevMode' | 'icon'> {
|
|
1239
1244
|
ss58_addr_type: number;
|
|
1240
1245
|
}
|
package/background/KoniTypes.js
CHANGED
|
@@ -217,6 +217,11 @@ export let CardanoProviderErrorType;
|
|
|
217
217
|
CardanoProviderErrorType["SUBMIT_TRANSACTION_FAILURE"] = "SUBMIT_TRANSACTION_FAILURE";
|
|
218
218
|
CardanoProviderErrorType["SIGN_TRANSACTION_DECLINED"] = "SIGN_TRANSACTION_DECLINED";
|
|
219
219
|
})(CardanoProviderErrorType || (CardanoProviderErrorType = {}));
|
|
220
|
+
export let POLKADOT_LEDGER_SCHEME;
|
|
221
|
+
(function (POLKADOT_LEDGER_SCHEME) {
|
|
222
|
+
POLKADOT_LEDGER_SCHEME["ED25519"] = "ed25519";
|
|
223
|
+
POLKADOT_LEDGER_SCHEME["ECDSA"] = "ecdsa";
|
|
224
|
+
})(POLKADOT_LEDGER_SCHEME || (POLKADOT_LEDGER_SCHEME = {}));
|
|
220
225
|
export let NotificationType;
|
|
221
226
|
(function (NotificationType) {
|
|
222
227
|
NotificationType["INFO"] = "info";
|
package/background/types.d.ts
CHANGED
|
@@ -119,6 +119,7 @@ export interface RequestAuthorizeTab {
|
|
|
119
119
|
accountAuthTypes?: AccountAuthType[];
|
|
120
120
|
allowedAccounts?: string[];
|
|
121
121
|
reConfirm?: boolean;
|
|
122
|
+
canConnectSubstrateEcdsa?: boolean;
|
|
122
123
|
}
|
|
123
124
|
export interface RequestAuthorizeApprove {
|
|
124
125
|
id: string;
|
|
@@ -195,6 +196,7 @@ export interface RequestAccountBatchExport {
|
|
|
195
196
|
export interface RequestAccountList {
|
|
196
197
|
anyType?: boolean;
|
|
197
198
|
accountAuthType?: AccountAuthType;
|
|
199
|
+
isSubstrateConnector?: boolean;
|
|
198
200
|
}
|
|
199
201
|
export interface RequestAccountSubscribe {
|
|
200
202
|
accountAuthType?: AccountAuthType;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.WalletUnlockType = exports.TransactionDirection = exports.ThemeNames = exports.StakingType = exports.RuntimeEnvironment = exports.RMRK_VER = exports.ProviderErrorType = exports.NotificationType = exports.NETWORK_STATUS = exports.MobileOS = exports.MantaPayEnableMessage = exports.ExtrinsicType = exports.ExtrinsicStatus = exports.ExternalRequestPromiseStatus = exports.EvmProviderErrorType = exports.CrowdloanParaState = exports.ContractType = exports.ChainType = exports.CardanoProviderErrorType = exports.CampaignDataType = exports.BitcoinProviderErrorType = exports.BalanceErrorType = exports.AssetHubNftType = exports.AccountExternalErrorCode = exports.APIItemState = void 0;
|
|
6
|
+
exports.WalletUnlockType = exports.TransactionDirection = exports.ThemeNames = exports.StakingType = exports.RuntimeEnvironment = exports.RMRK_VER = exports.ProviderErrorType = exports.POLKADOT_LEDGER_SCHEME = exports.NotificationType = exports.NETWORK_STATUS = exports.MobileOS = exports.MantaPayEnableMessage = exports.ExtrinsicType = exports.ExtrinsicStatus = exports.ExternalRequestPromiseStatus = exports.EvmProviderErrorType = exports.CrowdloanParaState = exports.ContractType = exports.ChainType = exports.CardanoProviderErrorType = exports.CampaignDataType = exports.BitcoinProviderErrorType = exports.BalanceErrorType = exports.AssetHubNftType = exports.AccountExternalErrorCode = exports.APIItemState = void 0;
|
|
7
7
|
// Copyright 2019-2022 @polkadot/extension-koni authors & contributors
|
|
8
8
|
// SPDX-License-Identifier: Apache-2.0
|
|
9
9
|
let RuntimeEnvironment;
|
|
@@ -233,6 +233,12 @@ exports.CardanoProviderErrorType = CardanoProviderErrorType;
|
|
|
233
233
|
CardanoProviderErrorType["SUBMIT_TRANSACTION_FAILURE"] = "SUBMIT_TRANSACTION_FAILURE";
|
|
234
234
|
CardanoProviderErrorType["SIGN_TRANSACTION_DECLINED"] = "SIGN_TRANSACTION_DECLINED";
|
|
235
235
|
})(CardanoProviderErrorType || (exports.CardanoProviderErrorType = CardanoProviderErrorType = {}));
|
|
236
|
+
let POLKADOT_LEDGER_SCHEME;
|
|
237
|
+
exports.POLKADOT_LEDGER_SCHEME = POLKADOT_LEDGER_SCHEME;
|
|
238
|
+
(function (POLKADOT_LEDGER_SCHEME) {
|
|
239
|
+
POLKADOT_LEDGER_SCHEME["ED25519"] = "ed25519";
|
|
240
|
+
POLKADOT_LEDGER_SCHEME["ECDSA"] = "ecdsa";
|
|
241
|
+
})(POLKADOT_LEDGER_SCHEME || (exports.POLKADOT_LEDGER_SCHEME = POLKADOT_LEDGER_SCHEME = {}));
|
|
236
242
|
let NotificationType;
|
|
237
243
|
exports.NotificationType = NotificationType;
|
|
238
244
|
(function (NotificationType) {
|
|
@@ -28,16 +28,17 @@ var _CardanoProviderError = require("@subwallet/extension-base/background/errors
|
|
|
28
28
|
var _EvmProviderError = require("@subwallet/extension-base/background/errors/EvmProviderError");
|
|
29
29
|
var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
30
30
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
31
|
+
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
31
32
|
var _types = require("@subwallet/extension-base/types");
|
|
32
|
-
var
|
|
33
|
+
var _utils2 = require("@subwallet/extension-base/utils");
|
|
33
34
|
var _cardano = require("@subwallet/extension-base/utils/cardano");
|
|
34
35
|
var _parseTransaction = require("@subwallet/extension-base/utils/eth/parseTransaction");
|
|
35
36
|
var _getId = require("@subwallet/extension-base/utils/getId");
|
|
36
37
|
var _keyring = require("@subwallet/keyring");
|
|
37
|
-
var
|
|
38
|
+
var _utils3 = require("@subwallet/keyring/utils");
|
|
38
39
|
var _validate = require("@subwallet/keyring/utils/address/validate");
|
|
39
40
|
var _uiKeyring = require("@subwallet/ui-keyring");
|
|
40
|
-
var
|
|
41
|
+
var _utils4 = require("@walletconnect/utils");
|
|
41
42
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
42
43
|
var _bn = _interopRequireDefault(require("bn.js"));
|
|
43
44
|
var _i18next = require("i18next");
|
|
@@ -175,7 +176,7 @@ async function validationAuthMiddleware(koni, url, payload) {
|
|
|
175
176
|
return handleAuthError(payload, 'Unable to find account', 'dApp', errors);
|
|
176
177
|
} else {
|
|
177
178
|
const authList = await koni.getAuthList();
|
|
178
|
-
const authInfo = authList[(0,
|
|
179
|
+
const authInfo = authList[(0, _utils2.stripUrl)(url)];
|
|
179
180
|
if (!authInfo || !authInfo.isAllowed || !authInfo.isAllowedMap[payload.pair.address]) {
|
|
180
181
|
return handleAuthError(payload, 'Account not in allowed list', 'dApp', errors);
|
|
181
182
|
}
|
|
@@ -248,7 +249,7 @@ async function validationConnectMiddleware(koni, url, payload) {
|
|
|
248
249
|
|
|
249
250
|
// Calculate transaction data
|
|
250
251
|
try {
|
|
251
|
-
await Promise.race([checkProviderConnected(), (0,
|
|
252
|
+
await Promise.race([checkProviderConnected(), (0, _utils2.wait)(3000).then(async () => {
|
|
252
253
|
if (!currentProviderConnected) {
|
|
253
254
|
await koni.chainService.initSingleApi(networkKey);
|
|
254
255
|
await checkProviderConnected();
|
|
@@ -272,7 +273,8 @@ async function validationEvmDataTransactionMiddleware(koni, url, payload) {
|
|
|
272
273
|
const transactionParams = payload.payloadAfterValidated;
|
|
273
274
|
const {
|
|
274
275
|
address: fromAddress,
|
|
275
|
-
networkKey
|
|
276
|
+
networkKey,
|
|
277
|
+
pair: pair_
|
|
276
278
|
} = payload;
|
|
277
279
|
const evmApi = koni.getEvmApi(networkKey || '');
|
|
278
280
|
const web3 = evmApi === null || evmApi === void 0 ? void 0 : evmApi.api;
|
|
@@ -310,8 +312,25 @@ async function validationEvmDataTransactionMiddleware(koni, url, payload) {
|
|
|
310
312
|
if (!fromAddress || !(0, _utilCrypto.isEthereumAddress)(fromAddress)) {
|
|
311
313
|
handleError('the sender address must be the ethereum address type');
|
|
312
314
|
}
|
|
313
|
-
|
|
314
|
-
|
|
315
|
+
const pair = pair_ || _uiKeyring.keyring.getPair(fromAddress);
|
|
316
|
+
if (!pair) {
|
|
317
|
+
handleError('Not found address to sign');
|
|
318
|
+
}
|
|
319
|
+
if (pair_ !== null && pair_ !== void 0 && pair_.meta.isSubstrateECDSA) {
|
|
320
|
+
handleError('Substrate account can not send this transaction');
|
|
321
|
+
}
|
|
322
|
+
const evmNetwork = koni.getChainInfo(networkKey || '');
|
|
323
|
+
if (transaction.to) {
|
|
324
|
+
if (!(0, _utilCrypto.isEthereumAddress)(transaction.to)) {
|
|
325
|
+
handleError('invalid recipient address');
|
|
326
|
+
} else {
|
|
327
|
+
try {
|
|
328
|
+
const pairTo = _uiKeyring.keyring.getPair(transaction.to);
|
|
329
|
+
if (pairTo && pairTo.meta.isSubstrateECDSA && !(0, _utils._isSubstrateEvmCompatibleChain)(evmNetwork)) {
|
|
330
|
+
handleError('substrate account cannot receive this token');
|
|
331
|
+
}
|
|
332
|
+
} catch (e) {}
|
|
333
|
+
}
|
|
315
334
|
}
|
|
316
335
|
if (fromAddress === transaction.to) {
|
|
317
336
|
handleError('receiving address must be different from sending address');
|
|
@@ -321,7 +340,7 @@ async function validationEvmDataTransactionMiddleware(koni, url, payload) {
|
|
|
321
340
|
if (transaction.value) {
|
|
322
341
|
try {
|
|
323
342
|
const valueBn = new _bignumber.default(transaction.value.toString());
|
|
324
|
-
if (!valueBn.eq(
|
|
343
|
+
if (!valueBn.eq(_utils2.BN_ZERO)) {
|
|
325
344
|
handleError('Recipient address not found');
|
|
326
345
|
}
|
|
327
346
|
} catch (e) {
|
|
@@ -345,7 +364,7 @@ async function validationEvmDataTransactionMiddleware(koni, url, payload) {
|
|
|
345
364
|
|
|
346
365
|
// Calculate transaction data
|
|
347
366
|
try {
|
|
348
|
-
await Promise.race([getTransactionGas(), (0,
|
|
367
|
+
await Promise.race([getTransactionGas(), (0, _utils2.wait)(3000).then(async () => {
|
|
349
368
|
if (!transaction.gas) {
|
|
350
369
|
await koni.chainService.initSingleApi(networkKey || '');
|
|
351
370
|
await getTransactionGas();
|
|
@@ -368,7 +387,7 @@ async function validationEvmDataTransactionMiddleware(koni, url, payload) {
|
|
|
368
387
|
const gasLimit = transaction.gas || (await evmApi.api.eth.estimateGas(transaction));
|
|
369
388
|
const id = (0, _getId.getId)();
|
|
370
389
|
const feeInfo = await koni.feeService.subscribeChainFee(id, networkKey, 'evm');
|
|
371
|
-
const feeCombine = (0,
|
|
390
|
+
const feeCombine = (0, _utils2.combineEthFee)(feeInfo);
|
|
372
391
|
if (transaction.maxFeePerGas) {
|
|
373
392
|
estimateGas = new _bignumber.default(transaction.maxFeePerGas.toString()).multipliedBy(gasLimit).toFixed(0);
|
|
374
393
|
} else if (transaction.gasPrice) {
|
|
@@ -407,7 +426,6 @@ async function validationEvmDataTransactionMiddleware(koni, url, payload) {
|
|
|
407
426
|
handleError(e.message);
|
|
408
427
|
}
|
|
409
428
|
const hasError = errors && errors.length > 0 || !networkKey;
|
|
410
|
-
const evmNetwork = koni.getChainInfo(networkKey || '');
|
|
411
429
|
let isToContract = false;
|
|
412
430
|
let hashPayload = '';
|
|
413
431
|
let parseData = '';
|
|
@@ -443,7 +461,7 @@ async function validationEvmSignMessageMiddleware(koni, url, payload_) {
|
|
|
443
461
|
const {
|
|
444
462
|
promise,
|
|
445
463
|
resolve
|
|
446
|
-
} = (0,
|
|
464
|
+
} = (0, _utils2.createPromiseHandler)();
|
|
447
465
|
let hashPayload = '';
|
|
448
466
|
let canSign = false;
|
|
449
467
|
const handleError = message_ => {
|
|
@@ -458,6 +476,12 @@ async function validationEvmSignMessageMiddleware(koni, url, payload_) {
|
|
|
458
476
|
handleError('Not found address or payload to sign');
|
|
459
477
|
}
|
|
460
478
|
const pair = pair_ || _uiKeyring.keyring.getPair(address);
|
|
479
|
+
if (!pair) {
|
|
480
|
+
handleError('Not found address to sign');
|
|
481
|
+
}
|
|
482
|
+
if (pair_ !== null && pair_ !== void 0 && pair_.meta.isSubstrateECDSA) {
|
|
483
|
+
handleError('Substrate account can not sign this message');
|
|
484
|
+
}
|
|
461
485
|
if (method) {
|
|
462
486
|
if (['eth_sign', 'personal_sign', 'eth_signTypedData', 'eth_signTypedData_v1', 'eth_signTypedData_v3', 'eth_signTypedData_v4'].indexOf(method) < 0) {
|
|
463
487
|
handleError('Unsupported action');
|
|
@@ -526,14 +550,14 @@ function validationAuthWCMiddleware(koni, url, payload, topic) {
|
|
|
526
550
|
const {
|
|
527
551
|
promise,
|
|
528
552
|
resolve
|
|
529
|
-
} = (0,
|
|
553
|
+
} = (0, _utils2.createPromiseHandler)();
|
|
530
554
|
const {
|
|
531
555
|
address,
|
|
532
556
|
errors
|
|
533
557
|
} = payload;
|
|
534
558
|
if (!topic) {
|
|
535
559
|
payload.errorPosition = 'dApp';
|
|
536
|
-
errors.push(new Error((0,
|
|
560
|
+
errors.push(new Error((0, _utils4.getSdkError)('UNAUTHORIZED_EXTEND_REQUEST').message));
|
|
537
561
|
} else {
|
|
538
562
|
const requestSession = koni.walletConnectService.getSession(topic);
|
|
539
563
|
let sessionAccounts = [];
|
|
@@ -556,7 +580,7 @@ function validationAuthWCMiddleware(koni, url, payload, topic) {
|
|
|
556
580
|
const [message] = convertErrorMessage('Unable to find account');
|
|
557
581
|
errors.push(new Error(message));
|
|
558
582
|
}
|
|
559
|
-
const isExitsAccount = sessionAccounts.find(account => (0,
|
|
583
|
+
const isExitsAccount = sessionAccounts.find(account => (0, _utils2.isSameAddress)(account, address));
|
|
560
584
|
if (!isExitsAccount) {
|
|
561
585
|
payload.errorPosition = 'dApp';
|
|
562
586
|
const [message] = convertErrorMessage('Account not in allowed list');
|
|
@@ -577,7 +601,7 @@ function validationAuthWCMiddleware(koni, url, payload, topic) {
|
|
|
577
601
|
}
|
|
578
602
|
async function validationAuthCardanoMiddleware(koni, url, payload) {
|
|
579
603
|
const authList = await koni.getAuthList();
|
|
580
|
-
const authInfo = authList[(0,
|
|
604
|
+
const authInfo = authList[(0, _utils2.stripUrl)(url)];
|
|
581
605
|
const {
|
|
582
606
|
address,
|
|
583
607
|
errors
|
|
@@ -600,14 +624,14 @@ async function validationAuthCardanoMiddleware(koni, url, payload) {
|
|
|
600
624
|
if (!authInfo.isAllowedMap[address]) {
|
|
601
625
|
return handleAuthError(payload, 'Account not in allowed list', 'dApp', errors);
|
|
602
626
|
}
|
|
603
|
-
const addressByChainFormat = (0,
|
|
604
|
-
if (!(0,
|
|
627
|
+
const addressByChainFormat = (0, _utils2.reformatAddress)(currentAddress, currentNetworkId);
|
|
628
|
+
if (!(0, _utils2.isSameAddress)(addressByChainFormat, address)) {
|
|
605
629
|
return handleAuthError(payload, 'Current account is changed', 'dApp', errors);
|
|
606
630
|
}
|
|
607
631
|
} else if ((0, _keyring.isCardanoRewardAddress)(address)) {
|
|
608
632
|
const rewardAddress = pair.cardano.rewardAddress;
|
|
609
|
-
const addressByChainFormat = (0,
|
|
610
|
-
if (!(0,
|
|
633
|
+
const addressByChainFormat = (0, _utils2.reformatAddress)(rewardAddress, currentNetworkId);
|
|
634
|
+
if (!(0, _utils2.isSameAddress)(addressByChainFormat, address)) {
|
|
611
635
|
return handleAuthError(payload, 'Current account is changed', 'dApp', errors);
|
|
612
636
|
}
|
|
613
637
|
}
|
|
@@ -630,7 +654,7 @@ async function validationCardanoSignDataMiddleware(koni, url, payload_) {
|
|
|
630
654
|
const {
|
|
631
655
|
promise,
|
|
632
656
|
resolve
|
|
633
|
-
} = (0,
|
|
657
|
+
} = (0, _utils2.createPromiseHandler)();
|
|
634
658
|
let canSign = false;
|
|
635
659
|
const handleError = message_ => {
|
|
636
660
|
payload_.errorPosition = 'ui';
|
|
@@ -734,7 +758,7 @@ async function validationBitcoinSignMessageMiddleware(koni, url, payload_) {
|
|
|
734
758
|
const {
|
|
735
759
|
promise,
|
|
736
760
|
resolve
|
|
737
|
-
} = (0,
|
|
761
|
+
} = (0, _utils2.createPromiseHandler)();
|
|
738
762
|
const handleError = message_ => {
|
|
739
763
|
payload_.errorPosition = 'ui';
|
|
740
764
|
payload_.confirmationType = 'bitcoinSignatureRequest';
|
|
@@ -791,7 +815,7 @@ async function validationBitcoinSignPsbtMiddleware(koni, url, payload_) {
|
|
|
791
815
|
const {
|
|
792
816
|
promise,
|
|
793
817
|
resolve
|
|
794
|
-
} = (0,
|
|
818
|
+
} = (0, _utils2.createPromiseHandler)();
|
|
795
819
|
const handleError = message_ => {
|
|
796
820
|
payload_.errorPosition = 'ui';
|
|
797
821
|
payload_.confirmationType = 'bitcoinSignPsbtRequest';
|
|
@@ -815,7 +839,7 @@ async function validationBitcoinSignPsbtMiddleware(koni, url, payload_) {
|
|
|
815
839
|
if (!(0, _validate.isBitcoinAddress)(address)) {
|
|
816
840
|
handleError((0, _i18next.t)('Not found address'));
|
|
817
841
|
}
|
|
818
|
-
const addressInfo = (0,
|
|
842
|
+
const addressInfo = (0, _utils3.getBitcoinAddressInfo)(address);
|
|
819
843
|
if (psbtParams.network !== addressInfo.network) {
|
|
820
844
|
handleError((0, _i18next.t)('The account or the network is not matched'));
|
|
821
845
|
}
|
|
@@ -855,8 +879,8 @@ async function validationBitcoinSendTransactionMiddleware(koni, url, payload_) {
|
|
|
855
879
|
const {
|
|
856
880
|
promise,
|
|
857
881
|
resolve
|
|
858
|
-
} = (0,
|
|
859
|
-
const senderAccountInfo = (0,
|
|
882
|
+
} = (0, _utils2.createPromiseHandler)();
|
|
883
|
+
const senderAccountInfo = (0, _utils3.getBitcoinAddressInfo)(address);
|
|
860
884
|
const handleError = message_ => {
|
|
861
885
|
payload_.errorPosition = 'ui';
|
|
862
886
|
payload_.confirmationType = 'bitcoinSendTransactionRequestAfterConfirmation';
|
|
@@ -891,7 +915,7 @@ async function validationBitcoinSendTransactionMiddleware(koni, url, payload_) {
|
|
|
891
915
|
}).length > 0) {
|
|
892
916
|
throw new _BitcoinProviderError.BitcoinProviderError(_KoniTypes.BitcoinProviderErrorType.INVALID_PARAMS);
|
|
893
917
|
}
|
|
894
|
-
const recipientAccountInfo = (0,
|
|
918
|
+
const recipientAccountInfo = (0, _utils3.getBitcoinAddressInfo)(transactionParams.recipients[0].address);
|
|
895
919
|
if (recipientAccountInfo.network !== transactionParams.network) {
|
|
896
920
|
handleError((0, _i18next.t)('invalid recipient address'));
|
|
897
921
|
}
|
|
@@ -1012,6 +1036,9 @@ function convertErrorMessage(message_, name) {
|
|
|
1012
1036
|
if (message.includes('insufficient balance') || message.includes('insufficient funds')) {
|
|
1013
1037
|
return [(0, _i18next.t)('Insufficient balance on the sender address. Top up your balance and try again'), (0, _i18next.t)('Unable to sign transaction')];
|
|
1014
1038
|
}
|
|
1039
|
+
if (message.includes('substrate') && message.includes('receive this token')) {
|
|
1040
|
+
return [(0, _i18next.t)('The recipient account is a Ledger Polkadot (EVM) account, which is not supported for this transaction. Change recipient account and try again'), (0, _i18next.t)('Invalid account type')];
|
|
1041
|
+
}
|
|
1015
1042
|
|
|
1016
1043
|
// Sign Message
|
|
1017
1044
|
if (message.includes('not found address or payload to sign')) {
|
package/cjs/core/utils.js
CHANGED
|
@@ -20,8 +20,10 @@ exports.ledgerMustCheckNetwork = ledgerMustCheckNetwork;
|
|
|
20
20
|
var _types = require("@subwallet/chain-list/types");
|
|
21
21
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
22
22
|
var _types2 = require("@subwallet/extension-base/core/substrate/types");
|
|
23
|
+
var _types3 = require("@subwallet/extension-base/core/types");
|
|
23
24
|
var _utils = require("@subwallet/extension-base/services/balance-service/helpers/subscribe/ton/utils");
|
|
24
25
|
var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
|
|
26
|
+
var _types4 = require("@subwallet/extension-base/types");
|
|
25
27
|
var _utils3 = require("@subwallet/extension-base/utils");
|
|
26
28
|
var _keyring = require("@subwallet/keyring");
|
|
27
29
|
var _utils4 = require("@subwallet/keyring/utils");
|
|
@@ -141,7 +143,9 @@ function _isNotDuplicateAddress(validateRecipientParams) {
|
|
|
141
143
|
function _isSupportLedgerAccount(validateRecipientParams) {
|
|
142
144
|
const {
|
|
143
145
|
account,
|
|
146
|
+
actionType,
|
|
144
147
|
allowLedgerGenerics,
|
|
148
|
+
assetInfo,
|
|
145
149
|
destChainInfo
|
|
146
150
|
} = validateRecipientParams;
|
|
147
151
|
if (account !== null && account !== void 0 && account.isHardware) {
|
|
@@ -154,6 +158,24 @@ function _isSupportLedgerAccount(validateRecipientParams) {
|
|
|
154
158
|
return 'Your Ledger account is not supported by {{network}} network.'.replace('{{network}}', destChainName);
|
|
155
159
|
}
|
|
156
160
|
} else {
|
|
161
|
+
if (account.chainType === _types4.AccountChainType.ETHEREUM) {
|
|
162
|
+
// For ecdsa substrate account in polkadot ledger app
|
|
163
|
+
if (account.signMode === _types4.AccountSignMode.ECDSA_SUBSTRATE_LEDGER) {
|
|
164
|
+
if (actionType === _types3.ActionType.SEND_NFT) {
|
|
165
|
+
return 'Ledger Polkadot (EVM) address is not supported for NFT transfer';
|
|
166
|
+
}
|
|
167
|
+
if (!(0, _utils2._isSubstrateEvmCompatibleChain)(destChainInfo)) {
|
|
168
|
+
return 'Ledger Polkadot (EVM) address is not supported for this transfer';
|
|
169
|
+
} else if (assetInfo && !(0, _utils3.isSubstrateEcdsaLedgerAssetSupported)(assetInfo, destChainInfo)) {
|
|
170
|
+
return 'Ledger Polkadot (EVM) address is not supported for this transfer';
|
|
171
|
+
}
|
|
172
|
+
} else {
|
|
173
|
+
if (!(0, _utils2._isChainCompatibleLedgerEvm)(destChainInfo)) {
|
|
174
|
+
return 'Ledger EVM address is not supported for this transfer';
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
157
179
|
// For ledger generic
|
|
158
180
|
const ledgerCheck = ledgerMustCheckNetwork(account);
|
|
159
181
|
if (ledgerCheck !== 'unnecessary' && !allowLedgerGenerics.includes(destChainInfo.slug)) {
|