@subwallet/extension-base 1.1.44-0 → 1.1.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/cjs/constants/index.js +4 -1
- package/cjs/koni/background/handlers/Extension.js +4 -4
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/chain-service/constants.js +5 -3
- package/cjs/services/chain-service/index.js +5 -5
- package/cjs/services/earning-service/constants/chains.js +1 -1
- package/cjs/services/earning-service/service.js +1 -1
- package/cjs/services/migration-service/scripts/MigrateTransactionHistoryBySymbol.js +5 -1
- package/cjs/services/migration-service/scripts/databases/AutoEnableSomeTokens.js +30 -0
- package/cjs/services/migration-service/scripts/databases/MigrateAssetSetting.js +2 -1
- package/cjs/services/migration-service/scripts/index.js +3 -1
- package/cjs/services/request-service/handler/AuthRequestHandler.js +59 -21
- package/cjs/services/transaction-service/utils.js +3 -0
- package/constants/index.d.ts +1 -0
- package/constants/index.js +1 -0
- package/koni/background/handlers/Extension.js +6 -6
- package/package.json +11 -6
- package/packageInfo.js +1 -1
- package/services/chain-service/constants.js +5 -3
- package/services/chain-service/index.js +5 -5
- package/services/earning-service/constants/chains.js +1 -1
- package/services/earning-service/service.js +1 -1
- package/services/migration-service/scripts/MigrateTransactionHistoryBySymbol.js +5 -1
- package/services/migration-service/scripts/databases/AutoEnableSomeTokens.d.ts +4 -0
- package/services/migration-service/scripts/databases/AutoEnableSomeTokens.js +22 -0
- package/services/migration-service/scripts/databases/MigrateAssetSetting.js +2 -1
- package/services/migration-service/scripts/index.js +3 -1
- package/services/request-service/handler/AuthRequestHandler.d.ts +1 -0
- package/services/request-service/handler/AuthRequestHandler.js +54 -20
- package/services/transaction-service/utils.js +3 -0
package/cjs/constants/index.js
CHANGED
|
@@ -29,12 +29,13 @@ var _exportNames = {
|
|
|
29
29
|
IGNORE_GET_SUBSTRATE_FEATURES_LIST: true,
|
|
30
30
|
IGNORE_QR_SIGNER: true,
|
|
31
31
|
XCM_MIN_AMOUNT_RATIO: true,
|
|
32
|
+
XCM_FEE_RATIO: true,
|
|
32
33
|
GAS_PRICE_RATIO: true,
|
|
33
34
|
NETWORK_MULTI_GAS_FEE: true,
|
|
34
35
|
ORDINAL_COLLECTION: true,
|
|
35
36
|
ORDINAL_METHODS: true
|
|
36
37
|
};
|
|
37
|
-
exports.XCM_MIN_AMOUNT_RATIO = exports.SUB_TOKEN_REFRESH_BALANCE_INTERVAL = exports.ORDINAL_METHODS = exports.ORDINAL_COLLECTION = exports.NETWORK_MULTI_GAS_FEE = exports.MANTA_PAY_BALANCE_INTERVAL = exports.IGNORE_QR_SIGNER = exports.IGNORE_GET_SUBSTRATE_FEATURES_LIST = exports.GAS_PRICE_RATIO = exports.CRON_SYNC_MANTA_PAY = exports.CRON_REFRESH_STAKING_REWARD_INTERVAL = exports.CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL = exports.CRON_REFRESH_PRICE_INTERVAL = exports.CRON_REFRESH_NFT_INTERVAL = exports.CRON_REFRESH_HISTORY_INTERVAL = exports.CRON_REFRESH_EARNING_REWARD_HISTORY_INTERVAL = exports.CRON_REFRESH_CHAIN_STAKING_METADATA = exports.CRON_REFRESH_CHAIN_NOMINATOR_METADATA = exports.CRON_RECOVER_HISTORY_INTERVAL = exports.CRON_GET_API_MAP_STATUS = exports.CRON_AUTO_RECOVER_WEB3_INTERVAL = exports.CRON_AUTO_RECOVER_DOTSAMA_INTERVAL = exports.BASE_SECOND_INTERVAL = exports.BASE_MINUTE_INTERVAL = exports.ASTAR_REFRESH_BALANCE_INTERVAL = exports.ALL_NETWORK_KEY = exports.ALL_GENESIS_HASH = exports.ALL_ACCOUNT_KEY = exports.ACALA_REFRESH_CROWDLOAN_INTERVAL = void 0;
|
|
38
|
+
exports.XCM_MIN_AMOUNT_RATIO = exports.XCM_FEE_RATIO = exports.SUB_TOKEN_REFRESH_BALANCE_INTERVAL = exports.ORDINAL_METHODS = exports.ORDINAL_COLLECTION = exports.NETWORK_MULTI_GAS_FEE = exports.MANTA_PAY_BALANCE_INTERVAL = exports.IGNORE_QR_SIGNER = exports.IGNORE_GET_SUBSTRATE_FEATURES_LIST = exports.GAS_PRICE_RATIO = exports.CRON_SYNC_MANTA_PAY = exports.CRON_REFRESH_STAKING_REWARD_INTERVAL = exports.CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL = exports.CRON_REFRESH_PRICE_INTERVAL = exports.CRON_REFRESH_NFT_INTERVAL = exports.CRON_REFRESH_HISTORY_INTERVAL = exports.CRON_REFRESH_EARNING_REWARD_HISTORY_INTERVAL = exports.CRON_REFRESH_CHAIN_STAKING_METADATA = exports.CRON_REFRESH_CHAIN_NOMINATOR_METADATA = exports.CRON_RECOVER_HISTORY_INTERVAL = exports.CRON_GET_API_MAP_STATUS = exports.CRON_AUTO_RECOVER_WEB3_INTERVAL = exports.CRON_AUTO_RECOVER_DOTSAMA_INTERVAL = exports.BASE_SECOND_INTERVAL = exports.BASE_MINUTE_INTERVAL = exports.ASTAR_REFRESH_BALANCE_INTERVAL = exports.ALL_NETWORK_KEY = exports.ALL_GENESIS_HASH = exports.ALL_ACCOUNT_KEY = exports.ACALA_REFRESH_CROWDLOAN_INTERVAL = void 0;
|
|
38
39
|
var _staking = require("./staking");
|
|
39
40
|
Object.keys(_staking).forEach(function (key) {
|
|
40
41
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -112,6 +113,8 @@ const IGNORE_QR_SIGNER = [];
|
|
|
112
113
|
exports.IGNORE_QR_SIGNER = IGNORE_QR_SIGNER;
|
|
113
114
|
const XCM_MIN_AMOUNT_RATIO = 1.2;
|
|
114
115
|
exports.XCM_MIN_AMOUNT_RATIO = XCM_MIN_AMOUNT_RATIO;
|
|
116
|
+
const XCM_FEE_RATIO = 1.2;
|
|
117
|
+
exports.XCM_FEE_RATIO = XCM_FEE_RATIO;
|
|
115
118
|
const GAS_PRICE_RATIO = 1 + 2 / 100;
|
|
116
119
|
exports.GAS_PRICE_RATIO = GAS_PRICE_RATIO;
|
|
117
120
|
const NETWORK_MULTI_GAS_FEE = ['*'];
|
|
@@ -1936,7 +1936,7 @@ class KoniExtension {
|
|
|
1936
1936
|
} else {
|
|
1937
1937
|
const substrateApi = this.#koniState.chainService.getSubstrateApi(networkKey);
|
|
1938
1938
|
let estimatedFee;
|
|
1939
|
-
let maxTransferable = new
|
|
1939
|
+
let maxTransferable = new _bignumber.default(freeBalance.value);
|
|
1940
1940
|
try {
|
|
1941
1941
|
if (isXcmTransfer) {
|
|
1942
1942
|
const chainInfoMap = this.#koniState.chainService.getChainInfoMap();
|
|
@@ -1944,7 +1944,7 @@ class KoniExtension {
|
|
|
1944
1944
|
if (!destinationTokenInfo) {
|
|
1945
1945
|
estimatedFee = '0';
|
|
1946
1946
|
} else {
|
|
1947
|
-
maxTransferable = maxTransferable.
|
|
1947
|
+
maxTransferable = maxTransferable.minus(new _bignumber.default(tokenInfo.minAmount || '0').multipliedBy(_constants.XCM_FEE_RATIO));
|
|
1948
1948
|
const desChainInfo = chainInfoMap[destChain];
|
|
1949
1949
|
const orgChainInfo = chainInfoMap[networkKey];
|
|
1950
1950
|
const recipient = !(0, _utilCrypto.isEthereumAddress)(address) && (0, _utils2._isChainEvmCompatible)(desChainInfo) && !(0, _utils2._isChainEvmCompatible)(orgChainInfo) ? (0, _util.u8aToHex)((0, _utilCrypto.addressToEvm)(address)) : address;
|
|
@@ -2001,10 +2001,10 @@ class KoniExtension {
|
|
|
2001
2001
|
estimatedFee = '0';
|
|
2002
2002
|
console.warn('Unable to estimate fee', e);
|
|
2003
2003
|
}
|
|
2004
|
-
maxTransferable = maxTransferable.
|
|
2004
|
+
maxTransferable = maxTransferable.minus(new _bignumber.default(estimatedFee));
|
|
2005
2005
|
return {
|
|
2006
2006
|
...freeBalance,
|
|
2007
|
-
value: maxTransferable.gt(
|
|
2007
|
+
value: maxTransferable.gt(_utils4.BN_ZERO) ? maxTransferable.toString() || '0' : '0'
|
|
2008
2008
|
};
|
|
2009
2009
|
}
|
|
2010
2010
|
}
|
package/cjs/packageInfo.js
CHANGED
|
@@ -40,7 +40,7 @@ const _BALANCE_CHAIN_GROUP = {
|
|
|
40
40
|
genshiro: ['genshiro_testnet', 'genshiro'],
|
|
41
41
|
equilibrium_parachain: ['equilibrium_parachain'],
|
|
42
42
|
bifrost: ['bifrost', 'acala', 'karura', 'acala_testnet', 'pioneer', 'bitcountry', 'bifrost_dot', 'hydradx_main', 'pendulum', 'amplitude', 'continuum_network'],
|
|
43
|
-
statemine: ['statemine', 'astar', 'shiden', 'statemint', 'moonbeam', 'moonbase', 'moonriver', 'crabParachain', 'darwinia2', 'parallel', 'calamari', 'manta_network', 'rococo_assethub', 'liberlandTest', 'liberland', 'dentnet', 'pangolin'],
|
|
43
|
+
statemine: ['statemine', 'astar', 'shiden', 'statemint', 'moonbeam', 'moonbase', 'moonriver', 'crabParachain', 'darwinia2', 'parallel', 'calamari', 'manta_network', 'rococo_assethub', 'liberlandTest', 'liberland', 'dentnet', 'pangolin', 'crust', 'phala'],
|
|
44
44
|
kusama: ['kusama', 'kintsugi', 'kintsugi_test', 'interlay', 'acala', 'statemint', 'karura', 'bifrost'],
|
|
45
45
|
// perhaps there are some runtime updates
|
|
46
46
|
centrifuge: ['centrifuge'],
|
|
@@ -100,7 +100,8 @@ const _STAKING_ERA_LENGTH_MAP = {
|
|
|
100
100
|
vara_network: 12,
|
|
101
101
|
goldberg_testnet: 24,
|
|
102
102
|
manta_network: 6,
|
|
103
|
-
krest_network: 4
|
|
103
|
+
krest_network: 4,
|
|
104
|
+
polimec: 6
|
|
104
105
|
};
|
|
105
106
|
exports._STAKING_ERA_LENGTH_MAP = _STAKING_ERA_LENGTH_MAP;
|
|
106
107
|
const _EXPECTED_BLOCK_TIME = {
|
|
@@ -117,7 +118,8 @@ const _EXPECTED_BLOCK_TIME = {
|
|
|
117
118
|
edgeware: 6,
|
|
118
119
|
creditcoin: 12,
|
|
119
120
|
vara_network: 3,
|
|
120
|
-
goldberg_testnet: 20
|
|
121
|
+
goldberg_testnet: 20,
|
|
122
|
+
polimec: 12
|
|
121
123
|
};
|
|
122
124
|
exports._EXPECTED_BLOCK_TIME = _EXPECTED_BLOCK_TIME;
|
|
123
125
|
const _PARACHAIN_INFLATION_DISTRIBUTION = {
|
|
@@ -1518,15 +1518,15 @@ class ChainService {
|
|
|
1518
1518
|
const chainInfoMap = this.getChainInfoMap();
|
|
1519
1519
|
Object.values(chainInfoMap).forEach(i => {
|
|
1520
1520
|
var _i$extraInfo;
|
|
1521
|
-
|
|
1521
|
+
const subscanSlug = i.slug === 'goldberg_testnet' ? 'avail-testnet' : (_i$extraInfo = i.extraInfo) === null || _i$extraInfo === void 0 ? void 0 : _i$extraInfo.subscanSlug; // Hotfix for Goldberg testnet
|
|
1522
|
+
|
|
1523
|
+
if (!subscanSlug) {
|
|
1522
1524
|
return;
|
|
1523
1525
|
}
|
|
1524
1526
|
if (!reverse) {
|
|
1525
|
-
|
|
1526
|
-
result[i.slug] = (_i$extraInfo2 = i.extraInfo) === null || _i$extraInfo2 === void 0 ? void 0 : _i$extraInfo2.subscanSlug;
|
|
1527
|
+
result[i.slug] = subscanSlug;
|
|
1527
1528
|
} else {
|
|
1528
|
-
|
|
1529
|
-
result[(_i$extraInfo3 = i.extraInfo) === null || _i$extraInfo3 === void 0 ? void 0 : _i$extraInfo3.subscanSlug] = i.slug;
|
|
1529
|
+
result[subscanSlug] = i.slug;
|
|
1530
1530
|
}
|
|
1531
1531
|
});
|
|
1532
1532
|
return result;
|
|
@@ -9,7 +9,7 @@ exports._STAKING_CHAIN_GROUP = exports.ST_LIQUID_TOKEN_ABI = exports.MANTA_VALID
|
|
|
9
9
|
|
|
10
10
|
const _STAKING_CHAIN_GROUP = {
|
|
11
11
|
relay: ['polkadot', 'kusama', 'aleph', 'polkadex', 'ternoa', 'alephTest', 'polkadexTest', 'westend', 'kate', 'edgeware', 'creditcoin', 'vara_network', 'goldberg_testnet'],
|
|
12
|
-
para: ['moonbeam', 'moonriver', 'moonbase', 'turing', 'turingStaging', 'bifrost', 'bifrost_testnet', 'calamari_test', 'calamari', 'manta_network'],
|
|
12
|
+
para: ['moonbeam', 'moonriver', 'moonbase', 'turing', 'turingStaging', 'bifrost', 'bifrost_testnet', 'calamari_test', 'calamari', 'manta_network', 'polimec'],
|
|
13
13
|
astar: ['astar', 'shiden', 'shibuya'],
|
|
14
14
|
amplitude: ['amplitude', 'amplitude_test', 'kilt', 'kilt_peregrine', 'pendulum', 'krest_network'],
|
|
15
15
|
// amplitude and kilt only share some common logic
|
|
@@ -277,7 +277,7 @@ class EarningService {
|
|
|
277
277
|
const unsubList = [];
|
|
278
278
|
for (const handler of Object.values(this.handlers)) {
|
|
279
279
|
// Force subscribe onchain data
|
|
280
|
-
const forceSubscribe = handler.type === _types2.YieldPoolType.LIQUID_STAKING || handler.type === _types2.YieldPoolType.LENDING;
|
|
280
|
+
const forceSubscribe = handler.type === _types2.YieldPoolType.LIQUID_STAKING || handler.type === _types2.YieldPoolType.LENDING || !onlineData[handler.slug];
|
|
281
281
|
if (!this.useOnlineCacheOnly || forceSubscribe) {
|
|
282
282
|
handler.subscribePoolInfo(callback).then(unsub => {
|
|
283
283
|
if (!cancel) {
|
|
@@ -29,7 +29,8 @@ class MigrateTransactionHistoryBySymbol extends _Base.default {
|
|
|
29
29
|
'pangolin-LOCAL-CKTON': 'pangolin-LOCAL-PKTON',
|
|
30
30
|
'zeta_test-NATIVE-aZETA': 'zeta_test-NATIVE-ZETA',
|
|
31
31
|
'origintrail-NATIVE-OTP': 'origintrail-NATIVE-NEURO',
|
|
32
|
-
'moonbeam-LOCAL-xciBTC': 'moonbeam-LOCAL-xcIBTC'
|
|
32
|
+
'moonbeam-LOCAL-xciBTC': 'moonbeam-LOCAL-xcIBTC',
|
|
33
|
+
'tomochain-NATIVE-TOMO': 'tomochain-NATIVE-VIC'
|
|
33
34
|
};
|
|
34
35
|
const allTxs = [];
|
|
35
36
|
await Promise.all(Object.entries(changeSlugsMap).map(async (_ref, i) => {
|
|
@@ -50,6 +51,9 @@ class MigrateTransactionHistoryBySymbol extends _Base.default {
|
|
|
50
51
|
if (transaction.amount && transaction.amount.symbol === oldSymbolSlug) {
|
|
51
52
|
transaction.amount.symbol = newSymbolSlug;
|
|
52
53
|
}
|
|
54
|
+
if (transaction.fee && transaction.fee.symbol === oldSymbolSlug) {
|
|
55
|
+
transaction.fee.symbol = newSymbolSlug;
|
|
56
|
+
}
|
|
53
57
|
}
|
|
54
58
|
}
|
|
55
59
|
allTxs.push(...filterTransactions);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _Base = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/Base"));
|
|
9
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
11
|
+
|
|
12
|
+
class AutoEnableSomeTokens extends _Base.default {
|
|
13
|
+
async run() {
|
|
14
|
+
try {
|
|
15
|
+
const slugs = ['statemint-NATIVE-DOT', 'statemint-LOCAL-DED', 'statemint-LOCAL-PINK', 'moonbeam-LOCAL-xcDOT', 'moonbeam-LOCAL-xcPINK'];
|
|
16
|
+
const migratedAssetSetting = {};
|
|
17
|
+
for (const slug of slugs) {
|
|
18
|
+
migratedAssetSetting[slug] = {
|
|
19
|
+
visible: true
|
|
20
|
+
};
|
|
21
|
+
await this.state.chainService.updateAssetSetting(slug, {
|
|
22
|
+
visible: true
|
|
23
|
+
}, true);
|
|
24
|
+
}
|
|
25
|
+
} catch (e) {
|
|
26
|
+
console.error(e);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.default = AutoEnableSomeTokens;
|
|
@@ -28,7 +28,8 @@ class MigrateAssetSetting extends _Base.default {
|
|
|
28
28
|
'pangolin-LOCAL-CKTON': 'pangolin-LOCAL-PKTON',
|
|
29
29
|
'zeta_test-NATIVE-aZETA': 'zeta_test-NATIVE-ZETA',
|
|
30
30
|
'origintrail-NATIVE-OTP': 'origintrail-NATIVE-NEURO',
|
|
31
|
-
'moonbeam-LOCAL-xciBTC': 'moonbeam-LOCAL-xcIBTC'
|
|
31
|
+
'moonbeam-LOCAL-xciBTC': 'moonbeam-LOCAL-xcIBTC',
|
|
32
|
+
'tomochain-NATIVE-TOMO': 'tomochain-NATIVE-VIC'
|
|
32
33
|
};
|
|
33
34
|
const assetSetting = await this.state.chainService.getAssetSettings();
|
|
34
35
|
const migratedAssetSetting = {};
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = exports.EVERYTIME = void 0;
|
|
8
|
+
var _AutoEnableSomeTokens = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/databases/AutoEnableSomeTokens"));
|
|
8
9
|
var _DeleteEarningData = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/DeleteEarningData"));
|
|
9
10
|
var _MigrateTransactionHistoryBySymbol = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/MigrateTransactionHistoryBySymbol"));
|
|
10
11
|
var _MigrateAssetSetting = _interopRequireDefault(require("./databases/MigrateAssetSetting"));
|
|
@@ -55,7 +56,8 @@ var _default = {
|
|
|
55
56
|
'1.1.28-01': _MigrateEarningVersion.default,
|
|
56
57
|
'1.1.41-01': _DeleteChainStaking.default,
|
|
57
58
|
'1.1.44-01': _MigrateAssetSetting.default,
|
|
58
|
-
'1.1.
|
|
59
|
+
'1.1.45-01': _MigrateTransactionHistoryBySymbol.default,
|
|
60
|
+
'1.1.46-01': _AutoEnableSomeTokens.default
|
|
59
61
|
// [`${EVERYTIME}-1.1.42-02`]: MigrateTransactionHistoryBySymbol
|
|
60
62
|
// [`${EVERYTIME}-1`]: AutoEnableChainsTokens
|
|
61
63
|
};
|
|
@@ -11,7 +11,6 @@ var _Authorize = _interopRequireDefault(require("@subwallet/extension-base/store
|
|
|
11
11
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
12
12
|
var _getId = require("@subwallet/extension-base/utils/getId");
|
|
13
13
|
var _rxjs = require("rxjs");
|
|
14
|
-
var _util = require("@polkadot/util");
|
|
15
14
|
var _utilCrypto = require("@polkadot/util-crypto");
|
|
16
15
|
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
17
16
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -212,17 +211,58 @@ class AuthRequestHandler {
|
|
|
212
211
|
}
|
|
213
212
|
};
|
|
214
213
|
};
|
|
214
|
+
authorizePromiseMap = {};
|
|
215
215
|
async authorizeUrlV2(url, request) {
|
|
216
216
|
let authList = await this.getAuthList();
|
|
217
|
-
|
|
217
|
+
let accountAuthType = request.accountAuthType || 'substrate';
|
|
218
218
|
request.accountAuthType = accountAuthType;
|
|
219
219
|
if (!authList) {
|
|
220
220
|
authList = {};
|
|
221
221
|
}
|
|
222
|
+
const id = (0, _getId.getId)();
|
|
223
|
+
const promiseHandler = (0, _utils2.createPromiseHandler)();
|
|
224
|
+
const {
|
|
225
|
+
promise,
|
|
226
|
+
reject,
|
|
227
|
+
resolve
|
|
228
|
+
} = promiseHandler;
|
|
222
229
|
const idStr = (0, _utils2.stripUrl)(url);
|
|
230
|
+
const isExistedAuthBothBefore = Object.entries(this.authorizeUrlSubject.value).find(_ref3 => {
|
|
231
|
+
let [key, data] = _ref3;
|
|
232
|
+
return key === idStr && data.accountAuthType === 'both';
|
|
233
|
+
});
|
|
234
|
+
if (isExistedAuthBothBefore) {
|
|
235
|
+
return true;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// Add promise to the map
|
|
239
|
+
this.authorizePromiseMap[id] = promiseHandler;
|
|
240
|
+
// Remove promise from the map after finish
|
|
241
|
+
promise.finally(() => {
|
|
242
|
+
delete this.authorizePromiseMap[id];
|
|
243
|
+
});
|
|
244
|
+
|
|
223
245
|
// Do not enqueue duplicate authorization requests.
|
|
224
|
-
const
|
|
225
|
-
(
|
|
246
|
+
const mergeKeys = [];
|
|
247
|
+
Object.entries(this.#authRequestsV2).forEach(_ref4 => {
|
|
248
|
+
let [key, _request] = _ref4;
|
|
249
|
+
if (_request.idStr === idStr) {
|
|
250
|
+
if (_request.accountAuthType !== request.accountAuthType) {
|
|
251
|
+
request.accountAuthType = 'both';
|
|
252
|
+
accountAuthType = 'both';
|
|
253
|
+
}
|
|
254
|
+
mergeKeys.push(key);
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
// Resolve with current promise
|
|
259
|
+
if (mergeKeys.length > 0) {
|
|
260
|
+
mergeKeys.forEach(key => {
|
|
261
|
+
delete this.#authRequestsV2[key];
|
|
262
|
+
const backupHandler = this.authorizePromiseMap[key];
|
|
263
|
+
promise.then(backupHandler.resolve).catch(backupHandler.reject);
|
|
264
|
+
});
|
|
265
|
+
}
|
|
226
266
|
const existedAuth = authList[idStr];
|
|
227
267
|
const existedAccountAuthType = existedAuth === null || existedAuth === void 0 ? void 0 : existedAuth.accountAuthType;
|
|
228
268
|
const confirmAnotherType = existedAccountAuthType !== 'both' && existedAccountAuthType !== request.accountAuthType;
|
|
@@ -236,8 +276,8 @@ class AuthRequestHandler {
|
|
|
236
276
|
if (inBlackList) {
|
|
237
277
|
throw new Error('The source {{url}} is not allowed to interact with this extension'.replace('{{url}}', url));
|
|
238
278
|
}
|
|
239
|
-
request.allowedAccounts = Object.entries(existedAuth.isAllowedMap).map(
|
|
240
|
-
let [address, allowed] =
|
|
279
|
+
request.allowedAccounts = Object.entries(existedAuth.isAllowedMap).map(_ref5 => {
|
|
280
|
+
let [address, allowed] = _ref5;
|
|
241
281
|
return allowed ? address : '';
|
|
242
282
|
}).filter(item => item !== '');
|
|
243
283
|
let allowedListByRequestType = [...request.allowedAccounts];
|
|
@@ -270,21 +310,19 @@ class AuthRequestHandler {
|
|
|
270
310
|
return true;
|
|
271
311
|
}
|
|
272
312
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
this.
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
}
|
|
287
|
-
});
|
|
313
|
+
this.#authRequestsV2[id] = {
|
|
314
|
+
...this.authCompleteV2(id, url, resolve, reject),
|
|
315
|
+
id,
|
|
316
|
+
idStr,
|
|
317
|
+
request,
|
|
318
|
+
url,
|
|
319
|
+
accountAuthType: accountAuthType
|
|
320
|
+
};
|
|
321
|
+
this.updateIconAuthV2();
|
|
322
|
+
if (Object.keys(this.#authRequestsV2).length < 2 && !(mergeKeys.length > 0 && mergeKeys[mergeKeys.length - 1] !== id)) {
|
|
323
|
+
this.#requestService.popupOpen();
|
|
324
|
+
}
|
|
325
|
+
return promise;
|
|
288
326
|
}
|
|
289
327
|
getAuthRequestV2(id) {
|
|
290
328
|
return this.#authRequestsV2[id];
|
|
@@ -28,6 +28,9 @@ function getBlockExplorerAccountRoute(explorerLink) {
|
|
|
28
28
|
if (explorerLink.includes('3dpscan.io')) {
|
|
29
29
|
return 'account';
|
|
30
30
|
}
|
|
31
|
+
if (explorerLink.includes('explorer.polimec.org')) {
|
|
32
|
+
return 'account';
|
|
33
|
+
}
|
|
31
34
|
return 'address';
|
|
32
35
|
}
|
|
33
36
|
function getBlockExplorerTxRoute(chainInfo) {
|
package/constants/index.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ export declare const ALL_GENESIS_HASH: null;
|
|
|
23
23
|
export declare const IGNORE_GET_SUBSTRATE_FEATURES_LIST: string[];
|
|
24
24
|
export declare const IGNORE_QR_SIGNER: string[];
|
|
25
25
|
export declare const XCM_MIN_AMOUNT_RATIO = 1.2;
|
|
26
|
+
export declare const XCM_FEE_RATIO = 1.2;
|
|
26
27
|
export declare const GAS_PRICE_RATIO: number;
|
|
27
28
|
export declare const NETWORK_MULTI_GAS_FEE: string[];
|
|
28
29
|
export declare const ORDINAL_COLLECTION = "__Ordinal__";
|
package/constants/index.js
CHANGED
|
@@ -26,6 +26,7 @@ export const ALL_GENESIS_HASH = null;
|
|
|
26
26
|
export const IGNORE_GET_SUBSTRATE_FEATURES_LIST = ['astarEvm', 'ethereum', 'ethereum_goerli', 'binance', 'binance_test', 'boba_rinkeby', 'boba', 'bobabase', 'bobabeam'];
|
|
27
27
|
export const IGNORE_QR_SIGNER = [];
|
|
28
28
|
export const XCM_MIN_AMOUNT_RATIO = 1.2;
|
|
29
|
+
export const XCM_FEE_RATIO = 1.2;
|
|
29
30
|
export const GAS_PRICE_RATIO = 1 + 2 / 100;
|
|
30
31
|
export const NETWORK_MULTI_GAS_FEE = ['*'];
|
|
31
32
|
export const ORDINAL_COLLECTION = '__Ordinal__';
|
|
@@ -10,7 +10,7 @@ import { withErrorLog } from '@subwallet/extension-base/background/handlers/help
|
|
|
10
10
|
import { createSubscription } from '@subwallet/extension-base/background/handlers/subscriptions';
|
|
11
11
|
import { AccountExternalErrorCode, BasicTxErrorType, BasicTxWarningCode, CampaignDataType, ChainType, ExternalRequestPromiseStatus, ExtrinsicType, MantaPayEnableMessage, StakingTxErrorType, StakingType, TransferTxErrorType } from '@subwallet/extension-base/background/KoniTypes';
|
|
12
12
|
import { TransactionWarning } from '@subwallet/extension-base/background/warnings/TransactionWarning';
|
|
13
|
-
import { ALL_ACCOUNT_KEY, ALL_GENESIS_HASH, XCM_MIN_AMOUNT_RATIO } from '@subwallet/extension-base/constants';
|
|
13
|
+
import { ALL_ACCOUNT_KEY, ALL_GENESIS_HASH, XCM_FEE_RATIO, XCM_MIN_AMOUNT_RATIO } from '@subwallet/extension-base/constants';
|
|
14
14
|
import { ALLOWED_PATH } from '@subwallet/extension-base/defaults';
|
|
15
15
|
import { resolveAzeroAddressToDomain, resolveAzeroDomainToAddress } from '@subwallet/extension-base/koni/api/dotsama/domain';
|
|
16
16
|
import { parseSubstrateTransaction } from '@subwallet/extension-base/koni/api/dotsama/parseTransaction';
|
|
@@ -33,7 +33,7 @@ import { WALLET_CONNECT_EIP155_NAMESPACE } from '@subwallet/extension-base/servi
|
|
|
33
33
|
import { isProposalExpired, isSupportWalletConnectChain, isSupportWalletConnectNamespace } from '@subwallet/extension-base/services/wallet-connect-service/helpers';
|
|
34
34
|
import { AccountsStore } from '@subwallet/extension-base/stores';
|
|
35
35
|
import { YieldPoolType } from '@subwallet/extension-base/types';
|
|
36
|
-
import { convertSubjectInfoToAddresses, createTransactionFromRLP, isSameAddress, reformatAddress, signatureToHex, uniqueStringArray } from '@subwallet/extension-base/utils';
|
|
36
|
+
import { BN_ZERO, convertSubjectInfoToAddresses, createTransactionFromRLP, isSameAddress, reformatAddress, signatureToHex, uniqueStringArray } from '@subwallet/extension-base/utils';
|
|
37
37
|
import { parseContractInput, parseEvmRlp } from '@subwallet/extension-base/utils/eth/parseTransaction';
|
|
38
38
|
import { balanceFormatter, formatNumber } from '@subwallet/extension-base/utils/number';
|
|
39
39
|
import { createPair } from '@subwallet/keyring';
|
|
@@ -42,7 +42,7 @@ import { getSdkError } from '@walletconnect/utils';
|
|
|
42
42
|
import BigN from 'bignumber.js';
|
|
43
43
|
import { t } from 'i18next';
|
|
44
44
|
import { TypeRegistry } from '@polkadot/types';
|
|
45
|
-
import { assert, BN,
|
|
45
|
+
import { assert, BN, hexStripPrefix, hexToU8a, isAscii, isHex, u8aToHex, u8aToString } from '@polkadot/util';
|
|
46
46
|
import { addressToEvm, base64Decode, decodeAddress, isAddress, isEthereumAddress, jsonDecrypt, keyExtractSuri, mnemonicGenerate, mnemonicValidate } from '@polkadot/util-crypto';
|
|
47
47
|
const ETH_DERIVE_DEFAULT = '/m/44\'/60\'/0\'/0/0';
|
|
48
48
|
function getSuri(seed, type) {
|
|
@@ -1878,7 +1878,7 @@ export default class KoniExtension {
|
|
|
1878
1878
|
} else {
|
|
1879
1879
|
const substrateApi = this.#koniState.chainService.getSubstrateApi(networkKey);
|
|
1880
1880
|
let estimatedFee;
|
|
1881
|
-
let maxTransferable = new
|
|
1881
|
+
let maxTransferable = new BigN(freeBalance.value);
|
|
1882
1882
|
try {
|
|
1883
1883
|
if (isXcmTransfer) {
|
|
1884
1884
|
const chainInfoMap = this.#koniState.chainService.getChainInfoMap();
|
|
@@ -1886,7 +1886,7 @@ export default class KoniExtension {
|
|
|
1886
1886
|
if (!destinationTokenInfo) {
|
|
1887
1887
|
estimatedFee = '0';
|
|
1888
1888
|
} else {
|
|
1889
|
-
maxTransferable = maxTransferable.
|
|
1889
|
+
maxTransferable = maxTransferable.minus(new BigN(tokenInfo.minAmount || '0').multipliedBy(XCM_FEE_RATIO));
|
|
1890
1890
|
const desChainInfo = chainInfoMap[destChain];
|
|
1891
1891
|
const orgChainInfo = chainInfoMap[networkKey];
|
|
1892
1892
|
const recipient = !isEthereumAddress(address) && _isChainEvmCompatible(desChainInfo) && !_isChainEvmCompatible(orgChainInfo) ? u8aToHex(addressToEvm(address)) : address;
|
|
@@ -1943,7 +1943,7 @@ export default class KoniExtension {
|
|
|
1943
1943
|
estimatedFee = '0';
|
|
1944
1944
|
console.warn('Unable to estimate fee', e);
|
|
1945
1945
|
}
|
|
1946
|
-
maxTransferable = maxTransferable.
|
|
1946
|
+
maxTransferable = maxTransferable.minus(new BigN(estimatedFee));
|
|
1947
1947
|
return {
|
|
1948
1948
|
...freeBalance,
|
|
1949
1949
|
value: maxTransferable.gt(BN_ZERO) ? maxTransferable.toString() || '0' : '0'
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"./cjs/detectPackage.js"
|
|
18
18
|
],
|
|
19
19
|
"type": "module",
|
|
20
|
-
"version": "1.1.
|
|
20
|
+
"version": "1.1.46-0",
|
|
21
21
|
"main": "./cjs/index.js",
|
|
22
22
|
"module": "./index.js",
|
|
23
23
|
"types": "./index.d.ts",
|
|
@@ -935,6 +935,11 @@
|
|
|
935
935
|
"require": "./cjs/services/migration-service/scripts/ClearOldStorage.js",
|
|
936
936
|
"default": "./services/migration-service/scripts/ClearOldStorage.js"
|
|
937
937
|
},
|
|
938
|
+
"./services/migration-service/scripts/databases/AutoEnableSomeTokens": {
|
|
939
|
+
"types": "./services/migration-service/scripts/databases/AutoEnableSomeTokens.d.ts",
|
|
940
|
+
"require": "./cjs/services/migration-service/scripts/databases/AutoEnableSomeTokens.js",
|
|
941
|
+
"default": "./services/migration-service/scripts/databases/AutoEnableSomeTokens.js"
|
|
942
|
+
},
|
|
938
943
|
"./services/migration-service/scripts/databases/MigrateAssetSetting": {
|
|
939
944
|
"types": "./services/migration-service/scripts/databases/MigrateAssetSetting.d.ts",
|
|
940
945
|
"require": "./cjs/services/migration-service/scripts/databases/MigrateAssetSetting.js",
|
|
@@ -1791,11 +1796,11 @@
|
|
|
1791
1796
|
"@reduxjs/toolkit": "^1.9.1",
|
|
1792
1797
|
"@sora-substrate/type-definitions": "^1.17.7",
|
|
1793
1798
|
"@substrate/connect": "^0.7.26",
|
|
1794
|
-
"@subwallet/chain-list": "0.2.
|
|
1795
|
-
"@subwallet/extension-base": "^1.1.
|
|
1796
|
-
"@subwallet/extension-chains": "^1.1.
|
|
1797
|
-
"@subwallet/extension-dapp": "^1.1.
|
|
1798
|
-
"@subwallet/extension-inject": "^1.1.
|
|
1799
|
+
"@subwallet/chain-list": "0.2.51",
|
|
1800
|
+
"@subwallet/extension-base": "^1.1.46-0",
|
|
1801
|
+
"@subwallet/extension-chains": "^1.1.46-0",
|
|
1802
|
+
"@subwallet/extension-dapp": "^1.1.46-0",
|
|
1803
|
+
"@subwallet/extension-inject": "^1.1.46-0",
|
|
1799
1804
|
"@subwallet/keyring": "^0.1.3",
|
|
1800
1805
|
"@subwallet/ui-keyring": "^0.1.3",
|
|
1801
1806
|
"@walletconnect/sign-client": "^2.8.4",
|
package/packageInfo.js
CHANGED
|
@@ -7,5 +7,5 @@ export const packageInfo = {
|
|
|
7
7
|
name: '@subwallet/extension-base',
|
|
8
8
|
path: (import.meta && import.meta.url) ? new URL(import.meta.url).pathname.substring(0, new URL(import.meta.url).pathname.lastIndexOf('/') + 1) : 'auto',
|
|
9
9
|
type: 'esm',
|
|
10
|
-
version: '1.1.
|
|
10
|
+
version: '1.1.46-0'
|
|
11
11
|
};
|
|
@@ -29,7 +29,7 @@ export const _BALANCE_CHAIN_GROUP = {
|
|
|
29
29
|
genshiro: ['genshiro_testnet', 'genshiro'],
|
|
30
30
|
equilibrium_parachain: ['equilibrium_parachain'],
|
|
31
31
|
bifrost: ['bifrost', 'acala', 'karura', 'acala_testnet', 'pioneer', 'bitcountry', 'bifrost_dot', 'hydradx_main', 'pendulum', 'amplitude', 'continuum_network'],
|
|
32
|
-
statemine: ['statemine', 'astar', 'shiden', 'statemint', 'moonbeam', 'moonbase', 'moonriver', 'crabParachain', 'darwinia2', 'parallel', 'calamari', 'manta_network', 'rococo_assethub', 'liberlandTest', 'liberland', 'dentnet', 'pangolin'],
|
|
32
|
+
statemine: ['statemine', 'astar', 'shiden', 'statemint', 'moonbeam', 'moonbase', 'moonriver', 'crabParachain', 'darwinia2', 'parallel', 'calamari', 'manta_network', 'rococo_assethub', 'liberlandTest', 'liberland', 'dentnet', 'pangolin', 'crust', 'phala'],
|
|
33
33
|
kusama: ['kusama', 'kintsugi', 'kintsugi_test', 'interlay', 'acala', 'statemint', 'karura', 'bifrost'],
|
|
34
34
|
// perhaps there are some runtime updates
|
|
35
35
|
centrifuge: ['centrifuge'],
|
|
@@ -87,7 +87,8 @@ export const _STAKING_ERA_LENGTH_MAP = {
|
|
|
87
87
|
vara_network: 12,
|
|
88
88
|
goldberg_testnet: 24,
|
|
89
89
|
manta_network: 6,
|
|
90
|
-
krest_network: 4
|
|
90
|
+
krest_network: 4,
|
|
91
|
+
polimec: 6
|
|
91
92
|
};
|
|
92
93
|
export const _EXPECTED_BLOCK_TIME = {
|
|
93
94
|
// in seconds
|
|
@@ -103,7 +104,8 @@ export const _EXPECTED_BLOCK_TIME = {
|
|
|
103
104
|
edgeware: 6,
|
|
104
105
|
creditcoin: 12,
|
|
105
106
|
vara_network: 3,
|
|
106
|
-
goldberg_testnet: 20
|
|
107
|
+
goldberg_testnet: 20,
|
|
108
|
+
polimec: 12
|
|
107
109
|
};
|
|
108
110
|
export const _PARACHAIN_INFLATION_DISTRIBUTION = {
|
|
109
111
|
moonbeam: {
|
|
@@ -1497,15 +1497,15 @@ export class ChainService {
|
|
|
1497
1497
|
const chainInfoMap = this.getChainInfoMap();
|
|
1498
1498
|
Object.values(chainInfoMap).forEach(i => {
|
|
1499
1499
|
var _i$extraInfo;
|
|
1500
|
-
|
|
1500
|
+
const subscanSlug = i.slug === 'goldberg_testnet' ? 'avail-testnet' : (_i$extraInfo = i.extraInfo) === null || _i$extraInfo === void 0 ? void 0 : _i$extraInfo.subscanSlug; // Hotfix for Goldberg testnet
|
|
1501
|
+
|
|
1502
|
+
if (!subscanSlug) {
|
|
1501
1503
|
return;
|
|
1502
1504
|
}
|
|
1503
1505
|
if (!reverse) {
|
|
1504
|
-
|
|
1505
|
-
result[i.slug] = (_i$extraInfo2 = i.extraInfo) === null || _i$extraInfo2 === void 0 ? void 0 : _i$extraInfo2.subscanSlug;
|
|
1506
|
+
result[i.slug] = subscanSlug;
|
|
1506
1507
|
} else {
|
|
1507
|
-
|
|
1508
|
-
result[(_i$extraInfo3 = i.extraInfo) === null || _i$extraInfo3 === void 0 ? void 0 : _i$extraInfo3.subscanSlug] = i.slug;
|
|
1508
|
+
result[subscanSlug] = i.slug;
|
|
1509
1509
|
}
|
|
1510
1510
|
});
|
|
1511
1511
|
return result;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
export const _STAKING_CHAIN_GROUP = {
|
|
5
5
|
relay: ['polkadot', 'kusama', 'aleph', 'polkadex', 'ternoa', 'alephTest', 'polkadexTest', 'westend', 'kate', 'edgeware', 'creditcoin', 'vara_network', 'goldberg_testnet'],
|
|
6
|
-
para: ['moonbeam', 'moonriver', 'moonbase', 'turing', 'turingStaging', 'bifrost', 'bifrost_testnet', 'calamari_test', 'calamari', 'manta_network'],
|
|
6
|
+
para: ['moonbeam', 'moonriver', 'moonbase', 'turing', 'turingStaging', 'bifrost', 'bifrost_testnet', 'calamari_test', 'calamari', 'manta_network', 'polimec'],
|
|
7
7
|
astar: ['astar', 'shiden', 'shibuya'],
|
|
8
8
|
amplitude: ['amplitude', 'amplitude_test', 'kilt', 'kilt_peregrine', 'pendulum', 'krest_network'],
|
|
9
9
|
// amplitude and kilt only share some common logic
|
|
@@ -270,7 +270,7 @@ export default class EarningService {
|
|
|
270
270
|
const unsubList = [];
|
|
271
271
|
for (const handler of Object.values(this.handlers)) {
|
|
272
272
|
// Force subscribe onchain data
|
|
273
|
-
const forceSubscribe = handler.type === YieldPoolType.LIQUID_STAKING || handler.type === YieldPoolType.LENDING;
|
|
273
|
+
const forceSubscribe = handler.type === YieldPoolType.LIQUID_STAKING || handler.type === YieldPoolType.LENDING || !onlineData[handler.slug];
|
|
274
274
|
if (!this.useOnlineCacheOnly || forceSubscribe) {
|
|
275
275
|
handler.subscribePoolInfo(callback).then(unsub => {
|
|
276
276
|
if (!cancel) {
|
|
@@ -22,7 +22,8 @@ export default class MigrateTransactionHistoryBySymbol extends BaseMigrationJob
|
|
|
22
22
|
'pangolin-LOCAL-CKTON': 'pangolin-LOCAL-PKTON',
|
|
23
23
|
'zeta_test-NATIVE-aZETA': 'zeta_test-NATIVE-ZETA',
|
|
24
24
|
'origintrail-NATIVE-OTP': 'origintrail-NATIVE-NEURO',
|
|
25
|
-
'moonbeam-LOCAL-xciBTC': 'moonbeam-LOCAL-xcIBTC'
|
|
25
|
+
'moonbeam-LOCAL-xciBTC': 'moonbeam-LOCAL-xcIBTC',
|
|
26
|
+
'tomochain-NATIVE-TOMO': 'tomochain-NATIVE-VIC'
|
|
26
27
|
};
|
|
27
28
|
const allTxs = [];
|
|
28
29
|
await Promise.all(Object.entries(changeSlugsMap).map(async ([oldSlug, newSlug], i) => {
|
|
@@ -42,6 +43,9 @@ export default class MigrateTransactionHistoryBySymbol extends BaseMigrationJob
|
|
|
42
43
|
if (transaction.amount && transaction.amount.symbol === oldSymbolSlug) {
|
|
43
44
|
transaction.amount.symbol = newSymbolSlug;
|
|
44
45
|
}
|
|
46
|
+
if (transaction.fee && transaction.fee.symbol === oldSymbolSlug) {
|
|
47
|
+
transaction.fee.symbol = newSymbolSlug;
|
|
48
|
+
}
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
51
|
allTxs.push(...filterTransactions);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import BaseMigrationJob from '@subwallet/extension-base/services/migration-service/Base';
|
|
5
|
+
export default class AutoEnableSomeTokens extends BaseMigrationJob {
|
|
6
|
+
async run() {
|
|
7
|
+
try {
|
|
8
|
+
const slugs = ['statemint-NATIVE-DOT', 'statemint-LOCAL-DED', 'statemint-LOCAL-PINK', 'moonbeam-LOCAL-xcDOT', 'moonbeam-LOCAL-xcPINK'];
|
|
9
|
+
const migratedAssetSetting = {};
|
|
10
|
+
for (const slug of slugs) {
|
|
11
|
+
migratedAssetSetting[slug] = {
|
|
12
|
+
visible: true
|
|
13
|
+
};
|
|
14
|
+
await this.state.chainService.updateAssetSetting(slug, {
|
|
15
|
+
visible: true
|
|
16
|
+
}, true);
|
|
17
|
+
}
|
|
18
|
+
} catch (e) {
|
|
19
|
+
console.error(e);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -21,7 +21,8 @@ export default class MigrateAssetSetting extends BaseMigrationJob {
|
|
|
21
21
|
'pangolin-LOCAL-CKTON': 'pangolin-LOCAL-PKTON',
|
|
22
22
|
'zeta_test-NATIVE-aZETA': 'zeta_test-NATIVE-ZETA',
|
|
23
23
|
'origintrail-NATIVE-OTP': 'origintrail-NATIVE-NEURO',
|
|
24
|
-
'moonbeam-LOCAL-xciBTC': 'moonbeam-LOCAL-xcIBTC'
|
|
24
|
+
'moonbeam-LOCAL-xciBTC': 'moonbeam-LOCAL-xcIBTC',
|
|
25
|
+
'tomochain-NATIVE-TOMO': 'tomochain-NATIVE-VIC'
|
|
25
26
|
};
|
|
26
27
|
const assetSetting = await this.state.chainService.getAssetSettings();
|
|
27
28
|
const migratedAssetSetting = {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
+
import AutoEnableSomeTokens from '@subwallet/extension-base/services/migration-service/scripts/databases/AutoEnableSomeTokens';
|
|
4
5
|
import DeleteEarningData from '@subwallet/extension-base/services/migration-service/scripts/DeleteEarningData';
|
|
5
6
|
import MigrateTransactionHistoryBySymbol from '@subwallet/extension-base/services/migration-service/scripts/MigrateTransactionHistoryBySymbol';
|
|
6
7
|
import MigrateAssetSetting from "./databases/MigrateAssetSetting.js";
|
|
@@ -47,7 +48,8 @@ export default {
|
|
|
47
48
|
'1.1.28-01': MigrateEarningVersion,
|
|
48
49
|
'1.1.41-01': DeleteChainStaking,
|
|
49
50
|
'1.1.44-01': MigrateAssetSetting,
|
|
50
|
-
'1.1.
|
|
51
|
+
'1.1.45-01': MigrateTransactionHistoryBySymbol,
|
|
52
|
+
'1.1.46-01': AutoEnableSomeTokens
|
|
51
53
|
// [`${EVERYTIME}-1.1.42-02`]: MigrateTransactionHistoryBySymbol
|
|
52
54
|
// [`${EVERYTIME}-1`]: AutoEnableChainsTokens
|
|
53
55
|
};
|
|
@@ -29,6 +29,7 @@ export default class AuthRequestHandler {
|
|
|
29
29
|
url?: string;
|
|
30
30
|
}): _ChainInfo | undefined;
|
|
31
31
|
private authCompleteV2;
|
|
32
|
+
private authorizePromiseMap;
|
|
32
33
|
authorizeUrlV2(url: string, request: RequestAuthorizeTab): Promise<boolean>;
|
|
33
34
|
getAuthRequestV2(id: string): AuthRequestV2;
|
|
34
35
|
get subscribeEvmChainChange(): BehaviorSubject<AuthUrls>;
|
|
@@ -4,10 +4,9 @@
|
|
|
4
4
|
import { _isChainEvmCompatible } from '@subwallet/extension-base/services/chain-service/utils';
|
|
5
5
|
import { PREDEFINED_CHAIN_DAPP_CHAIN_MAP, WEB_APP_URL } from '@subwallet/extension-base/services/request-service/constants';
|
|
6
6
|
import AuthorizeStore from '@subwallet/extension-base/stores/Authorize';
|
|
7
|
-
import { getDomainFromUrl, stripUrl } from '@subwallet/extension-base/utils';
|
|
7
|
+
import { createPromiseHandler, getDomainFromUrl, stripUrl } from '@subwallet/extension-base/utils';
|
|
8
8
|
import { getId } from '@subwallet/extension-base/utils/getId';
|
|
9
9
|
import { BehaviorSubject } from 'rxjs';
|
|
10
|
-
import { assert } from '@polkadot/util';
|
|
11
10
|
import { isEthereumAddress } from '@polkadot/util-crypto';
|
|
12
11
|
const AUTH_URLS_KEY = 'authUrls';
|
|
13
12
|
export default class AuthRequestHandler {
|
|
@@ -200,17 +199,54 @@ export default class AuthRequestHandler {
|
|
|
200
199
|
}
|
|
201
200
|
};
|
|
202
201
|
};
|
|
202
|
+
authorizePromiseMap = {};
|
|
203
203
|
async authorizeUrlV2(url, request) {
|
|
204
204
|
let authList = await this.getAuthList();
|
|
205
|
-
|
|
205
|
+
let accountAuthType = request.accountAuthType || 'substrate';
|
|
206
206
|
request.accountAuthType = accountAuthType;
|
|
207
207
|
if (!authList) {
|
|
208
208
|
authList = {};
|
|
209
209
|
}
|
|
210
|
+
const id = getId();
|
|
211
|
+
const promiseHandler = createPromiseHandler();
|
|
212
|
+
const {
|
|
213
|
+
promise,
|
|
214
|
+
reject,
|
|
215
|
+
resolve
|
|
216
|
+
} = promiseHandler;
|
|
210
217
|
const idStr = stripUrl(url);
|
|
218
|
+
const isExistedAuthBothBefore = Object.entries(this.authorizeUrlSubject.value).find(([key, data]) => key === idStr && data.accountAuthType === 'both');
|
|
219
|
+
if (isExistedAuthBothBefore) {
|
|
220
|
+
return true;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// Add promise to the map
|
|
224
|
+
this.authorizePromiseMap[id] = promiseHandler;
|
|
225
|
+
// Remove promise from the map after finish
|
|
226
|
+
promise.finally(() => {
|
|
227
|
+
delete this.authorizePromiseMap[id];
|
|
228
|
+
});
|
|
229
|
+
|
|
211
230
|
// Do not enqueue duplicate authorization requests.
|
|
212
|
-
const
|
|
213
|
-
|
|
231
|
+
const mergeKeys = [];
|
|
232
|
+
Object.entries(this.#authRequestsV2).forEach(([key, _request]) => {
|
|
233
|
+
if (_request.idStr === idStr) {
|
|
234
|
+
if (_request.accountAuthType !== request.accountAuthType) {
|
|
235
|
+
request.accountAuthType = 'both';
|
|
236
|
+
accountAuthType = 'both';
|
|
237
|
+
}
|
|
238
|
+
mergeKeys.push(key);
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
// Resolve with current promise
|
|
243
|
+
if (mergeKeys.length > 0) {
|
|
244
|
+
mergeKeys.forEach(key => {
|
|
245
|
+
delete this.#authRequestsV2[key];
|
|
246
|
+
const backupHandler = this.authorizePromiseMap[key];
|
|
247
|
+
promise.then(backupHandler.resolve).catch(backupHandler.reject);
|
|
248
|
+
});
|
|
249
|
+
}
|
|
214
250
|
const existedAuth = authList[idStr];
|
|
215
251
|
const existedAccountAuthType = existedAuth === null || existedAuth === void 0 ? void 0 : existedAuth.accountAuthType;
|
|
216
252
|
const confirmAnotherType = existedAccountAuthType !== 'both' && existedAccountAuthType !== request.accountAuthType;
|
|
@@ -255,21 +291,19 @@ export default class AuthRequestHandler {
|
|
|
255
291
|
return true;
|
|
256
292
|
}
|
|
257
293
|
}
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
this.
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
}
|
|
272
|
-
});
|
|
294
|
+
this.#authRequestsV2[id] = {
|
|
295
|
+
...this.authCompleteV2(id, url, resolve, reject),
|
|
296
|
+
id,
|
|
297
|
+
idStr,
|
|
298
|
+
request,
|
|
299
|
+
url,
|
|
300
|
+
accountAuthType: accountAuthType
|
|
301
|
+
};
|
|
302
|
+
this.updateIconAuthV2();
|
|
303
|
+
if (Object.keys(this.#authRequestsV2).length < 2 && !(mergeKeys.length > 0 && mergeKeys[mergeKeys.length - 1] !== id)) {
|
|
304
|
+
this.#requestService.popupOpen();
|
|
305
|
+
}
|
|
306
|
+
return promise;
|
|
273
307
|
}
|
|
274
308
|
getAuthRequestV2(id) {
|
|
275
309
|
return this.#authRequestsV2[id];
|
|
@@ -22,6 +22,9 @@ function getBlockExplorerAccountRoute(explorerLink) {
|
|
|
22
22
|
if (explorerLink.includes('3dpscan.io')) {
|
|
23
23
|
return 'account';
|
|
24
24
|
}
|
|
25
|
+
if (explorerLink.includes('explorer.polimec.org')) {
|
|
26
|
+
return 'account';
|
|
27
|
+
}
|
|
25
28
|
return 'address';
|
|
26
29
|
}
|
|
27
30
|
function getBlockExplorerTxRoute(chainInfo) {
|