@subwallet/extension-base 1.3.22-0 → 1.3.24-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 +77 -4
- package/background/KoniTypes.js +2 -0
- package/cjs/background/KoniTypes.js +2 -0
- package/cjs/constants/environment.js +4 -2
- package/cjs/constants/index.js +21 -4
- package/cjs/constants/signing.js +6 -2
- package/cjs/core/logic-validation/recipientAddress.js +9 -1
- package/cjs/core/logic-validation/transfer.js +57 -36
- package/cjs/core/types.js +1 -0
- package/cjs/core/utils.js +12 -1
- package/cjs/defaults.js +1 -1
- package/cjs/koni/api/dotsama/crowdloan.js +1 -1
- package/cjs/koni/api/nft/index.js +9 -16
- package/cjs/koni/api/staking/index.js +3 -4
- package/cjs/koni/background/handlers/Extension.js +343 -185
- package/cjs/koni/background/handlers/State.js +17 -2
- package/cjs/koni/background/handlers/Tabs.js +1 -1
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/helpers/subscribe/cardano/consts.js +11 -0
- package/cjs/services/balance-service/helpers/subscribe/cardano/index.js +63 -0
- package/cjs/services/balance-service/helpers/subscribe/cardano/types.js +1 -0
- package/cjs/services/balance-service/helpers/subscribe/cardano/utils.js +74 -0
- package/cjs/services/balance-service/helpers/subscribe/index.js +21 -7
- package/cjs/services/balance-service/helpers/subscribe/ton/utils.js +2 -2
- package/cjs/services/balance-service/index.js +4 -2
- package/cjs/services/balance-service/transfer/cardano-transfer.js +122 -0
- package/cjs/services/balance-service/transfer/smart-contract.js +24 -3
- package/cjs/services/balance-service/transfer/token.js +4 -4
- package/cjs/services/chain-service/handler/CardanoApi.js +176 -0
- package/cjs/services/chain-service/handler/CardanoChainHandler.js +83 -0
- package/cjs/services/chain-service/handler/TonApi.js +2 -5
- package/cjs/services/chain-service/index.js +40 -7
- package/cjs/services/chain-service/utils/index.js +40 -11
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/earning-service/handlers/liquid-staking/bifrost-manta.js +1 -1
- package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +1 -1
- package/cjs/services/earning-service/service.js +6 -12
- package/cjs/services/fee-service/service.js +19 -8
- package/cjs/services/fee-service/utils/tokenPayFee.js +151 -0
- package/cjs/services/history-service/index.js +4 -6
- package/cjs/services/inapp-notification-service/index.js +12 -4
- package/cjs/services/keyring-service/context/account-context.js +17 -2
- package/cjs/services/keyring-service/context/handlers/Derive.js +10 -7
- package/cjs/services/keyring-service/context/handlers/Migration.js +268 -0
- package/cjs/services/keyring-service/context/handlers/Mnemonic.js +2 -2
- package/cjs/services/keyring-service/context/handlers/Secret.js +1 -1
- package/cjs/services/keyring-service/utils.js +18 -0
- package/cjs/services/request-service/handler/CardanoRequestHandler.js +172 -0
- package/cjs/services/request-service/handler/EvmRequestHandler.js +1 -1
- package/cjs/services/request-service/handler/MetadataRequestHandler.js +5 -13
- package/cjs/services/request-service/index.js +22 -4
- package/cjs/services/setting-service/constants.js +10 -1
- package/cjs/services/storage-service/DatabaseService.js +3 -0
- package/cjs/services/storage-service/db-stores/InappNotification.js +6 -0
- package/cjs/services/swap-service/handler/asset-hub/handler.js +0 -59
- package/cjs/services/swap-service/handler/chainflip-handler.js +33 -281
- package/cjs/services/swap-service/handler/hydradx-handler.js +23 -190
- package/cjs/services/swap-service/handler/simpleswap-handler.js +1 -222
- package/cjs/services/swap-service/handler/uniswap-handler.js +331 -0
- package/cjs/services/swap-service/index.js +31 -22
- package/cjs/services/swap-service/utils.js +21 -38
- package/cjs/services/transaction-service/helpers/index.js +6 -1
- package/cjs/services/transaction-service/index.js +286 -26
- package/cjs/services/transaction-service/utils.js +5 -1
- package/cjs/types/account/info/keyring.js +12 -1
- package/cjs/types/fee/cardano.js +1 -0
- package/cjs/types/swap/index.js +7 -2
- package/cjs/utils/account/analyze.js +2 -1
- package/cjs/utils/account/common.js +29 -20
- package/cjs/utils/account/derive/info/solo.js +9 -4
- package/cjs/utils/account/derive/validate.js +36 -2
- package/cjs/utils/account/transform.js +38 -13
- package/cjs/utils/fee/transfer.js +87 -21
- package/cjs/utils/index.js +2 -2
- package/cjs/utils/staticData/index.js +7 -2
- package/constants/environment.d.ts +1 -0
- package/constants/environment.js +2 -1
- package/constants/index.d.ts +6 -1
- package/constants/index.js +14 -1
- package/constants/signing.js +6 -2
- package/core/logic-validation/recipientAddress.js +11 -3
- package/core/logic-validation/transfer.d.ts +1 -1
- package/core/logic-validation/transfer.js +33 -12
- package/core/substrate/xcm-parser.d.ts +1 -1
- package/core/types.d.ts +1 -0
- package/core/types.js +1 -0
- package/core/utils.d.ts +1 -0
- package/core/utils.js +13 -3
- package/defaults.d.ts +1 -1
- package/defaults.js +1 -1
- package/koni/api/dotsama/crowdloan.js +3 -3
- package/koni/api/nft/index.js +10 -16
- package/koni/api/nft/story_odyssey_nft/index.d.ts +1 -1
- package/koni/api/staking/index.js +4 -5
- package/koni/background/handlers/Extension.d.ts +9 -0
- package/koni/background/handlers/Extension.js +225 -69
- package/koni/background/handlers/State.d.ts +6 -2
- package/koni/background/handlers/State.js +18 -3
- package/koni/background/handlers/Tabs.js +1 -1
- package/package.json +76 -9
- package/packageInfo.js +1 -1
- package/services/balance-service/helpers/subscribe/cardano/consts.d.ts +1 -0
- package/services/balance-service/helpers/subscribe/cardano/consts.js +4 -0
- package/services/balance-service/helpers/subscribe/cardano/index.d.ts +2 -0
- package/services/balance-service/helpers/subscribe/cardano/index.js +57 -0
- package/services/balance-service/helpers/subscribe/cardano/types.d.ts +34 -0
- package/services/balance-service/helpers/subscribe/cardano/types.js +1 -0
- package/services/balance-service/helpers/subscribe/cardano/utils.d.ts +15 -0
- package/services/balance-service/helpers/subscribe/cardano/utils.js +62 -0
- package/services/balance-service/helpers/subscribe/index.d.ts +2 -2
- package/services/balance-service/helpers/subscribe/index.js +23 -9
- package/services/balance-service/helpers/subscribe/ton/utils.d.ts +1 -1
- package/services/balance-service/helpers/subscribe/ton/utils.js +1 -1
- package/services/balance-service/index.js +4 -2
- package/services/balance-service/transfer/cardano-transfer.d.ts +24 -0
- package/services/balance-service/transfer/cardano-transfer.js +114 -0
- package/services/balance-service/transfer/smart-contract.d.ts +4 -2
- package/services/balance-service/transfer/smart-contract.js +24 -3
- package/services/balance-service/transfer/token.d.ts +1 -1
- package/services/balance-service/transfer/token.js +2 -2
- package/services/chain-service/handler/CardanoApi.d.ts +38 -0
- package/services/chain-service/handler/CardanoApi.js +167 -0
- package/services/chain-service/handler/CardanoChainHandler.d.ts +17 -0
- package/services/chain-service/handler/CardanoChainHandler.js +75 -0
- package/services/chain-service/handler/TonApi.js +3 -6
- package/services/chain-service/handler/types.d.ts +1 -0
- package/services/chain-service/index.d.ts +4 -1
- package/services/chain-service/index.js +41 -8
- package/services/chain-service/types.d.ts +9 -1
- package/services/chain-service/utils/index.d.ts +4 -0
- package/services/chain-service/utils/index.js +32 -11
- package/services/chain-service/utils/patch.js +1 -1
- package/services/earning-service/handlers/liquid-staking/bifrost-manta.js +1 -1
- package/services/earning-service/handlers/liquid-staking/bifrost.js +1 -1
- package/services/earning-service/service.js +8 -14
- package/services/fee-service/interfaces.d.ts +25 -0
- package/services/fee-service/service.js +19 -8
- package/services/fee-service/utils/tokenPayFee.d.ts +8 -0
- package/services/fee-service/utils/tokenPayFee.js +141 -0
- package/services/history-service/index.js +6 -8
- package/services/inapp-notification-service/index.d.ts +3 -4
- package/services/inapp-notification-service/index.js +14 -6
- package/services/keyring-service/context/account-context.d.ts +6 -2
- package/services/keyring-service/context/account-context.js +17 -2
- package/services/keyring-service/context/handlers/Derive.d.ts +1 -1
- package/services/keyring-service/context/handlers/Derive.js +10 -8
- package/services/keyring-service/context/handlers/Migration.d.ts +17 -0
- package/services/keyring-service/context/handlers/Migration.js +258 -0
- package/services/keyring-service/context/handlers/Mnemonic.js +2 -2
- package/services/keyring-service/context/handlers/Secret.js +2 -2
- package/services/keyring-service/utils.d.ts +2 -0
- package/services/keyring-service/utils.js +11 -0
- package/services/request-service/handler/CardanoRequestHandler.d.ts +16 -0
- package/services/request-service/handler/CardanoRequestHandler.js +163 -0
- package/services/request-service/handler/EvmRequestHandler.js +1 -1
- package/services/request-service/handler/MetadataRequestHandler.d.ts +1 -1
- package/services/request-service/handler/MetadataRequestHandler.js +5 -13
- package/services/request-service/index.d.ts +7 -4
- package/services/request-service/index.js +21 -7
- package/services/setting-service/constants.d.ts +3 -0
- package/services/setting-service/constants.js +6 -0
- package/services/storage-service/DatabaseService.d.ts +1 -0
- package/services/storage-service/DatabaseService.js +3 -0
- package/services/storage-service/db-stores/InappNotification.d.ts +1 -0
- package/services/storage-service/db-stores/InappNotification.js +6 -0
- package/services/swap-service/handler/asset-hub/handler.d.ts +1 -4
- package/services/swap-service/handler/asset-hub/handler.js +2 -61
- package/services/swap-service/handler/base-handler.d.ts +1 -4
- package/services/swap-service/handler/chainflip-handler.d.ts +2 -9
- package/services/swap-service/handler/chainflip-handler.js +31 -280
- package/services/swap-service/handler/hydradx-handler.d.ts +1 -6
- package/services/swap-service/handler/hydradx-handler.js +13 -180
- package/services/swap-service/handler/simpleswap-handler.d.ts +1 -4
- package/services/swap-service/handler/simpleswap-handler.js +5 -226
- package/services/swap-service/handler/uniswap-handler.d.ts +41 -0
- package/services/swap-service/handler/uniswap-handler.js +323 -0
- package/services/swap-service/index.js +30 -22
- package/services/swap-service/utils.d.ts +1 -5
- package/services/swap-service/utils.js +7 -21
- package/services/transaction-service/helpers/index.d.ts +2 -0
- package/services/transaction-service/helpers/index.js +4 -0
- package/services/transaction-service/index.d.ts +8 -2
- package/services/transaction-service/index.js +273 -17
- package/services/transaction-service/types.d.ts +7 -0
- package/services/transaction-service/utils.js +7 -2
- package/types/account/info/keyring.d.ts +4 -1
- package/types/account/info/keyring.js +9 -0
- package/types/account/info/proxy.d.ts +2 -0
- package/types/balance/index.d.ts +4 -1
- package/types/fee/base.d.ts +1 -1
- package/types/fee/cardano.d.ts +18 -0
- package/types/fee/cardano.js +1 -0
- package/types/fee/option.d.ts +1 -1
- package/types/fee/subscription.d.ts +4 -3
- package/types/swap/index.d.ts +11 -3
- package/types/swap/index.js +7 -2
- package/utils/account/analyze.js +2 -1
- package/utils/account/common.d.ts +11 -6
- package/utils/account/common.js +28 -19
- package/utils/account/derive/info/solo.js +10 -5
- package/utils/account/derive/validate.d.ts +1 -0
- package/utils/account/derive/validate.js +34 -1
- package/utils/account/transform.d.ts +2 -1
- package/utils/account/transform.js +37 -13
- package/utils/fee/transfer.d.ts +3 -2
- package/utils/fee/transfer.js +90 -24
- package/utils/index.js +4 -4
- package/utils/staticData/index.d.ts +4 -1
- package/utils/staticData/index.js +5 -1
- package/utils/staticData/oldChainPrefix.json +1 -0
|
@@ -40,6 +40,7 @@ class TransactionService {
|
|
|
40
40
|
aliveProcessMap = new Map();
|
|
41
41
|
transactionSubject = new _rxjs.BehaviorSubject({});
|
|
42
42
|
aliveProcessSubject = new _rxjs.BehaviorSubject(this.aliveProcessMap);
|
|
43
|
+
cacheProcessInfo = {};
|
|
43
44
|
get transactions() {
|
|
44
45
|
return this.transactionSubject.getValue();
|
|
45
46
|
}
|
|
@@ -96,8 +97,6 @@ class TransactionService {
|
|
|
96
97
|
(0, _transfer.checkSupportForAction)(validationResponse, blockedActionsMap);
|
|
97
98
|
}
|
|
98
99
|
const transaction = transactionInput.transaction;
|
|
99
|
-
const nativeTokenInfo = this.state.chainService.getNativeTokenInfo(chain);
|
|
100
|
-
const tokenPayFeeInfo = transactionInput.nonNativeTokenPayFeeSlug ? this.chainService.getAssetBySlug(transactionInput.nonNativeTokenPayFeeSlug) : undefined;
|
|
101
100
|
|
|
102
101
|
// Check duplicated transaction
|
|
103
102
|
validationResponse.errors.push(...this.checkDuplicate(transactionInput));
|
|
@@ -110,16 +109,25 @@ class TransactionService {
|
|
|
110
109
|
const substrateApi = this.state.chainService.getSubstrateApi(chainInfo.slug);
|
|
111
110
|
const evmApi = this.state.chainService.getEvmApi(chainInfo.slug);
|
|
112
111
|
const tonApi = this.state.chainService.getTonApi(chainInfo.slug);
|
|
113
|
-
const
|
|
112
|
+
const cardanoApi = this.state.chainService.getCardanoApi(chainInfo.slug);
|
|
113
|
+
// todo: should split into isEvmTx && isNoEvmApi. Because other chains type also has no Evm Api. Same to all blockchain.
|
|
114
|
+
// todo: refactor check evmTransaction.
|
|
115
|
+
const isNoEvmApi = transaction && !(0, _helpers.isSubstrateTransaction)(transaction) && !(0, _helpers.isTonTransaction)(transaction) && !(0, _helpers.isCardanoTransaction)(transaction) && !evmApi;
|
|
114
116
|
const isNoTonApi = transaction && (0, _helpers.isTonTransaction)(transaction) && !tonApi;
|
|
115
|
-
|
|
117
|
+
const isNoCardanoApi = transaction && (0, _helpers.isCardanoTransaction)(transaction) && !cardanoApi;
|
|
118
|
+
if (isNoEvmApi || isNoTonApi || isNoCardanoApi) {
|
|
116
119
|
validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.CHAIN_DISCONNECTED, undefined));
|
|
117
120
|
}
|
|
118
121
|
|
|
119
122
|
// Estimate fee for transaction
|
|
120
123
|
const id = (0, _getId.getId)();
|
|
121
124
|
const feeInfo = await this.state.feeService.subscribeChainFee(id, chain, 'evm');
|
|
122
|
-
|
|
125
|
+
const nativeTokenInfo = this.state.chainService.getNativeTokenInfo(chain);
|
|
126
|
+
const tokenPayFeeSlug = transactionInput.tokenPayFeeSlug;
|
|
127
|
+
const isNonNativeTokenPayFee = tokenPayFeeSlug && !(0, _utils2._isNativeTokenBySlug)(tokenPayFeeSlug);
|
|
128
|
+
const nonNativeTokenPayFeeInfo = isNonNativeTokenPayFee ? this.chainService.getAssetBySlug(tokenPayFeeSlug) : undefined;
|
|
129
|
+
const priceMap = (await this.state.priceService.getPrice()).priceMap;
|
|
130
|
+
validationResponse.estimateFee = await (0, _transfer.estimateFeeForTransaction)(validationResponse, transaction, chainInfo, evmApi, substrateApi, priceMap, feeInfo, nativeTokenInfo, nonNativeTokenPayFeeInfo, transactionInput.isTransferLocalTokenAndPayThatTokenAsFee);
|
|
123
131
|
const chainInfoMap = this.state.chainService.getChainInfoMap();
|
|
124
132
|
|
|
125
133
|
// Check account signing transaction
|
|
@@ -176,6 +184,10 @@ class TransactionService {
|
|
|
176
184
|
}
|
|
177
185
|
};
|
|
178
186
|
}
|
|
187
|
+
getCacheInfo(processId, step) {
|
|
188
|
+
var _this$cacheProcessInf;
|
|
189
|
+
return ((_this$cacheProcessInf = this.cacheProcessInfo[processId]) === null || _this$cacheProcessInf === void 0 ? void 0 : _this$cacheProcessInf[step]) || '';
|
|
190
|
+
}
|
|
179
191
|
updateAliveProcess() {
|
|
180
192
|
this.aliveProcessSubject.next(this.aliveProcessMap);
|
|
181
193
|
}
|
|
@@ -270,9 +282,61 @@ class TransactionService {
|
|
|
270
282
|
'eventsHandler' in validatedTransaction && delete validatedTransaction.eventsHandler;
|
|
271
283
|
return validatedTransaction;
|
|
272
284
|
}
|
|
285
|
+
async handlePermitTransaction(transaction) {
|
|
286
|
+
var _transaction$step;
|
|
287
|
+
const transactionId = (0, _helpers.getTransactionId)(transaction.chainType, transaction.chain, true);
|
|
288
|
+
const validatedTransaction = {
|
|
289
|
+
...transaction,
|
|
290
|
+
id: transactionId,
|
|
291
|
+
extrinsicHash: '',
|
|
292
|
+
status: undefined,
|
|
293
|
+
errors: transaction.errors || [],
|
|
294
|
+
warnings: transaction.warnings || [],
|
|
295
|
+
processId: (_transaction$step = transaction.step) === null || _transaction$step === void 0 ? void 0 : _transaction$step.processId
|
|
296
|
+
};
|
|
297
|
+
const txInput = {
|
|
298
|
+
...transaction,
|
|
299
|
+
isInternal: true,
|
|
300
|
+
status: _KoniTypes.ExtrinsicStatus.QUEUED,
|
|
301
|
+
id: transactionId,
|
|
302
|
+
extrinsicHash: transactionId,
|
|
303
|
+
createdAt: new Date().getTime(),
|
|
304
|
+
updatedAt: new Date().getTime()
|
|
305
|
+
};
|
|
306
|
+
const _data = transaction.data;
|
|
307
|
+
const emitter = this.sendPermitTransaction(txInput);
|
|
308
|
+
await new Promise((resolve, reject) => {
|
|
309
|
+
emitter.on('success', data => {
|
|
310
|
+
validatedTransaction.id = data.id;
|
|
311
|
+
validatedTransaction.extrinsicHash = data.extrinsicHash;
|
|
312
|
+
this.cacheProcessInfo[_data.processId] = {
|
|
313
|
+
[_data.step]: data.extrinsicHash
|
|
314
|
+
};
|
|
315
|
+
resolve();
|
|
316
|
+
});
|
|
317
|
+
emitter.on('error', data => {
|
|
318
|
+
if (data.errors.length > 0) {
|
|
319
|
+
validatedTransaction.errors.push(...data.errors);
|
|
320
|
+
resolve();
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
emitter.on('timeout', data => {
|
|
324
|
+
if (transaction.errorOnTimeOut && data.errors.length > 0) {
|
|
325
|
+
validatedTransaction.errors.push(...data.errors);
|
|
326
|
+
resolve();
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
});
|
|
330
|
+
|
|
331
|
+
// @ts-ignore
|
|
332
|
+
'transaction' in validatedTransaction && delete validatedTransaction.transaction;
|
|
333
|
+
'additionalValidator' in validatedTransaction && delete validatedTransaction.additionalValidator;
|
|
334
|
+
'eventsHandler' in validatedTransaction && delete validatedTransaction.eventsHandler;
|
|
335
|
+
return validatedTransaction;
|
|
336
|
+
}
|
|
273
337
|
async sendTransaction(transaction) {
|
|
274
338
|
// Send Transaction
|
|
275
|
-
const emitter = await (transaction.chainType === 'substrate' ? this.signAndSendSubstrateTransaction(transaction) : transaction.chainType === 'evm' ? this.signAndSendEvmTransaction(transaction) : this.signAndSendTonTransaction(transaction));
|
|
339
|
+
const emitter = await (transaction.chainType === 'substrate' ? this.signAndSendSubstrateTransaction(transaction) : transaction.chainType === 'evm' ? this.signAndSendEvmTransaction(transaction) : transaction.chainType === 'cardano' ? this.signAndSendCardanoTransaction(transaction) : this.signAndSendTonTransaction(transaction));
|
|
276
340
|
const {
|
|
277
341
|
eventsHandler,
|
|
278
342
|
step
|
|
@@ -322,7 +386,12 @@ class TransactionService {
|
|
|
322
386
|
}
|
|
323
387
|
return false;
|
|
324
388
|
});
|
|
325
|
-
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* Now simple check, first step have step id = 1.
|
|
392
|
+
* Improve to fetch the process from db
|
|
393
|
+
* */
|
|
394
|
+
if (rejectError && step.stepId === 1) {
|
|
326
395
|
this.deleteProcess(step);
|
|
327
396
|
} else {
|
|
328
397
|
this.updateProcessStepStatus(step, {
|
|
@@ -348,6 +417,71 @@ class TransactionService {
|
|
|
348
417
|
eventsHandler === null || eventsHandler === void 0 ? void 0 : eventsHandler(emitter);
|
|
349
418
|
return emitter;
|
|
350
419
|
}
|
|
420
|
+
sendPermitTransaction(transaction) {
|
|
421
|
+
// Send Transaction
|
|
422
|
+
const emitter = this.signAndSendEvmPermitTransaction(transaction);
|
|
423
|
+
const {
|
|
424
|
+
eventsHandler,
|
|
425
|
+
step
|
|
426
|
+
} = transaction;
|
|
427
|
+
emitter.on('send', data => {
|
|
428
|
+
if (step) {
|
|
429
|
+
this.updateProcessStepStatus(step, {
|
|
430
|
+
transactionId: transaction.id,
|
|
431
|
+
status: _types.StepStatus.SUBMITTING,
|
|
432
|
+
chain: transaction.chain
|
|
433
|
+
});
|
|
434
|
+
}
|
|
435
|
+
});
|
|
436
|
+
emitter.on('extrinsicHash', data => {
|
|
437
|
+
if (step) {
|
|
438
|
+
this.updateProcessStepStatus(step, {
|
|
439
|
+
extrinsicHash: data.extrinsicHash,
|
|
440
|
+
status: _types.StepStatus.PROCESSING
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
});
|
|
444
|
+
emitter.on('success', data => {
|
|
445
|
+
if (step) {
|
|
446
|
+
this.updateProcessStepStatus(step, {
|
|
447
|
+
status: _types.StepStatus.COMPLETE
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
});
|
|
451
|
+
emitter.on('error', data => {
|
|
452
|
+
// this.handlePostProcessing(data.id); // might enable this later
|
|
453
|
+
this.onFailed({
|
|
454
|
+
...data,
|
|
455
|
+
errors: [...data.errors, new _TransactionError.TransactionError(_types.BasicTxErrorType.INTERNAL_ERROR)]
|
|
456
|
+
});
|
|
457
|
+
if (step) {
|
|
458
|
+
const rejectError = data.errors.find(error => {
|
|
459
|
+
// TODO: REFACTOR ERROR CODE
|
|
460
|
+
if ([_types.BasicTxErrorType.UNABLE_TO_SIGN, _types.BasicTxErrorType.USER_REJECT_REQUEST].includes(error.errorType)) {
|
|
461
|
+
return true;
|
|
462
|
+
}
|
|
463
|
+
return false;
|
|
464
|
+
});
|
|
465
|
+
|
|
466
|
+
/**
|
|
467
|
+
* Now simple check, first step have step id = 1.
|
|
468
|
+
* Improve to fetch the process from db
|
|
469
|
+
* */
|
|
470
|
+
if (rejectError && step.stepId === 1) {
|
|
471
|
+
this.deleteProcess(step);
|
|
472
|
+
} else {
|
|
473
|
+
this.updateProcessStepStatus(step, {
|
|
474
|
+
status: _types.StepStatus.FAILED
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
});
|
|
479
|
+
|
|
480
|
+
// Todo: handle any event with transaction.eventsHandler
|
|
481
|
+
|
|
482
|
+
eventsHandler === null || eventsHandler === void 0 ? void 0 : eventsHandler(emitter);
|
|
483
|
+
return emitter;
|
|
484
|
+
}
|
|
351
485
|
removeTransaction(id) {
|
|
352
486
|
if (this.transactions[id]) {
|
|
353
487
|
delete this.transactions[id];
|
|
@@ -371,7 +505,7 @@ class TransactionService {
|
|
|
371
505
|
return (0, _utils3.getExplorerLink)(chainInfo, transaction.extrinsicHash, 'tx');
|
|
372
506
|
}
|
|
373
507
|
transactionToHistories(id, startBlock, nonce, eventLogs) {
|
|
374
|
-
var _transaction$
|
|
508
|
+
var _transaction$step2;
|
|
375
509
|
const transaction = this.getTransaction(id);
|
|
376
510
|
const extrinsicType = transaction.extrinsicType;
|
|
377
511
|
const chainInfo = this.state.chainService.getChainInfoByKey(transaction.chain);
|
|
@@ -396,7 +530,7 @@ class TransactionService {
|
|
|
396
530
|
// Will be added in next step
|
|
397
531
|
nonce: nonce !== null && nonce !== void 0 ? nonce : 0,
|
|
398
532
|
startBlock: startBlock || 0,
|
|
399
|
-
processId: (_transaction$
|
|
533
|
+
processId: (_transaction$step2 = transaction.step) === null || _transaction$step2 === void 0 ? void 0 : _transaction$step2.processId
|
|
400
534
|
};
|
|
401
535
|
const nativeAsset = (0, _utils2._getChainNativeTokenBasicInfo)(chainInfo);
|
|
402
536
|
const baseNativeAmount = {
|
|
@@ -1172,21 +1306,78 @@ class TransactionService {
|
|
|
1172
1306
|
}
|
|
1173
1307
|
return emitter;
|
|
1174
1308
|
}
|
|
1175
|
-
|
|
1309
|
+
signAndSendEvmPermitTransaction(_ref10) {
|
|
1310
|
+
let {
|
|
1311
|
+
address,
|
|
1312
|
+
id,
|
|
1313
|
+
isPassConfirmation,
|
|
1314
|
+
step,
|
|
1315
|
+
transaction,
|
|
1316
|
+
url
|
|
1317
|
+
} = _ref10;
|
|
1318
|
+
// Allow sign transaction
|
|
1319
|
+
const canSign = true;
|
|
1320
|
+
const emitter = new _eventemitter.default();
|
|
1321
|
+
const eventData = {
|
|
1322
|
+
id,
|
|
1323
|
+
errors: [],
|
|
1324
|
+
warnings: [],
|
|
1325
|
+
extrinsicHash: id,
|
|
1326
|
+
processId: step === null || step === void 0 ? void 0 : step.processId
|
|
1327
|
+
};
|
|
1328
|
+
const evmSignaturePayload = {
|
|
1329
|
+
id: id,
|
|
1330
|
+
type: 'eth_signTypedData_v4',
|
|
1331
|
+
payload: transaction,
|
|
1332
|
+
address: address,
|
|
1333
|
+
hashPayload: '',
|
|
1334
|
+
canSign: canSign,
|
|
1335
|
+
processId: step === null || step === void 0 ? void 0 : step.processId
|
|
1336
|
+
};
|
|
1337
|
+
this.state.requestService.addConfirmation(id, url || _constants2.EXTENSION_REQUEST_URL, 'evmSignatureRequest', evmSignaturePayload, {
|
|
1338
|
+
isPassConfirmation
|
|
1339
|
+
}).then(_ref11 => {
|
|
1340
|
+
let {
|
|
1341
|
+
isApproved,
|
|
1342
|
+
payload: signature
|
|
1343
|
+
} = _ref11;
|
|
1344
|
+
if (isApproved) {
|
|
1345
|
+
// Emit signed event
|
|
1346
|
+
emitter.emit('signed', eventData);
|
|
1347
|
+
emitter.emit('send', eventData); // This event is needed after sending transaction with queue
|
|
1348
|
+
|
|
1349
|
+
if (!signature) {
|
|
1350
|
+
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.UNAUTHORIZED, (0, _i18next.t)('Failed to sign'));
|
|
1351
|
+
}
|
|
1352
|
+
eventData.extrinsicHash = signature;
|
|
1353
|
+
emitter.emit('extrinsicHash', eventData);
|
|
1354
|
+
emitter.emit('success', eventData);
|
|
1355
|
+
} else {
|
|
1356
|
+
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.USER_REJECT_REQUEST));
|
|
1357
|
+
emitter.emit('error', eventData);
|
|
1358
|
+
}
|
|
1359
|
+
}).catch(e => {
|
|
1360
|
+
this.removeTransaction(id);
|
|
1361
|
+
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNABLE_TO_SIGN, (0, _i18next.t)(e.message)));
|
|
1362
|
+
emitter.emit('error', eventData);
|
|
1363
|
+
});
|
|
1364
|
+
return emitter;
|
|
1365
|
+
}
|
|
1366
|
+
signAndSendSubstrateTransaction(_ref12) {
|
|
1176
1367
|
var _this$state$chainServ;
|
|
1177
1368
|
let {
|
|
1178
1369
|
address,
|
|
1179
1370
|
chain,
|
|
1180
1371
|
feeCustom,
|
|
1181
1372
|
id,
|
|
1182
|
-
nonNativeTokenPayFeeSlug,
|
|
1183
1373
|
signAfterCreate,
|
|
1184
1374
|
step,
|
|
1375
|
+
tokenPayFeeSlug,
|
|
1185
1376
|
transaction,
|
|
1186
1377
|
url
|
|
1187
|
-
} =
|
|
1378
|
+
} = _ref12;
|
|
1188
1379
|
const tip = (feeCustom === null || feeCustom === void 0 ? void 0 : feeCustom.tip) || '0';
|
|
1189
|
-
const feeAssetId =
|
|
1380
|
+
const feeAssetId = tokenPayFeeSlug && !(0, _utils2._isNativeTokenBySlug)(tokenPayFeeSlug) && _constants._SUPPORT_TOKEN_PAY_FEE_GROUP.assetHub.includes(chain) ? (_this$state$chainServ = this.state.chainService.getAssetBySlug(tokenPayFeeSlug).metadata) === null || _this$state$chainServ === void 0 ? void 0 : _this$state$chainServ.multilocation : undefined;
|
|
1190
1381
|
const emitter = new _eventemitter.default();
|
|
1191
1382
|
const eventData = {
|
|
1192
1383
|
id,
|
|
@@ -1255,20 +1446,20 @@ class TransactionService {
|
|
|
1255
1446
|
eventData.extrinsicHash = txState.txHash.toHex();
|
|
1256
1447
|
eventData.eventLogs = txState.events;
|
|
1257
1448
|
// TODO: push block hash and block number into eventData
|
|
1258
|
-
txState.events.filter(
|
|
1449
|
+
txState.events.filter(_ref13 => {
|
|
1259
1450
|
let {
|
|
1260
1451
|
event: {
|
|
1261
1452
|
section
|
|
1262
1453
|
}
|
|
1263
|
-
} =
|
|
1454
|
+
} = _ref13;
|
|
1264
1455
|
return section === 'system';
|
|
1265
|
-
}).forEach(
|
|
1456
|
+
}).forEach(_ref14 => {
|
|
1266
1457
|
let {
|
|
1267
1458
|
event: {
|
|
1268
1459
|
data: [error],
|
|
1269
1460
|
method
|
|
1270
1461
|
}
|
|
1271
|
-
} =
|
|
1462
|
+
} = _ref14;
|
|
1272
1463
|
if (method === 'ExtrinsicFailed') {
|
|
1273
1464
|
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.SEND_TRANSACTION_FAILED, error.toString()));
|
|
1274
1465
|
emitter.emit('error', eventData);
|
|
@@ -1288,7 +1479,7 @@ class TransactionService {
|
|
|
1288
1479
|
});
|
|
1289
1480
|
return emitter;
|
|
1290
1481
|
}
|
|
1291
|
-
signAndSendTonTransaction(
|
|
1482
|
+
signAndSendTonTransaction(_ref15) {
|
|
1292
1483
|
let {
|
|
1293
1484
|
address,
|
|
1294
1485
|
chain,
|
|
@@ -1297,7 +1488,7 @@ class TransactionService {
|
|
|
1297
1488
|
step,
|
|
1298
1489
|
transaction,
|
|
1299
1490
|
url
|
|
1300
|
-
} =
|
|
1491
|
+
} = _ref15;
|
|
1301
1492
|
const walletContract = _uiKeyring.default.getPair(address).ton.currentContract;
|
|
1302
1493
|
const emitter = new _eventemitter.default();
|
|
1303
1494
|
const eventData = {
|
|
@@ -1314,11 +1505,11 @@ class TransactionService {
|
|
|
1314
1505
|
...payload,
|
|
1315
1506
|
messagePayload: (0, _utils.cellToBase64Str)(message),
|
|
1316
1507
|
messages: []
|
|
1317
|
-
}, {}).then(
|
|
1508
|
+
}, {}).then(_ref16 => {
|
|
1318
1509
|
let {
|
|
1319
1510
|
isApproved,
|
|
1320
1511
|
payload
|
|
1321
|
-
} =
|
|
1512
|
+
} = _ref16;
|
|
1322
1513
|
if (!isApproved) {
|
|
1323
1514
|
this.removeTransaction(id);
|
|
1324
1515
|
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.USER_REJECT_REQUEST));
|
|
@@ -1336,7 +1527,7 @@ class TransactionService {
|
|
|
1336
1527
|
});
|
|
1337
1528
|
});
|
|
1338
1529
|
};
|
|
1339
|
-
const tonTransactionConfig = transaction;
|
|
1530
|
+
const tonTransactionConfig = transaction; // todo: is this same as payload?
|
|
1340
1531
|
const seqno = tonTransactionConfig.seqno;
|
|
1341
1532
|
const messages = tonTransactionConfig.messages;
|
|
1342
1533
|
const transferObjectPromise = (0, _utils.getTransferCellPromise)(walletContract, signer, payload, seqno, messages);
|
|
@@ -1353,8 +1544,8 @@ class TransactionService {
|
|
|
1353
1544
|
if (!externalMsgHash) {
|
|
1354
1545
|
return;
|
|
1355
1546
|
}
|
|
1356
|
-
tonApi.getStatusByExtMsgHash(externalMsgHash, extrinsicType).then(
|
|
1357
|
-
let [status, hex] =
|
|
1547
|
+
tonApi.getStatusByExtMsgHash(externalMsgHash, extrinsicType).then(_ref17 => {
|
|
1548
|
+
let [status, hex] = _ref17;
|
|
1358
1549
|
if (status && hex) {
|
|
1359
1550
|
eventData.extrinsicHash = hex;
|
|
1360
1551
|
emitter.emit('extrinsicHash', eventData);
|
|
@@ -1383,6 +1574,75 @@ class TransactionService {
|
|
|
1383
1574
|
});
|
|
1384
1575
|
return emitter;
|
|
1385
1576
|
}
|
|
1577
|
+
signAndSendCardanoTransaction(_ref18) {
|
|
1578
|
+
let {
|
|
1579
|
+
chain,
|
|
1580
|
+
id,
|
|
1581
|
+
transaction,
|
|
1582
|
+
url
|
|
1583
|
+
} = _ref18;
|
|
1584
|
+
const emitter = new _eventemitter.default();
|
|
1585
|
+
const eventData = {
|
|
1586
|
+
id,
|
|
1587
|
+
errors: [],
|
|
1588
|
+
warnings: [],
|
|
1589
|
+
extrinsicHash: id
|
|
1590
|
+
};
|
|
1591
|
+
const transactionConfig = transaction;
|
|
1592
|
+
const cardanoApi = this.state.chainService.getCardanoApi(chain);
|
|
1593
|
+
this.state.requestService.addConfirmationCardano(id, url || _constants2.EXTENSION_REQUEST_URL, 'cardanoSendTransactionRequest', transactionConfig, {}).then(_ref19 => {
|
|
1594
|
+
let {
|
|
1595
|
+
isApproved,
|
|
1596
|
+
payload
|
|
1597
|
+
} = _ref19;
|
|
1598
|
+
if (!isApproved) {
|
|
1599
|
+
this.removeTransaction(id);
|
|
1600
|
+
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.USER_REJECT_REQUEST));
|
|
1601
|
+
emitter.emit('error', eventData);
|
|
1602
|
+
} else {
|
|
1603
|
+
if (!payload) {
|
|
1604
|
+
throw new Error('Failed to sign');
|
|
1605
|
+
}
|
|
1606
|
+
|
|
1607
|
+
// Emit signed event
|
|
1608
|
+
emitter.emit('signed', eventData);
|
|
1609
|
+
|
|
1610
|
+
// Send transaction
|
|
1611
|
+
this.handleTransactionTimeout(emitter, eventData);
|
|
1612
|
+
emitter.emit('send', eventData);
|
|
1613
|
+
|
|
1614
|
+
// send qua api
|
|
1615
|
+
cardanoApi.sendCardanoTxReturnHash(payload).then(txHash => {
|
|
1616
|
+
if (!txHash) {
|
|
1617
|
+
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.SEND_TRANSACTION_FAILED));
|
|
1618
|
+
emitter.emit('error', eventData);
|
|
1619
|
+
}
|
|
1620
|
+
eventData.extrinsicHash = txHash;
|
|
1621
|
+
emitter.emit('extrinsicHash', eventData);
|
|
1622
|
+
|
|
1623
|
+
// todo: wait transaction by fetch txHash by API
|
|
1624
|
+
cardanoApi.getStatusByTxHash(txHash, transactionConfig.cardanoTtlOffset).then(status => {
|
|
1625
|
+
if (!status) {
|
|
1626
|
+
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.SEND_TRANSACTION_FAILED));
|
|
1627
|
+
emitter.emit('error', eventData);
|
|
1628
|
+
}
|
|
1629
|
+
emitter.emit('success', eventData);
|
|
1630
|
+
}).catch(e => {
|
|
1631
|
+
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.SEND_TRANSACTION_FAILED, e.message));
|
|
1632
|
+
emitter.emit('error', eventData);
|
|
1633
|
+
});
|
|
1634
|
+
}).catch(e => {
|
|
1635
|
+
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.SEND_TRANSACTION_FAILED, e.message));
|
|
1636
|
+
emitter.emit('error', eventData);
|
|
1637
|
+
});
|
|
1638
|
+
}
|
|
1639
|
+
}).catch(e => {
|
|
1640
|
+
this.removeTransaction(id);
|
|
1641
|
+
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNABLE_TO_SIGN, (0, _i18next.t)(e.message)));
|
|
1642
|
+
emitter.emit('error', eventData);
|
|
1643
|
+
});
|
|
1644
|
+
return emitter;
|
|
1645
|
+
}
|
|
1386
1646
|
handleTransactionTimeout(emitter, eventData) {
|
|
1387
1647
|
const timeout = setTimeout(() => {
|
|
1388
1648
|
const transaction = this.getTransaction(eventData.id);
|
|
@@ -1525,9 +1785,9 @@ class TransactionService {
|
|
|
1525
1785
|
}
|
|
1526
1786
|
}
|
|
1527
1787
|
async createProcessNotification(transactionId) {
|
|
1528
|
-
var _transaction$
|
|
1788
|
+
var _transaction$step3;
|
|
1529
1789
|
const transaction = this.getTransaction(transactionId);
|
|
1530
|
-
if (transaction && (_transaction$
|
|
1790
|
+
if (transaction && (_transaction$step3 = transaction.step) !== null && _transaction$step3 !== void 0 && _transaction$step3.processId) {
|
|
1531
1791
|
const process = this.aliveProcessMap.get(transaction.step.processId);
|
|
1532
1792
|
if (process) {
|
|
1533
1793
|
await this.state.inappNotificationService.createProcessNotification(process);
|
|
@@ -9,6 +9,7 @@ exports.getSimpleSwapExplorerLink = getSimpleSwapExplorerLink;
|
|
|
9
9
|
exports.parseTransactionData = parseTransactionData;
|
|
10
10
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
11
11
|
var _utils2 = require("@subwallet/extension-base/services/swap-service/utils");
|
|
12
|
+
var _util = require("@polkadot/util");
|
|
12
13
|
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
13
14
|
// SPDX-License-Identifier: Apache-2.0
|
|
14
15
|
|
|
@@ -55,6 +56,9 @@ function getBlockExplorerTxRoute(chainInfo) {
|
|
|
55
56
|
if ((0, _utils._isPureEvmChain)(chainInfo)) {
|
|
56
57
|
return 'tx';
|
|
57
58
|
}
|
|
59
|
+
if ((0, _utils._isPureCardanoChain)(chainInfo)) {
|
|
60
|
+
return 'transaction';
|
|
61
|
+
}
|
|
58
62
|
if (['aventus', 'deeper_network'].includes(chainInfo.slug)) {
|
|
59
63
|
return 'transaction';
|
|
60
64
|
}
|
|
@@ -69,7 +73,7 @@ function getExplorerLink(chainInfo, value, type) {
|
|
|
69
73
|
const route = getBlockExplorerAccountRoute(explorerLink);
|
|
70
74
|
return `${explorerLink}${explorerLink.endsWith('/') ? '' : '/'}${route}/${value}`;
|
|
71
75
|
}
|
|
72
|
-
if (explorerLink &&
|
|
76
|
+
if (explorerLink && (0, _util.isHex)((0, _util.hexAddPrefix)(value))) {
|
|
73
77
|
if (chainInfo.slug === 'bittensor') {
|
|
74
78
|
return undefined;
|
|
75
79
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.AccountSignMode = exports.AccountChainType = exports.AccountActions = void 0;
|
|
6
|
+
exports.SUPPORTED_ACCOUNT_CHAIN_TYPES = exports.AccountSignMode = exports.AccountChainType = exports.AccountActions = exports.ACCOUNT_CHAIN_TYPE_ORDINAL_MAP = void 0;
|
|
7
7
|
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
8
8
|
// SPDX-License-Identifier: Apache-2.0
|
|
9
9
|
/**
|
|
@@ -67,7 +67,18 @@ exports.AccountChainType = AccountChainType;
|
|
|
67
67
|
AccountChainType["ETHEREUM"] = "ethereum";
|
|
68
68
|
AccountChainType["BITCOIN"] = "bitcoin";
|
|
69
69
|
AccountChainType["TON"] = "ton";
|
|
70
|
+
AccountChainType["CARDANO"] = "cardano";
|
|
70
71
|
})(AccountChainType || (exports.AccountChainType = AccountChainType = {}));
|
|
72
|
+
const ACCOUNT_CHAIN_TYPE_ORDINAL_MAP = {
|
|
73
|
+
[AccountChainType.SUBSTRATE]: 1,
|
|
74
|
+
[AccountChainType.ETHEREUM]: 2,
|
|
75
|
+
[AccountChainType.TON]: 3,
|
|
76
|
+
[AccountChainType.CARDANO]: 4,
|
|
77
|
+
[AccountChainType.BITCOIN]: 5
|
|
78
|
+
};
|
|
79
|
+
exports.ACCOUNT_CHAIN_TYPE_ORDINAL_MAP = ACCOUNT_CHAIN_TYPE_ORDINAL_MAP;
|
|
80
|
+
const SUPPORTED_ACCOUNT_CHAIN_TYPES = ['substrate', 'ethereum', 'ton', 'cardano'];
|
|
81
|
+
exports.SUPPORTED_ACCOUNT_CHAIN_TYPES = SUPPORTED_ACCOUNT_CHAIN_TYPES;
|
|
71
82
|
let AccountActions;
|
|
72
83
|
/**
|
|
73
84
|
* Represents the actions associated with an account.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
package/cjs/types/swap/index.js
CHANGED
|
@@ -27,6 +27,7 @@ let SwapStepType;
|
|
|
27
27
|
exports.SwapStepType = SwapStepType;
|
|
28
28
|
(function (SwapStepType) {
|
|
29
29
|
SwapStepType["SWAP"] = "SWAP";
|
|
30
|
+
SwapStepType["PERMIT"] = "PERMIT";
|
|
30
31
|
})(SwapStepType || (exports.SwapStepType = SwapStepType = {}));
|
|
31
32
|
let SwapProviderId;
|
|
32
33
|
exports.SwapProviderId = SwapProviderId;
|
|
@@ -40,10 +41,14 @@ exports.SwapProviderId = SwapProviderId;
|
|
|
40
41
|
SwapProviderId["ROCOCO_ASSET_HUB"] = "ROCOCO_ASSET_HUB";
|
|
41
42
|
SwapProviderId["WESTEND_ASSET_HUB"] = "WESTEND_ASSET_HUB";
|
|
42
43
|
SwapProviderId["SIMPLE_SWAP"] = "SIMPLE_SWAP";
|
|
44
|
+
SwapProviderId["UNISWAP"] = "UNISWAP";
|
|
43
45
|
})(SwapProviderId || (exports.SwapProviderId = SwapProviderId = {}));
|
|
44
|
-
const _SUPPORTED_SWAP_PROVIDERS = [SwapProviderId.CHAIN_FLIP_TESTNET, SwapProviderId.CHAIN_FLIP_MAINNET, SwapProviderId.HYDRADX_MAINNET,
|
|
46
|
+
const _SUPPORTED_SWAP_PROVIDERS = [SwapProviderId.CHAIN_FLIP_TESTNET, SwapProviderId.CHAIN_FLIP_MAINNET, SwapProviderId.HYDRADX_MAINNET,
|
|
47
|
+
// SwapProviderId.HYDRADX_TESTNET,
|
|
48
|
+
SwapProviderId.POLKADOT_ASSET_HUB, SwapProviderId.KUSAMA_ASSET_HUB,
|
|
49
|
+
// SwapProviderId.ROCOCO_ASSET_HUB,
|
|
45
50
|
// SwapProviderId.WESTEND_ASSET_HUB,
|
|
46
|
-
SwapProviderId.SIMPLE_SWAP];
|
|
51
|
+
SwapProviderId.SIMPLE_SWAP, SwapProviderId.UNISWAP];
|
|
47
52
|
exports._SUPPORTED_SWAP_PROVIDERS = _SUPPORTED_SWAP_PROVIDERS;
|
|
48
53
|
// process handling
|
|
49
54
|
let SwapFeeType;
|
|
@@ -21,7 +21,8 @@ const isStrValidWithAddress = (str, account, chainInfo) => {
|
|
|
21
21
|
} else if (account.address.toLowerCase().includes(str) || reformated.toLowerCase().includes(str)) {
|
|
22
22
|
return 'valid';
|
|
23
23
|
}
|
|
24
|
-
} else if (account.chainType === _types.AccountChainType.TON) {
|
|
24
|
+
} else if (account.chainType === _types.AccountChainType.TON || account.chainType === _types.AccountChainType.CARDANO) {
|
|
25
|
+
// todo: recheck for Cardano
|
|
25
26
|
const isTestnet = chainInfo.isTestnet;
|
|
26
27
|
const reformated = (0, _common.reformatAddress)(account.address, isTestnet ? 0 : 1);
|
|
27
28
|
if (account.address.toLowerCase() === str || reformated.toLowerCase() === str) {
|
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports._reformatAddressWithChain = void 0;
|
|
7
|
-
exports.
|
|
8
|
-
exports.
|
|
6
|
+
exports.getAccountChainTypeForAddress = exports._reformatAddressWithChain = void 0;
|
|
7
|
+
exports.getAddressesByChainType = getAddressesByChainType;
|
|
8
|
+
exports.getAddressesByChainTypeMap = getAddressesByChainTypeMap;
|
|
9
9
|
exports.isAccountAll = isAccountAll;
|
|
10
10
|
exports.modifyAccountName = void 0;
|
|
11
11
|
exports.quickFormatAddressToCompare = quickFormatAddressToCompare;
|
|
12
12
|
exports.reformatAddress = reformatAddress;
|
|
13
|
+
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
13
14
|
var _constants = require("@subwallet/extension-base/constants");
|
|
14
15
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
15
16
|
var _types = require("@subwallet/extension-base/types");
|
|
@@ -50,10 +51,11 @@ function reformatAddress(address) {
|
|
|
50
51
|
}
|
|
51
52
|
}
|
|
52
53
|
const _reformatAddressWithChain = (address, chainInfo) => {
|
|
54
|
+
// todo: check for cardano
|
|
53
55
|
const chainType = (0, _utils._chainInfoToChainType)(chainInfo);
|
|
54
56
|
if (chainType === _types.AccountChainType.SUBSTRATE) {
|
|
55
57
|
return reformatAddress(address, (0, _utils._getChainSubstrateAddressPrefix)(chainInfo));
|
|
56
|
-
} else if (chainType === _types.AccountChainType.TON) {
|
|
58
|
+
} else if (chainType === _types.AccountChainType.TON || chainType === _types.AccountChainType.CARDANO) {
|
|
57
59
|
const isTestnet = chainInfo.isTestnet;
|
|
58
60
|
return reformatAddress(address, isTestnet ? 0 : 1);
|
|
59
61
|
} else {
|
|
@@ -63,31 +65,38 @@ const _reformatAddressWithChain = (address, chainInfo) => {
|
|
|
63
65
|
exports._reformatAddressWithChain = _reformatAddressWithChain;
|
|
64
66
|
const getAccountChainTypeForAddress = address => {
|
|
65
67
|
const type = (0, _keyring.getKeypairTypeByAddress)(address);
|
|
66
|
-
return (0, _utils2.
|
|
68
|
+
return (0, _utils2.getAccountChainTypeFromKeypairType)(type);
|
|
67
69
|
};
|
|
68
70
|
exports.getAccountChainTypeForAddress = getAccountChainTypeForAddress;
|
|
69
|
-
function
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
function getAddressesByChainType(addresses, chainTypes) {
|
|
72
|
+
const addressByChainTypeMap = getAddressesByChainTypeMap(addresses);
|
|
73
|
+
return chainTypes.map(chainType => {
|
|
74
|
+
return addressByChainTypeMap[chainType];
|
|
75
|
+
}).flat(); // todo: recheck
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function getAddressesByChainTypeMap(addresses) {
|
|
79
|
+
const addressByChainType = {
|
|
80
|
+
substrate: [],
|
|
81
|
+
evm: [],
|
|
82
|
+
bitcoin: [],
|
|
83
|
+
ton: [],
|
|
84
|
+
cardano: []
|
|
85
|
+
};
|
|
74
86
|
addresses.forEach(address => {
|
|
75
87
|
if ((0, _utilCrypto.isEthereumAddress)(address)) {
|
|
76
|
-
evm.push(address);
|
|
88
|
+
addressByChainType.evm.push(address);
|
|
77
89
|
} else if ((0, _keyring.isTonAddress)(address)) {
|
|
78
|
-
ton.push(address);
|
|
90
|
+
addressByChainType.ton.push(address);
|
|
79
91
|
} else if ((0, _keyring.isBitcoinAddress)(address)) {
|
|
80
|
-
bitcoin.push(address);
|
|
92
|
+
addressByChainType.bitcoin.push(address);
|
|
93
|
+
} else if ((0, _keyring.isCardanoAddress)(address)) {
|
|
94
|
+
addressByChainType.cardano.push(address);
|
|
81
95
|
} else {
|
|
82
|
-
substrate.push(address);
|
|
96
|
+
addressByChainType.substrate.push(address);
|
|
83
97
|
}
|
|
84
98
|
});
|
|
85
|
-
return
|
|
86
|
-
bitcoin,
|
|
87
|
-
evm,
|
|
88
|
-
substrate,
|
|
89
|
-
ton
|
|
90
|
-
};
|
|
99
|
+
return addressByChainType;
|
|
91
100
|
}
|
|
92
101
|
function quickFormatAddressToCompare(address) {
|
|
93
102
|
if (!(0, _keyring.isAddress)(address)) {
|