@subwallet/extension-base 1.1.6-3 → 1.1.8-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 +10 -0
- package/cjs/koni/api/dotsama/domain.js +54 -0
- package/cjs/koni/api/staking/bonding/relayChain.js +12 -2
- package/cjs/koni/background/handlers/Extension.js +13 -0
- package/cjs/koni/background/handlers/State.js +3 -0
- package/cjs/koni/background/subscription.js +3 -1
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/chain-service/handler/SubstrateApi.js +6 -4
- package/cjs/services/chain-service/index.js +20 -2
- package/cjs/services/migration-service/scripts/DeleteChain.js +21 -0
- package/cjs/services/migration-service/scripts/index.js +3 -1
- package/cjs/services/transaction-service/utils.js +4 -1
- package/cjs/services/wallet-connect-service/index.js +1 -0
- package/koni/api/dotsama/domain.d.ts +9 -0
- package/koni/api/dotsama/domain.js +40 -0
- package/koni/api/staking/bonding/relayChain.js +12 -2
- package/koni/background/handlers/Extension.d.ts +2 -0
- package/koni/background/handlers/Extension.js +13 -0
- package/koni/background/handlers/State.d.ts +1 -0
- package/koni/background/handlers/State.js +3 -0
- package/koni/background/subscription.js +3 -1
- package/package.json +17 -6
- package/packageInfo.js +1 -1
- package/services/chain-service/handler/SubstrateApi.js +6 -4
- package/services/chain-service/index.d.ts +1 -0
- package/services/chain-service/index.js +20 -2
- package/services/migration-service/scripts/DeleteChain.d.ts +4 -0
- package/services/migration-service/scripts/DeleteChain.js +13 -0
- package/services/migration-service/scripts/index.js +3 -1
- package/services/transaction-service/utils.js +4 -1
- package/services/wallet-connect-service/index.js +1 -0
|
@@ -1511,6 +1511,14 @@ export interface ResponseFindRawMetadata {
|
|
|
1511
1511
|
rawMetadata: string;
|
|
1512
1512
|
specVersion: number;
|
|
1513
1513
|
}
|
|
1514
|
+
export interface ResolveDomainRequest {
|
|
1515
|
+
chain: string;
|
|
1516
|
+
domain: string;
|
|
1517
|
+
}
|
|
1518
|
+
export interface ResolveAddressToDomainRequest {
|
|
1519
|
+
chain: string;
|
|
1520
|
+
address: string;
|
|
1521
|
+
}
|
|
1514
1522
|
export interface KoniRequestSignatures {
|
|
1515
1523
|
'pri(staking.submitTuringCancelCompound)': [RequestTuringCancelStakeCompound, SWTransactionResponse];
|
|
1516
1524
|
'pri(staking.submitTuringCompound)': [RequestTuringStakeCompound, SWTransactionResponse];
|
|
@@ -1606,6 +1614,8 @@ export interface KoniRequestSignatures {
|
|
|
1606
1614
|
'pri(accounts.subscribeAddresses)': [null, AddressBookInfo, AddressBookInfo];
|
|
1607
1615
|
'pri(accounts.editContact)': [RequestEditContactAccount, boolean];
|
|
1608
1616
|
'pri(accounts.deleteContact)': [RequestDeleteContactAccount, boolean];
|
|
1617
|
+
'pri(accounts.resolveDomainToAddress)': [ResolveDomainRequest, string | undefined];
|
|
1618
|
+
'pri(accounts.resolveAddressToDomain)': [ResolveAddressToDomainRequest, string | undefined];
|
|
1609
1619
|
'pri(settings.changeBalancesVisibility)': [null, boolean];
|
|
1610
1620
|
'pri(settings.subscribe)': [null, UiSettings, UiSettings];
|
|
1611
1621
|
'pri(settings.getLogoMaps)': [null, AllLogoMap];
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TZERO_ID_SUFFIX = exports.SUPPORTED_DOMAIN_SUFFIX = exports.ENS_SUFFIX = exports.CHAINS_SUPPORTED_DOMAIN = exports.AZERO_ID_SUFFIX = void 0;
|
|
7
|
+
exports.isAzeroDomain = isAzeroDomain;
|
|
8
|
+
exports.resolveAzeroAddressToDomain = resolveAzeroAddressToDomain;
|
|
9
|
+
exports.resolveAzeroDomainToAddress = resolveAzeroDomainToAddress;
|
|
10
|
+
var _resolverCore = require("@azns/resolver-core");
|
|
11
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
12
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
13
|
+
|
|
14
|
+
const ENS_SUFFIX = '.eth';
|
|
15
|
+
exports.ENS_SUFFIX = ENS_SUFFIX;
|
|
16
|
+
const TZERO_ID_SUFFIX = '.tzero';
|
|
17
|
+
exports.TZERO_ID_SUFFIX = TZERO_ID_SUFFIX;
|
|
18
|
+
const AZERO_ID_SUFFIX = '.azero';
|
|
19
|
+
exports.AZERO_ID_SUFFIX = AZERO_ID_SUFFIX;
|
|
20
|
+
const SUPPORTED_DOMAIN_SUFFIX = [ENS_SUFFIX, TZERO_ID_SUFFIX, AZERO_ID_SUFFIX];
|
|
21
|
+
exports.SUPPORTED_DOMAIN_SUFFIX = SUPPORTED_DOMAIN_SUFFIX;
|
|
22
|
+
const CHAINS_SUPPORTED_DOMAIN = ['aleph', 'alephTest'];
|
|
23
|
+
exports.CHAINS_SUPPORTED_DOMAIN = CHAINS_SUPPORTED_DOMAIN;
|
|
24
|
+
async function resolveAzeroDomainToAddress(domain, chain, api) {
|
|
25
|
+
let chainId = _resolverCore.SupportedChainId.AlephZero;
|
|
26
|
+
if (chain === 'alephTest') {
|
|
27
|
+
chainId = _resolverCore.SupportedChainId.AlephZeroTestnet;
|
|
28
|
+
}
|
|
29
|
+
const primaryDomains = await (0, _resolverCore.resolveDomainToAddress)(domain, {
|
|
30
|
+
chainId,
|
|
31
|
+
customApi: api
|
|
32
|
+
});
|
|
33
|
+
if (primaryDomains.error) {
|
|
34
|
+
console.debug(primaryDomains.error);
|
|
35
|
+
}
|
|
36
|
+
return (primaryDomains === null || primaryDomains === void 0 ? void 0 : primaryDomains.address) || undefined;
|
|
37
|
+
}
|
|
38
|
+
async function resolveAzeroAddressToDomain(address, chain, api) {
|
|
39
|
+
let chainId = _resolverCore.SupportedChainId.AlephZero;
|
|
40
|
+
if (chain === 'alephTest') {
|
|
41
|
+
chainId = _resolverCore.SupportedChainId.AlephZeroTestnet;
|
|
42
|
+
}
|
|
43
|
+
const primaryDomains = await (0, _resolverCore.resolveAddressToDomain)(address, {
|
|
44
|
+
chainId,
|
|
45
|
+
customApi: api
|
|
46
|
+
});
|
|
47
|
+
if (primaryDomains.error) {
|
|
48
|
+
console.debug(primaryDomains.error);
|
|
49
|
+
}
|
|
50
|
+
return (primaryDomains === null || primaryDomains === void 0 ? void 0 : primaryDomains.primaryDomain) || undefined;
|
|
51
|
+
}
|
|
52
|
+
function isAzeroDomain(input) {
|
|
53
|
+
return input.includes(AZERO_ID_SUFFIX) || input.includes(TZERO_ID_SUFFIX);
|
|
54
|
+
}
|
|
@@ -92,23 +92,33 @@ function validateRelayBondingCondition(chainInfo, amount, selectedValidators, ad
|
|
|
92
92
|
}
|
|
93
93
|
function subscribeRelayChainStakingMetadata(chainInfo, substrateApi, callback) {
|
|
94
94
|
return substrateApi.api.query.staking.currentEra(async _currentEra => {
|
|
95
|
-
var _substrateApi$api$que, _substrateApi$api$que2, _substrateApi$api$que3, _substrateApi$api$que4, _substrateApi$api$que5, _substrateApi$api$que6;
|
|
95
|
+
var _substrateApi$api$que, _substrateApi$api$que2, _substrateApi$api$que3, _substrateApi$api$que4, _substrateApi$api$que5, _substrateApi$api$que6, _substrateApi$api$que7;
|
|
96
96
|
const currentEra = _currentEra.toString();
|
|
97
97
|
const maxNominations = substrateApi.api.consts.staking.maxNominations.toString();
|
|
98
98
|
const maxUnlockingChunks = substrateApi.api.consts.staking.maxUnlockingChunks.toString();
|
|
99
99
|
const unlockingEras = substrateApi.api.consts.staking.bondingDuration.toString();
|
|
100
|
-
const [_minNominatorBond, _minPoolJoin, _minimumActiveStake] = await Promise.all([substrateApi.api.query.staking.
|
|
100
|
+
const [_totalEraStake, _totalIssuance, _auctionCounter, _minNominatorBond, _minPoolJoin, _minimumActiveStake] = await Promise.all([substrateApi.api.query.staking.erasTotalStake(parseInt(currentEra)), substrateApi.api.query.balances.totalIssuance(), (_substrateApi$api$que = substrateApi.api.query.auctions) === null || _substrateApi$api$que === void 0 ? void 0 : _substrateApi$api$que.auctionCounter(), substrateApi.api.query.staking.minNominatorBond(), (_substrateApi$api$que2 = substrateApi.api.query) === null || _substrateApi$api$que2 === void 0 ? void 0 : (_substrateApi$api$que3 = _substrateApi$api$que2.nominationPools) === null || _substrateApi$api$que3 === void 0 ? void 0 : _substrateApi$api$que3.minJoinBond(), ((_substrateApi$api$que4 = substrateApi.api.query) === null || _substrateApi$api$que4 === void 0 ? void 0 : (_substrateApi$api$que5 = _substrateApi$api$que4.staking) === null || _substrateApi$api$que5 === void 0 ? void 0 : _substrateApi$api$que5.minimumActiveStake) && ((_substrateApi$api$que6 = substrateApi.api.query) === null || _substrateApi$api$que6 === void 0 ? void 0 : (_substrateApi$api$que7 = _substrateApi$api$que6.staking) === null || _substrateApi$api$que7 === void 0 ? void 0 : _substrateApi$api$que7.minimumActiveStake())]);
|
|
101
101
|
const minActiveStake = (_minimumActiveStake === null || _minimumActiveStake === void 0 ? void 0 : _minimumActiveStake.toString()) || '0';
|
|
102
102
|
const minNominatorBond = _minNominatorBond.toString();
|
|
103
103
|
const bnMinActiveStake = new _util.BN(minActiveStake);
|
|
104
104
|
const bnMinNominatorBond = new _util.BN(minNominatorBond);
|
|
105
105
|
const minStake = bnMinActiveStake.gt(bnMinNominatorBond) ? bnMinActiveStake : bnMinNominatorBond;
|
|
106
|
+
const rawTotalEraStake = _totalEraStake.toString();
|
|
107
|
+
const rawTotalIssuance = _totalIssuance.toString();
|
|
108
|
+
const numAuctions = _auctionCounter ? _auctionCounter.toHuman() : 0;
|
|
109
|
+
const bnTotalEraStake = new _util.BN(rawTotalEraStake);
|
|
110
|
+
const bnTotalIssuance = new _util.BN(rawTotalIssuance);
|
|
111
|
+
const inflation = (0, _utils.calculateInflation)(bnTotalEraStake, bnTotalIssuance, numAuctions, chainInfo.slug);
|
|
112
|
+
const expectedReturn = (0, _utils.calculateChainStakedReturn)(inflation, bnTotalEraStake, bnTotalIssuance, chainInfo.slug);
|
|
106
113
|
const minPoolJoin = (_minPoolJoin === null || _minPoolJoin === void 0 ? void 0 : _minPoolJoin.toString()) || undefined;
|
|
107
114
|
const unlockingPeriod = parseInt(unlockingEras) * (_constants._STAKING_ERA_LENGTH_MAP[chainInfo.slug] || _constants._STAKING_ERA_LENGTH_MAP.default); // in hours
|
|
108
115
|
|
|
109
116
|
callback(chainInfo.slug, {
|
|
110
117
|
chain: chainInfo.slug,
|
|
111
118
|
type: _KoniTypes.StakingType.NOMINATED,
|
|
119
|
+
expectedReturn: !_constants._STAKING_CHAIN_GROUP.ternoa.includes(chainInfo.slug) ? expectedReturn : undefined,
|
|
120
|
+
// in %, annually
|
|
121
|
+
inflation,
|
|
112
122
|
era: parseInt(currentEra),
|
|
113
123
|
minStake: minStake.toString(),
|
|
114
124
|
maxValidatorPerNominator: parseInt(maxNominations),
|
|
@@ -15,6 +15,7 @@ var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
|
15
15
|
var _TransactionWarning = require("@subwallet/extension-base/background/warnings/TransactionWarning");
|
|
16
16
|
var _constants = require("@subwallet/extension-base/constants");
|
|
17
17
|
var _defaults = require("@subwallet/extension-base/defaults");
|
|
18
|
+
var _domain = require("@subwallet/extension-base/koni/api/dotsama/domain");
|
|
18
19
|
var _parseTransaction = require("@subwallet/extension-base/koni/api/dotsama/parseTransaction");
|
|
19
20
|
var _transfer = require("@subwallet/extension-base/koni/api/dotsama/transfer");
|
|
20
21
|
var _transfer2 = require("@subwallet/extension-base/koni/api/nft/transfer");
|
|
@@ -3494,6 +3495,14 @@ class KoniExtension {
|
|
|
3494
3495
|
specVersion
|
|
3495
3496
|
};
|
|
3496
3497
|
}
|
|
3498
|
+
async resolveDomainByAddress(request) {
|
|
3499
|
+
const chainApi = this.#koniState.getSubstrateApi(request.chain);
|
|
3500
|
+
return await (0, _domain.resolveAzeroDomainToAddress)(request.domain, request.chain, chainApi.api);
|
|
3501
|
+
}
|
|
3502
|
+
async resolveAddressByDomain(request) {
|
|
3503
|
+
const chainApi = this.#koniState.getSubstrateApi(request.chain);
|
|
3504
|
+
return await (0, _domain.resolveAzeroAddressToDomain)(request.address, request.chain, chainApi.api);
|
|
3505
|
+
}
|
|
3497
3506
|
|
|
3498
3507
|
// --------------------------------------------------------------
|
|
3499
3508
|
// eslint-disable-next-line @typescript-eslint/require-await
|
|
@@ -3701,6 +3710,10 @@ class KoniExtension {
|
|
|
3701
3710
|
// Subscribe address
|
|
3702
3711
|
case 'pri(accounts.subscribeAddresses)':
|
|
3703
3712
|
return this.subscribeAddresses(id, port);
|
|
3713
|
+
case 'pri(accounts.resolveDomainToAddress)':
|
|
3714
|
+
return await this.resolveDomainByAddress(request);
|
|
3715
|
+
case 'pri(accounts.resolveAddressToDomain)':
|
|
3716
|
+
return await this.resolveAddressByDomain(request);
|
|
3704
3717
|
|
|
3705
3718
|
// ChainService
|
|
3706
3719
|
case 'pri(chainService.subscribeChainInfoMap)':
|
|
@@ -864,6 +864,9 @@ class KoniState {
|
|
|
864
864
|
removeCustomChain(networkKey) {
|
|
865
865
|
return this.chainService.removeCustomChain(networkKey);
|
|
866
866
|
}
|
|
867
|
+
forceRemoveChain(networkKey) {
|
|
868
|
+
this.chainService.forceRemoveChain(networkKey);
|
|
869
|
+
}
|
|
867
870
|
|
|
868
871
|
// TODO: avoids turning off chains related to ledger account
|
|
869
872
|
getDefaultNetworkKeys = () => {
|
|
@@ -132,7 +132,9 @@ class KoniSubscription {
|
|
|
132
132
|
maxWithdrawalRequestPerValidator: rs.maxWithdrawalRequestPerValidator,
|
|
133
133
|
// by default
|
|
134
134
|
allowCancelUnstaking: rs.allowCancelUnstaking,
|
|
135
|
-
unstakingPeriod: rs.unstakingPeriod
|
|
135
|
+
unstakingPeriod: rs.unstakingPeriod,
|
|
136
|
+
expectedReturn: rs.expectedReturn,
|
|
137
|
+
inflation: rs.inflation
|
|
136
138
|
});
|
|
137
139
|
});
|
|
138
140
|
if (onlyRunOnFirstTime) {
|
package/cjs/packageInfo.js
CHANGED
|
@@ -58,7 +58,7 @@ class SubstrateApi {
|
|
|
58
58
|
return new _api2.WsProvider(apiUrl, _constants.API_AUTO_CONNECT_MS, {}, _constants.API_CONNECT_TIMEOUT);
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
-
createApi(provider) {
|
|
61
|
+
createApi(provider, externalApiPromise) {
|
|
62
62
|
const apiOption = {
|
|
63
63
|
provider,
|
|
64
64
|
typesBundle: _api3.typesBundle,
|
|
@@ -72,7 +72,9 @@ class SubstrateApi {
|
|
|
72
72
|
}
|
|
73
73
|
this.updateConnectionStatus(_types2._ChainConnectionStatus.CONNECTING);
|
|
74
74
|
let api;
|
|
75
|
-
if (
|
|
75
|
+
if (externalApiPromise) {
|
|
76
|
+
api = externalApiPromise;
|
|
77
|
+
} else if (_constants._API_OPTIONS_CHAIN_GROUP.acala.includes(this.chainSlug)) {
|
|
76
78
|
api = new _api2.ApiPromise((0, _api.options)({
|
|
77
79
|
provider
|
|
78
80
|
}));
|
|
@@ -83,7 +85,7 @@ class SubstrateApi {
|
|
|
83
85
|
types: _types.types
|
|
84
86
|
});
|
|
85
87
|
} else if (_constants._API_OPTIONS_CHAIN_GROUP.avail.includes(this.chainSlug)) {
|
|
86
|
-
|
|
88
|
+
api = new _api2.ApiPromise({
|
|
87
89
|
provider,
|
|
88
90
|
rpc: _availJsSdk.spec.rpc,
|
|
89
91
|
types: _availJsSdk.spec.types,
|
|
@@ -110,7 +112,7 @@ class SubstrateApi {
|
|
|
110
112
|
this.registry = new _create.TypeRegistry();
|
|
111
113
|
this.metadata = metadata;
|
|
112
114
|
this.provider = this.createProvider(apiUrl);
|
|
113
|
-
this.api =
|
|
115
|
+
this.api = this.createApi(this.provider, externalApiPromise);
|
|
114
116
|
this.handleApiReady = (0, _promise.createPromiseHandler)();
|
|
115
117
|
}
|
|
116
118
|
get isReady() {
|
|
@@ -293,11 +293,29 @@ class ChainService {
|
|
|
293
293
|
}
|
|
294
294
|
|
|
295
295
|
// Setter
|
|
296
|
-
|
|
296
|
+
forceRemoveChain(slug) {
|
|
297
297
|
if (this.lockChainInfoMap) {
|
|
298
298
|
return false;
|
|
299
299
|
}
|
|
300
|
+
const chainInfoMap = this.getChainInfoMap();
|
|
301
|
+
const chainStateMap = this.getChainStateMap();
|
|
302
|
+
if (!(slug in chainInfoMap)) {
|
|
303
|
+
return false;
|
|
304
|
+
}
|
|
300
305
|
this.lockChainInfoMap = true;
|
|
306
|
+
delete chainStateMap[slug];
|
|
307
|
+
delete chainInfoMap[slug];
|
|
308
|
+
this.deleteAssetsByChain(slug);
|
|
309
|
+
this.dbService.removeFromChainStore([slug]).catch(console.error);
|
|
310
|
+
this.updateChainSubscription();
|
|
311
|
+
this.lockChainInfoMap = false;
|
|
312
|
+
this.eventService.emit('chain.updateState', slug);
|
|
313
|
+
return true;
|
|
314
|
+
}
|
|
315
|
+
removeCustomChain(slug) {
|
|
316
|
+
if (this.lockChainInfoMap) {
|
|
317
|
+
return false;
|
|
318
|
+
}
|
|
301
319
|
const chainInfoMap = this.getChainInfoMap();
|
|
302
320
|
const chainStateMap = this.getChainStateMap();
|
|
303
321
|
if (!(slug in chainInfoMap)) {
|
|
@@ -309,6 +327,7 @@ class ChainService {
|
|
|
309
327
|
if (chainStateMap[slug].active) {
|
|
310
328
|
return false;
|
|
311
329
|
}
|
|
330
|
+
this.lockChainInfoMap = true;
|
|
312
331
|
delete chainStateMap[slug];
|
|
313
332
|
delete chainInfoMap[slug];
|
|
314
333
|
this.deleteAssetsByChain(slug);
|
|
@@ -428,7 +447,6 @@ class ChainService {
|
|
|
428
447
|
|
|
429
448
|
// Avoid unnecessary update in case disable chain
|
|
430
449
|
if (currentStatus !== status) {
|
|
431
|
-
console.log(chainInfo.name, currentStatus, status);
|
|
432
450
|
this.setChainConnectionStatus(chainInfo.slug, status);
|
|
433
451
|
this.updateChainStateMapSubscription();
|
|
434
452
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
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 DeleteChain extends _Base.default {
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
14
|
+
async run() {
|
|
15
|
+
['snow', 'snow_evm', 'arctic_testnet'].forEach(chain => {
|
|
16
|
+
this.state.forceRemoveChain(chain);
|
|
17
|
+
});
|
|
18
|
+
console.log('done job');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.default = DeleteChain;
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = exports.EVERYTIME = void 0;
|
|
8
|
+
var _DeleteChain = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/DeleteChain"));
|
|
8
9
|
var _AutoEnableChainsTokens = _interopRequireDefault(require("./AutoEnableChainsTokens"));
|
|
9
10
|
var _MigrateAuthUrls = _interopRequireDefault(require("./MigrateAuthUrls"));
|
|
10
11
|
var _MigrateAutoLock = _interopRequireDefault(require("./MigrateAutoLock"));
|
|
@@ -32,7 +33,8 @@ var _default = {
|
|
|
32
33
|
'1.0.3-02': _MigrateChainPatrol.default,
|
|
33
34
|
'1.0.9-01': _MigrateLedgerAccount.default,
|
|
34
35
|
'1.0.12-02': _MigrateEthProvider.default,
|
|
35
|
-
'1.1.6-01': _MigrateWalletReference.default
|
|
36
|
+
'1.1.6-01': _MigrateWalletReference.default,
|
|
37
|
+
'1.1.7': _DeleteChain.default
|
|
36
38
|
// [`${EVERYTIME}-1`]: AutoEnableChainsTokens
|
|
37
39
|
};
|
|
38
40
|
exports.default = _default;
|
|
@@ -18,6 +18,9 @@ function getBlockExplorerAccountRoute(explorerLink) {
|
|
|
18
18
|
if (explorerLink.includes('explorer.subspace.network')) {
|
|
19
19
|
return 'accounts';
|
|
20
20
|
}
|
|
21
|
+
if (explorerLink.includes('deeperscan.io')) {
|
|
22
|
+
return 'account';
|
|
23
|
+
}
|
|
21
24
|
if (explorerLink.includes('subscan.io')) {
|
|
22
25
|
return 'account';
|
|
23
26
|
}
|
|
@@ -27,7 +30,7 @@ function getBlockExplorerTxRoute(chainInfo) {
|
|
|
27
30
|
if ((0, _utils._isPureEvmChain)(chainInfo)) {
|
|
28
31
|
return 'tx';
|
|
29
32
|
}
|
|
30
|
-
if (['aventus'].includes(chainInfo.slug)) {
|
|
33
|
+
if (['aventus', 'deeper_network'].includes(chainInfo.slug)) {
|
|
31
34
|
return 'transaction';
|
|
32
35
|
}
|
|
33
36
|
return 'extrinsic';
|
|
@@ -172,6 +172,7 @@ class WalletConnectService {
|
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
await (0, _classPrivateFieldLooseBase2.default)(this, _initClient)[_initClient]();
|
|
175
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _updateSessions)[_updateSessions]();
|
|
175
176
|
}
|
|
176
177
|
async disconnect(topic) {
|
|
177
178
|
var _classPrivateFieldLoo13;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ApiPromise } from '@polkadot/api';
|
|
2
|
+
export declare const ENS_SUFFIX = ".eth";
|
|
3
|
+
export declare const TZERO_ID_SUFFIX = ".tzero";
|
|
4
|
+
export declare const AZERO_ID_SUFFIX = ".azero";
|
|
5
|
+
export declare const SUPPORTED_DOMAIN_SUFFIX: string[];
|
|
6
|
+
export declare const CHAINS_SUPPORTED_DOMAIN: string[];
|
|
7
|
+
export declare function resolveAzeroDomainToAddress(domain: string, chain: string, api: ApiPromise): Promise<string | undefined>;
|
|
8
|
+
export declare function resolveAzeroAddressToDomain(address: string, chain: string, api: ApiPromise): Promise<string | undefined>;
|
|
9
|
+
export declare function isAzeroDomain(input: string): boolean;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { resolveAddressToDomain, resolveDomainToAddress, SupportedChainId } from '@azns/resolver-core';
|
|
5
|
+
export const ENS_SUFFIX = '.eth';
|
|
6
|
+
export const TZERO_ID_SUFFIX = '.tzero';
|
|
7
|
+
export const AZERO_ID_SUFFIX = '.azero';
|
|
8
|
+
export const SUPPORTED_DOMAIN_SUFFIX = [ENS_SUFFIX, TZERO_ID_SUFFIX, AZERO_ID_SUFFIX];
|
|
9
|
+
export const CHAINS_SUPPORTED_DOMAIN = ['aleph', 'alephTest'];
|
|
10
|
+
export async function resolveAzeroDomainToAddress(domain, chain, api) {
|
|
11
|
+
let chainId = SupportedChainId.AlephZero;
|
|
12
|
+
if (chain === 'alephTest') {
|
|
13
|
+
chainId = SupportedChainId.AlephZeroTestnet;
|
|
14
|
+
}
|
|
15
|
+
const primaryDomains = await resolveDomainToAddress(domain, {
|
|
16
|
+
chainId,
|
|
17
|
+
customApi: api
|
|
18
|
+
});
|
|
19
|
+
if (primaryDomains.error) {
|
|
20
|
+
console.debug(primaryDomains.error);
|
|
21
|
+
}
|
|
22
|
+
return (primaryDomains === null || primaryDomains === void 0 ? void 0 : primaryDomains.address) || undefined;
|
|
23
|
+
}
|
|
24
|
+
export async function resolveAzeroAddressToDomain(address, chain, api) {
|
|
25
|
+
let chainId = SupportedChainId.AlephZero;
|
|
26
|
+
if (chain === 'alephTest') {
|
|
27
|
+
chainId = SupportedChainId.AlephZeroTestnet;
|
|
28
|
+
}
|
|
29
|
+
const primaryDomains = await resolveAddressToDomain(address, {
|
|
30
|
+
chainId,
|
|
31
|
+
customApi: api
|
|
32
|
+
});
|
|
33
|
+
if (primaryDomains.error) {
|
|
34
|
+
console.debug(primaryDomains.error);
|
|
35
|
+
}
|
|
36
|
+
return (primaryDomains === null || primaryDomains === void 0 ? void 0 : primaryDomains.primaryDomain) || undefined;
|
|
37
|
+
}
|
|
38
|
+
export function isAzeroDomain(input) {
|
|
39
|
+
return input.includes(AZERO_ID_SUFFIX) || input.includes(TZERO_ID_SUFFIX);
|
|
40
|
+
}
|
|
@@ -68,23 +68,33 @@ export function validateRelayBondingCondition(chainInfo, amount, selectedValidat
|
|
|
68
68
|
}
|
|
69
69
|
export function subscribeRelayChainStakingMetadata(chainInfo, substrateApi, callback) {
|
|
70
70
|
return substrateApi.api.query.staking.currentEra(async _currentEra => {
|
|
71
|
-
var _substrateApi$api$que, _substrateApi$api$que2, _substrateApi$api$que3, _substrateApi$api$que4, _substrateApi$api$que5, _substrateApi$api$que6;
|
|
71
|
+
var _substrateApi$api$que, _substrateApi$api$que2, _substrateApi$api$que3, _substrateApi$api$que4, _substrateApi$api$que5, _substrateApi$api$que6, _substrateApi$api$que7;
|
|
72
72
|
const currentEra = _currentEra.toString();
|
|
73
73
|
const maxNominations = substrateApi.api.consts.staking.maxNominations.toString();
|
|
74
74
|
const maxUnlockingChunks = substrateApi.api.consts.staking.maxUnlockingChunks.toString();
|
|
75
75
|
const unlockingEras = substrateApi.api.consts.staking.bondingDuration.toString();
|
|
76
|
-
const [_minNominatorBond, _minPoolJoin, _minimumActiveStake] = await Promise.all([substrateApi.api.query.staking.
|
|
76
|
+
const [_totalEraStake, _totalIssuance, _auctionCounter, _minNominatorBond, _minPoolJoin, _minimumActiveStake] = await Promise.all([substrateApi.api.query.staking.erasTotalStake(parseInt(currentEra)), substrateApi.api.query.balances.totalIssuance(), (_substrateApi$api$que = substrateApi.api.query.auctions) === null || _substrateApi$api$que === void 0 ? void 0 : _substrateApi$api$que.auctionCounter(), substrateApi.api.query.staking.minNominatorBond(), (_substrateApi$api$que2 = substrateApi.api.query) === null || _substrateApi$api$que2 === void 0 ? void 0 : (_substrateApi$api$que3 = _substrateApi$api$que2.nominationPools) === null || _substrateApi$api$que3 === void 0 ? void 0 : _substrateApi$api$que3.minJoinBond(), ((_substrateApi$api$que4 = substrateApi.api.query) === null || _substrateApi$api$que4 === void 0 ? void 0 : (_substrateApi$api$que5 = _substrateApi$api$que4.staking) === null || _substrateApi$api$que5 === void 0 ? void 0 : _substrateApi$api$que5.minimumActiveStake) && ((_substrateApi$api$que6 = substrateApi.api.query) === null || _substrateApi$api$que6 === void 0 ? void 0 : (_substrateApi$api$que7 = _substrateApi$api$que6.staking) === null || _substrateApi$api$que7 === void 0 ? void 0 : _substrateApi$api$que7.minimumActiveStake())]);
|
|
77
77
|
const minActiveStake = (_minimumActiveStake === null || _minimumActiveStake === void 0 ? void 0 : _minimumActiveStake.toString()) || '0';
|
|
78
78
|
const minNominatorBond = _minNominatorBond.toString();
|
|
79
79
|
const bnMinActiveStake = new BN(minActiveStake);
|
|
80
80
|
const bnMinNominatorBond = new BN(minNominatorBond);
|
|
81
81
|
const minStake = bnMinActiveStake.gt(bnMinNominatorBond) ? bnMinActiveStake : bnMinNominatorBond;
|
|
82
|
+
const rawTotalEraStake = _totalEraStake.toString();
|
|
83
|
+
const rawTotalIssuance = _totalIssuance.toString();
|
|
84
|
+
const numAuctions = _auctionCounter ? _auctionCounter.toHuman() : 0;
|
|
85
|
+
const bnTotalEraStake = new BN(rawTotalEraStake);
|
|
86
|
+
const bnTotalIssuance = new BN(rawTotalIssuance);
|
|
87
|
+
const inflation = calculateInflation(bnTotalEraStake, bnTotalIssuance, numAuctions, chainInfo.slug);
|
|
88
|
+
const expectedReturn = calculateChainStakedReturn(inflation, bnTotalEraStake, bnTotalIssuance, chainInfo.slug);
|
|
82
89
|
const minPoolJoin = (_minPoolJoin === null || _minPoolJoin === void 0 ? void 0 : _minPoolJoin.toString()) || undefined;
|
|
83
90
|
const unlockingPeriod = parseInt(unlockingEras) * (_STAKING_ERA_LENGTH_MAP[chainInfo.slug] || _STAKING_ERA_LENGTH_MAP.default); // in hours
|
|
84
91
|
|
|
85
92
|
callback(chainInfo.slug, {
|
|
86
93
|
chain: chainInfo.slug,
|
|
87
94
|
type: StakingType.NOMINATED,
|
|
95
|
+
expectedReturn: !_STAKING_CHAIN_GROUP.ternoa.includes(chainInfo.slug) ? expectedReturn : undefined,
|
|
96
|
+
// in %, annually
|
|
97
|
+
inflation,
|
|
88
98
|
era: parseInt(currentEra),
|
|
89
99
|
minStake: minStake.toString(),
|
|
90
100
|
maxValidatorPerNominator: parseInt(maxNominations),
|
|
@@ -207,5 +207,7 @@ export default class KoniExtension {
|
|
|
207
207
|
private subscribeMantaPayConfig;
|
|
208
208
|
private subscribeMantaPaySyncState;
|
|
209
209
|
private findRawMetadata;
|
|
210
|
+
private resolveDomainByAddress;
|
|
211
|
+
private resolveAddressByDomain;
|
|
210
212
|
handle<TMessageType extends MessageTypes>(id: string, type: TMessageType, request: RequestTypes[TMessageType], port: chrome.runtime.Port): Promise<ResponseType<TMessageType>>;
|
|
211
213
|
}
|
|
@@ -11,6 +11,7 @@ import { AccountExternalErrorCode, BasicTxErrorType, BasicTxWarningCode, ChainTy
|
|
|
11
11
|
import { TransactionWarning } from '@subwallet/extension-base/background/warnings/TransactionWarning';
|
|
12
12
|
import { ALL_ACCOUNT_KEY, ALL_GENESIS_HASH, XCM_MIN_AMOUNT_RATIO } from '@subwallet/extension-base/constants';
|
|
13
13
|
import { ALLOWED_PATH } from '@subwallet/extension-base/defaults';
|
|
14
|
+
import { resolveAzeroAddressToDomain, resolveAzeroDomainToAddress } from '@subwallet/extension-base/koni/api/dotsama/domain';
|
|
14
15
|
import { parseSubstrateTransaction } from '@subwallet/extension-base/koni/api/dotsama/parseTransaction';
|
|
15
16
|
import { checkReferenceCount, checkSupportTransfer, createTransferExtrinsic } from '@subwallet/extension-base/koni/api/dotsama/transfer';
|
|
16
17
|
import { getNftTransferExtrinsic, isRecipientSelf } from '@subwallet/extension-base/koni/api/nft/transfer';
|
|
@@ -3395,6 +3396,14 @@ export default class KoniExtension {
|
|
|
3395
3396
|
specVersion
|
|
3396
3397
|
};
|
|
3397
3398
|
}
|
|
3399
|
+
async resolveDomainByAddress(request) {
|
|
3400
|
+
const chainApi = this.#koniState.getSubstrateApi(request.chain);
|
|
3401
|
+
return await resolveAzeroDomainToAddress(request.domain, request.chain, chainApi.api);
|
|
3402
|
+
}
|
|
3403
|
+
async resolveAddressByDomain(request) {
|
|
3404
|
+
const chainApi = this.#koniState.getSubstrateApi(request.chain);
|
|
3405
|
+
return await resolveAzeroAddressToDomain(request.address, request.chain, chainApi.api);
|
|
3406
|
+
}
|
|
3398
3407
|
|
|
3399
3408
|
// --------------------------------------------------------------
|
|
3400
3409
|
// eslint-disable-next-line @typescript-eslint/require-await
|
|
@@ -3602,6 +3611,10 @@ export default class KoniExtension {
|
|
|
3602
3611
|
// Subscribe address
|
|
3603
3612
|
case 'pri(accounts.subscribeAddresses)':
|
|
3604
3613
|
return this.subscribeAddresses(id, port);
|
|
3614
|
+
case 'pri(accounts.resolveDomainToAddress)':
|
|
3615
|
+
return await this.resolveDomainByAddress(request);
|
|
3616
|
+
case 'pri(accounts.resolveAddressToDomain)':
|
|
3617
|
+
return await this.resolveAddressByDomain(request);
|
|
3605
3618
|
|
|
3606
3619
|
// ChainService
|
|
3607
3620
|
case 'pri(chainService.subscribeChainInfoMap)':
|
|
@@ -183,6 +183,7 @@ export default class KoniState {
|
|
|
183
183
|
getActiveChainInfoMap(): Record<string, _ChainInfo>;
|
|
184
184
|
upsertChainInfo(data: _NetworkUpsertParams): Promise<boolean>;
|
|
185
185
|
removeCustomChain(networkKey: string): boolean;
|
|
186
|
+
forceRemoveChain(networkKey: string): void;
|
|
186
187
|
private getDefaultNetworkKeys;
|
|
187
188
|
disableChain(chainSlug: string): Promise<boolean>;
|
|
188
189
|
enableChain(chainSlug: string, enableTokens?: boolean): Promise<boolean>;
|
|
@@ -848,6 +848,9 @@ export default class KoniState {
|
|
|
848
848
|
removeCustomChain(networkKey) {
|
|
849
849
|
return this.chainService.removeCustomChain(networkKey);
|
|
850
850
|
}
|
|
851
|
+
forceRemoveChain(networkKey) {
|
|
852
|
+
this.chainService.forceRemoveChain(networkKey);
|
|
853
|
+
}
|
|
851
854
|
|
|
852
855
|
// TODO: avoids turning off chains related to ledger account
|
|
853
856
|
getDefaultNetworkKeys = () => {
|
|
@@ -126,7 +126,9 @@ export class KoniSubscription {
|
|
|
126
126
|
maxWithdrawalRequestPerValidator: rs.maxWithdrawalRequestPerValidator,
|
|
127
127
|
// by default
|
|
128
128
|
allowCancelUnstaking: rs.allowCancelUnstaking,
|
|
129
|
-
unstakingPeriod: rs.unstakingPeriod
|
|
129
|
+
unstakingPeriod: rs.unstakingPeriod,
|
|
130
|
+
expectedReturn: rs.expectedReturn,
|
|
131
|
+
inflation: rs.inflation
|
|
130
132
|
});
|
|
131
133
|
});
|
|
132
134
|
if (onlyRunOnFirstTime) {
|
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.8-0",
|
|
21
21
|
"main": "./cjs/index.js",
|
|
22
22
|
"module": "./index.js",
|
|
23
23
|
"types": "./index.d.ts",
|
|
@@ -169,6 +169,11 @@
|
|
|
169
169
|
"require": "./cjs/koni/api/dotsama/crowdloan.js",
|
|
170
170
|
"default": "./koni/api/dotsama/crowdloan.js"
|
|
171
171
|
},
|
|
172
|
+
"./koni/api/dotsama/domain": {
|
|
173
|
+
"types": "./koni/api/dotsama/domain.d.ts",
|
|
174
|
+
"require": "./cjs/koni/api/dotsama/domain.js",
|
|
175
|
+
"default": "./koni/api/dotsama/domain.js"
|
|
176
|
+
},
|
|
172
177
|
"./koni/api/dotsama/parseTransaction": {
|
|
173
178
|
"types": "./koni/api/dotsama/parseTransaction.d.ts",
|
|
174
179
|
"require": "./cjs/koni/api/dotsama/parseTransaction.js",
|
|
@@ -650,6 +655,11 @@
|
|
|
650
655
|
"require": "./cjs/services/migration-service/scripts/ClearOldStorage.js",
|
|
651
656
|
"default": "./services/migration-service/scripts/ClearOldStorage.js"
|
|
652
657
|
},
|
|
658
|
+
"./services/migration-service/scripts/DeleteChain": {
|
|
659
|
+
"types": "./services/migration-service/scripts/DeleteChain.d.ts",
|
|
660
|
+
"require": "./cjs/services/migration-service/scripts/DeleteChain.js",
|
|
661
|
+
"default": "./services/migration-service/scripts/DeleteChain.js"
|
|
662
|
+
},
|
|
653
663
|
"./services/migration-service/scripts/MigrateAuthUrls": {
|
|
654
664
|
"types": "./services/migration-service/scripts/MigrateAuthUrls.d.ts",
|
|
655
665
|
"require": "./cjs/services/migration-service/scripts/MigrateAuthUrls.js",
|
|
@@ -1164,6 +1174,7 @@
|
|
|
1164
1174
|
"dependencies": {
|
|
1165
1175
|
"@acala-network/api": "^5.0.2",
|
|
1166
1176
|
"@apollo/client": "^3.7.14",
|
|
1177
|
+
"@azns/resolver-core": "^1.2.0",
|
|
1167
1178
|
"@equilab/api": "^1.14.25",
|
|
1168
1179
|
"@ethereumjs/common": "^2.6.5",
|
|
1169
1180
|
"@ethereumjs/tx": "^4.0.2",
|
|
@@ -1188,11 +1199,11 @@
|
|
|
1188
1199
|
"@reduxjs/toolkit": "^1.9.1",
|
|
1189
1200
|
"@sora-substrate/type-definitions": "^1.17.7",
|
|
1190
1201
|
"@substrate/connect": "^0.7.26",
|
|
1191
|
-
"@subwallet/chain-list": "0.2.
|
|
1192
|
-
"@subwallet/extension-base": "^1.1.
|
|
1193
|
-
"@subwallet/extension-chains": "^1.1.
|
|
1194
|
-
"@subwallet/extension-dapp": "^1.1.
|
|
1195
|
-
"@subwallet/extension-inject": "^1.1.
|
|
1202
|
+
"@subwallet/chain-list": "0.2.10",
|
|
1203
|
+
"@subwallet/extension-base": "^1.1.8-0",
|
|
1204
|
+
"@subwallet/extension-chains": "^1.1.8-0",
|
|
1205
|
+
"@subwallet/extension-dapp": "^1.1.8-0",
|
|
1206
|
+
"@subwallet/extension-inject": "^1.1.8-0",
|
|
1196
1207
|
"@subwallet/keyring": "^0.0.10",
|
|
1197
1208
|
"@subwallet/ui-keyring": "^0.0.10",
|
|
1198
1209
|
"@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.8-0'
|
|
11
11
|
};
|
|
@@ -52,7 +52,7 @@ export class SubstrateApi {
|
|
|
52
52
|
return new WsProvider(apiUrl, API_AUTO_CONNECT_MS, {}, API_CONNECT_TIMEOUT);
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
-
createApi(provider) {
|
|
55
|
+
createApi(provider, externalApiPromise) {
|
|
56
56
|
const apiOption = {
|
|
57
57
|
provider,
|
|
58
58
|
typesBundle,
|
|
@@ -66,7 +66,9 @@ export class SubstrateApi {
|
|
|
66
66
|
}
|
|
67
67
|
this.updateConnectionStatus(_ChainConnectionStatus.CONNECTING);
|
|
68
68
|
let api;
|
|
69
|
-
if (
|
|
69
|
+
if (externalApiPromise) {
|
|
70
|
+
api = externalApiPromise;
|
|
71
|
+
} else if (_API_OPTIONS_CHAIN_GROUP.acala.includes(this.chainSlug)) {
|
|
70
72
|
api = new ApiPromise(acalaOptions({
|
|
71
73
|
provider
|
|
72
74
|
}));
|
|
@@ -77,7 +79,7 @@ export class SubstrateApi {
|
|
|
77
79
|
types: oakTypes
|
|
78
80
|
});
|
|
79
81
|
} else if (_API_OPTIONS_CHAIN_GROUP.avail.includes(this.chainSlug)) {
|
|
80
|
-
|
|
82
|
+
api = new ApiPromise({
|
|
81
83
|
provider,
|
|
82
84
|
rpc: availSpec.rpc,
|
|
83
85
|
types: availSpec.types,
|
|
@@ -103,7 +105,7 @@ export class SubstrateApi {
|
|
|
103
105
|
this.registry = new TypeRegistry();
|
|
104
106
|
this.metadata = metadata;
|
|
105
107
|
this.provider = this.createProvider(apiUrl);
|
|
106
|
-
this.api =
|
|
108
|
+
this.api = this.createApi(this.provider, externalApiPromise);
|
|
107
109
|
this.handleApiReady = createPromiseHandler();
|
|
108
110
|
}
|
|
109
111
|
get isReady() {
|
|
@@ -61,6 +61,7 @@ export declare class ChainService {
|
|
|
61
61
|
getXcmEqualAssetByChain(destinationChainSlug: string, originTokenSlug: string): _ChainAsset | undefined;
|
|
62
62
|
getAssetByChainAndType(chainSlug: string, assetTypes: _AssetType[]): Record<string, _ChainAsset>;
|
|
63
63
|
getSmartContractNfts(): _ChainAsset[];
|
|
64
|
+
forceRemoveChain(slug: string): boolean;
|
|
64
65
|
removeCustomChain(slug: string): boolean;
|
|
65
66
|
resetChainInfoMap(excludedChains?: string[]): boolean;
|
|
66
67
|
setChainConnectionStatus(slug: string, connectionStatus: _ChainConnectionStatus): void;
|
|
@@ -279,11 +279,29 @@ export class ChainService {
|
|
|
279
279
|
}
|
|
280
280
|
|
|
281
281
|
// Setter
|
|
282
|
-
|
|
282
|
+
forceRemoveChain(slug) {
|
|
283
283
|
if (this.lockChainInfoMap) {
|
|
284
284
|
return false;
|
|
285
285
|
}
|
|
286
|
+
const chainInfoMap = this.getChainInfoMap();
|
|
287
|
+
const chainStateMap = this.getChainStateMap();
|
|
288
|
+
if (!(slug in chainInfoMap)) {
|
|
289
|
+
return false;
|
|
290
|
+
}
|
|
286
291
|
this.lockChainInfoMap = true;
|
|
292
|
+
delete chainStateMap[slug];
|
|
293
|
+
delete chainInfoMap[slug];
|
|
294
|
+
this.deleteAssetsByChain(slug);
|
|
295
|
+
this.dbService.removeFromChainStore([slug]).catch(console.error);
|
|
296
|
+
this.updateChainSubscription();
|
|
297
|
+
this.lockChainInfoMap = false;
|
|
298
|
+
this.eventService.emit('chain.updateState', slug);
|
|
299
|
+
return true;
|
|
300
|
+
}
|
|
301
|
+
removeCustomChain(slug) {
|
|
302
|
+
if (this.lockChainInfoMap) {
|
|
303
|
+
return false;
|
|
304
|
+
}
|
|
287
305
|
const chainInfoMap = this.getChainInfoMap();
|
|
288
306
|
const chainStateMap = this.getChainStateMap();
|
|
289
307
|
if (!(slug in chainInfoMap)) {
|
|
@@ -295,6 +313,7 @@ export class ChainService {
|
|
|
295
313
|
if (chainStateMap[slug].active) {
|
|
296
314
|
return false;
|
|
297
315
|
}
|
|
316
|
+
this.lockChainInfoMap = true;
|
|
298
317
|
delete chainStateMap[slug];
|
|
299
318
|
delete chainInfoMap[slug];
|
|
300
319
|
this.deleteAssetsByChain(slug);
|
|
@@ -412,7 +431,6 @@ export class ChainService {
|
|
|
412
431
|
|
|
413
432
|
// Avoid unnecessary update in case disable chain
|
|
414
433
|
if (currentStatus !== status) {
|
|
415
|
-
console.log(chainInfo.name, currentStatus, status);
|
|
416
434
|
this.setChainConnectionStatus(chainInfo.slug, status);
|
|
417
435
|
this.updateChainStateMapSubscription();
|
|
418
436
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
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 DeleteChain extends BaseMigrationJob {
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
7
|
+
async run() {
|
|
8
|
+
['snow', 'snow_evm', 'arctic_testnet'].forEach(chain => {
|
|
9
|
+
this.state.forceRemoveChain(chain);
|
|
10
|
+
});
|
|
11
|
+
console.log('done job');
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -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 DeleteChain from '@subwallet/extension-base/services/migration-service/scripts/DeleteChain';
|
|
4
5
|
import AutoEnableChainsTokens from "./AutoEnableChainsTokens.js";
|
|
5
6
|
import MigrateAuthUrls from "./MigrateAuthUrls.js";
|
|
6
7
|
import MigrateAutoLock from "./MigrateAutoLock.js";
|
|
@@ -24,6 +25,7 @@ export default {
|
|
|
24
25
|
'1.0.3-02': MigrateChainPatrol,
|
|
25
26
|
'1.0.9-01': MigrateLedgerAccount,
|
|
26
27
|
'1.0.12-02': MigrateEthProvider,
|
|
27
|
-
'1.1.6-01': MigrateWalletReference
|
|
28
|
+
'1.1.6-01': MigrateWalletReference,
|
|
29
|
+
'1.1.7': DeleteChain
|
|
28
30
|
// [`${EVERYTIME}-1`]: AutoEnableChainsTokens
|
|
29
31
|
};
|
|
@@ -12,6 +12,9 @@ function getBlockExplorerAccountRoute(explorerLink) {
|
|
|
12
12
|
if (explorerLink.includes('explorer.subspace.network')) {
|
|
13
13
|
return 'accounts';
|
|
14
14
|
}
|
|
15
|
+
if (explorerLink.includes('deeperscan.io')) {
|
|
16
|
+
return 'account';
|
|
17
|
+
}
|
|
15
18
|
if (explorerLink.includes('subscan.io')) {
|
|
16
19
|
return 'account';
|
|
17
20
|
}
|
|
@@ -21,7 +24,7 @@ function getBlockExplorerTxRoute(chainInfo) {
|
|
|
21
24
|
if (_isPureEvmChain(chainInfo)) {
|
|
22
25
|
return 'tx';
|
|
23
26
|
}
|
|
24
|
-
if (['aventus'].includes(chainInfo.slug)) {
|
|
27
|
+
if (['aventus', 'deeper_network'].includes(chainInfo.slug)) {
|
|
25
28
|
return 'transaction';
|
|
26
29
|
}
|
|
27
30
|
return 'extrinsic';
|
|
@@ -165,6 +165,7 @@ export default class WalletConnectService {
|
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
167
|
await _classPrivateFieldLooseBase(this, _initClient)[_initClient]();
|
|
168
|
+
_classPrivateFieldLooseBase(this, _updateSessions)[_updateSessions]();
|
|
168
169
|
}
|
|
169
170
|
async disconnect(topic) {
|
|
170
171
|
var _classPrivateFieldLoo13;
|