@subwallet/extension-base 1.1.38-1 → 1.1.39-beta.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 +2 -0
- package/background/types.d.ts +1 -0
- package/cjs/koni/api/dotsama/balance.js +464 -0
- package/cjs/koni/api/nft/unique_network_nft/index.js +4 -0
- package/cjs/koni/background/handlers/Extension.js +64 -13
- package/cjs/koni/background/handlers/State.js +6 -5
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/helpers/subscribe/balance.js +1 -1
- package/cjs/services/chain-service/health-check/constants/index.js +36 -0
- package/cjs/services/chain-service/health-check/utils/asset-info.js +282 -0
- package/cjs/services/chain-service/health-check/utils/chain-info.js +36 -0
- package/cjs/services/chain-service/health-check/utils/index.js +38 -0
- package/cjs/services/chain-service/health-check/utils/provider.js +186 -0
- package/cjs/services/chain-service/index.js +61 -51
- package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +42 -26
- package/cjs/services/earning-service/service.js +9 -2
- package/cjs/services/migration-service/scripts/MigrateEthProvider.js +17 -0
- package/cjs/services/migration-service/scripts/MigratePioneerProvider.js +17 -0
- package/cjs/services/migration-service/scripts/MigrateProvider.js +29 -0
- package/cjs/services/storage-service/index.js +241 -0
- package/cjs/services/transaction-service/index.js +6 -4
- package/cjs/types.js +1 -0
- package/cjs/utils/address.js +34 -0
- package/cjs/utils/eth/mergeTransactionAndSignature.js +8 -3
- package/cjs/utils/index.js +6 -5
- package/cjs/utils/keyring.js +57 -0
- package/cjs/utils/staticData/index.js +5 -5
- package/koni/api/nft/unique_network_nft/index.d.ts +1 -0
- package/koni/api/nft/unique_network_nft/index.js +5 -1
- package/koni/api/staking/bonding/utils.d.ts +0 -1
- package/koni/background/handlers/Extension.d.ts +1 -0
- package/koni/background/handlers/Extension.js +64 -13
- package/koni/background/handlers/State.js +2 -1
- package/package.json +42 -17
- package/packageInfo.js +1 -1
- package/services/balance-service/helpers/subscribe/balance.js +1 -1
- package/services/chain-service/health-check/constants/index.d.ts +4 -0
- package/services/chain-service/health-check/constants/index.js +26 -0
- package/services/chain-service/health-check/utils/asset-info.d.ts +14 -0
- package/services/chain-service/health-check/utils/asset-info.js +269 -0
- package/services/chain-service/health-check/utils/chain-info.d.ts +8 -0
- package/services/chain-service/health-check/utils/chain-info.js +28 -0
- package/services/chain-service/health-check/utils/index.d.ts +3 -0
- package/services/chain-service/health-check/utils/index.js +6 -0
- package/services/chain-service/health-check/utils/provider.d.ts +25 -0
- package/services/chain-service/health-check/utils/provider.js +172 -0
- package/services/chain-service/index.d.ts +7 -3
- package/services/chain-service/index.js +52 -43
- package/services/chain-service/types.d.ts +4 -0
- package/services/earning-service/handlers/native-staking/relay-chain.d.ts +0 -1
- package/services/earning-service/handlers/native-staking/relay-chain.js +42 -26
- package/services/earning-service/handlers/special.d.ts +0 -1
- package/services/earning-service/service.js +10 -3
- package/services/transaction-service/index.js +6 -4
- package/types/balance.d.ts +0 -1
- package/types/yield/info/pallet.d.ts +4 -1
- package/utils/eth/mergeTransactionAndSignature.js +8 -3
- package/utils/index.d.ts +1 -2
- package/utils/index.js +6 -5
- package/utils/staticData/buyServiceInfos.json +0 -1
- package/utils/staticData/buyTokenConfigs.json +0 -15
- package/utils/staticData/chains.json +192 -89
- package/utils/staticData/crowdloanFunds.json +433 -58
- package/utils/staticData/index.d.ts +1 -2
- package/utils/staticData/index.js +4 -3
- package/utils/staticData/marketingCampaigns.json +1 -298
- package/utils/staticData/termAndCondition.json +1 -1
|
@@ -913,6 +913,7 @@ export interface RequestTransferExistentialDeposit {
|
|
|
913
913
|
}
|
|
914
914
|
export interface RequestSaveRecentAccount {
|
|
915
915
|
accountId: string;
|
|
916
|
+
chain?: string;
|
|
916
917
|
}
|
|
917
918
|
export interface SubstrateNftTransaction {
|
|
918
919
|
error: boolean;
|
|
@@ -1644,6 +1645,7 @@ export interface KoniRequestSignatures {
|
|
|
1644
1645
|
'pri(bonding.nominationPool.submitUnbonding)': [RequestStakePoolingUnbonding, SWTransactionResponse];
|
|
1645
1646
|
'pri(chainService.subscribeChainInfoMap)': [null, Record<string, any>, Record<string, any>];
|
|
1646
1647
|
'pri(chainService.subscribeChainStateMap)': [null, Record<string, any>, Record<string, any>];
|
|
1648
|
+
'pri(chainService.subscribeChainStatusMap)': [null, Record<string, any>, Record<string, any>];
|
|
1647
1649
|
'pri(chainService.subscribeAssetRegistry)': [null, Record<string, any>, Record<string, any>];
|
|
1648
1650
|
'pri(chainService.subscribeMultiChainAssetMap)': [null, Record<string, _MultiChainAsset>, Record<string, _MultiChainAsset>];
|
|
1649
1651
|
'pri(chainService.subscribeXcmRefMap)': [null, Record<string, _AssetRef>, Record<string, _AssetRef>];
|
package/background/types.d.ts
CHANGED
|
@@ -47,6 +47,7 @@ export interface AccountJson extends AbstractAddressJson {
|
|
|
47
47
|
}
|
|
48
48
|
export interface AddressJson extends AbstractAddressJson {
|
|
49
49
|
isRecent?: boolean;
|
|
50
|
+
recentChainSlugs?: string[];
|
|
50
51
|
}
|
|
51
52
|
export interface AccountsWithCurrentAddress {
|
|
52
53
|
accounts: AccountJson[];
|
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.subscribeBalance = subscribeBalance;
|
|
8
|
+
exports.subscribeEVMBalance = subscribeEVMBalance;
|
|
9
|
+
exports.subscribeSubstrateBalance = subscribeSubstrateBalance;
|
|
10
|
+
var _types = require("@subwallet/chain-list/types");
|
|
11
|
+
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
12
|
+
var _constants = require("@subwallet/extension-base/constants");
|
|
13
|
+
var _balance = require("@subwallet/extension-base/koni/api/tokens/evm/balance");
|
|
14
|
+
var _web = require("@subwallet/extension-base/koni/api/tokens/evm/web3");
|
|
15
|
+
var _wasm = require("@subwallet/extension-base/koni/api/tokens/wasm");
|
|
16
|
+
var _utils = require("@subwallet/extension-base/koni/api/tokens/wasm/utils");
|
|
17
|
+
var _handlers = require("@subwallet/extension-base/koni/background/handlers");
|
|
18
|
+
var _constants2 = require("@subwallet/extension-base/services/chain-service/constants");
|
|
19
|
+
var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
|
|
20
|
+
var _utils3 = require("@subwallet/extension-base/utils");
|
|
21
|
+
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
22
|
+
var _util = require("@polkadot/util");
|
|
23
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
24
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
25
|
+
|
|
26
|
+
// main subscription
|
|
27
|
+
function subscribeBalance(addresses, chainInfoMap, substrateApiMap, evmApiMap, callback) {
|
|
28
|
+
const [substrateAddresses, evmAddresses] = (0, _utils3.categoryAddresses)(addresses);
|
|
29
|
+
|
|
30
|
+
// Looping over each chain
|
|
31
|
+
const unsubList = Object.entries(chainInfoMap).map(async _ref => {
|
|
32
|
+
let [chainSlug, chainInfo] = _ref;
|
|
33
|
+
const useAddresses = (0, _utils2._isChainEvmCompatible)(chainInfo) ? evmAddresses : substrateAddresses;
|
|
34
|
+
if ((0, _utils2._isPureEvmChain)(chainInfo)) {
|
|
35
|
+
const nativeTokenInfo = _handlers.state.getNativeTokenInfo(chainSlug);
|
|
36
|
+
return subscribeEVMBalance(chainSlug, useAddresses, evmApiMap, callback, nativeTokenInfo);
|
|
37
|
+
}
|
|
38
|
+
if (!useAddresses || useAddresses.length === 0 || _constants2._PURE_EVM_CHAINS.indexOf(chainSlug) > -1) {
|
|
39
|
+
const fungibleTokensByChain = _handlers.state.chainService.getFungibleTokensByChain(chainSlug, true);
|
|
40
|
+
const now = new Date().getTime();
|
|
41
|
+
Object.values(fungibleTokensByChain).map(token => {
|
|
42
|
+
return {
|
|
43
|
+
tokenSlug: token.slug,
|
|
44
|
+
free: '0',
|
|
45
|
+
locked: '0',
|
|
46
|
+
state: _KoniTypes.APIItemState.READY,
|
|
47
|
+
timestamp: now
|
|
48
|
+
};
|
|
49
|
+
}).forEach(callback);
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
const networkAPI = await substrateApiMap[chainSlug].isReady;
|
|
53
|
+
return subscribeSubstrateBalance(useAddresses, chainInfo, chainSlug, networkAPI, evmApiMap, callback);
|
|
54
|
+
});
|
|
55
|
+
return () => {
|
|
56
|
+
unsubList.forEach(subProm => {
|
|
57
|
+
subProm.then(unsub => {
|
|
58
|
+
unsub && unsub();
|
|
59
|
+
}).catch(console.error);
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
async function subscribeSubstrateBalance(addresses, chainInfo, chain, networkAPI, evmApiMap, callBack) {
|
|
64
|
+
let unsubNativeToken;
|
|
65
|
+
if (!_constants2._BALANCE_CHAIN_GROUP.kintsugi.includes(chain) && !_constants2._BALANCE_CHAIN_GROUP.genshiro.includes(chain) && !_constants2._BALANCE_CHAIN_GROUP.equilibrium_parachain.includes(chain)) {
|
|
66
|
+
unsubNativeToken = await subscribeWithSystemAccountPallet(addresses, chainInfo, networkAPI.api, callBack);
|
|
67
|
+
}
|
|
68
|
+
let unsubLocalToken;
|
|
69
|
+
let unsubEvmContractToken;
|
|
70
|
+
let unsubWasmContractToken;
|
|
71
|
+
try {
|
|
72
|
+
if (_constants2._BALANCE_CHAIN_GROUP.bifrost.includes(chain)) {
|
|
73
|
+
unsubLocalToken = await subscribeTokensAccountsPallet(addresses, chain, networkAPI.api, callBack);
|
|
74
|
+
} else if (_constants2._BALANCE_CHAIN_GROUP.kintsugi.includes(chain)) {
|
|
75
|
+
unsubLocalToken = await subscribeTokensAccountsPallet(addresses, chain, networkAPI.api, callBack, true);
|
|
76
|
+
} else if (_constants2._BALANCE_CHAIN_GROUP.statemine.includes(chain)) {
|
|
77
|
+
unsubLocalToken = await subscribeAssetsAccountPallet(addresses, chain, networkAPI.api, callBack);
|
|
78
|
+
} else if (_constants2._BALANCE_CHAIN_GROUP.genshiro.includes(chain)) {
|
|
79
|
+
unsubLocalToken = await subscribeEqBalanceAccountPallet(addresses, chain, networkAPI.api, callBack, true);
|
|
80
|
+
} else if (_constants2._BALANCE_CHAIN_GROUP.equilibrium_parachain.includes(chain)) {
|
|
81
|
+
unsubLocalToken = await subscribeEquilibriumTokenBalance(addresses, chain, networkAPI.api, callBack, true);
|
|
82
|
+
} else if (_constants2._BALANCE_CHAIN_GROUP.centrifuge.includes(chain)) {
|
|
83
|
+
unsubLocalToken = await subscribeOrmlTokensPallet(addresses, chain, networkAPI.api, callBack);
|
|
84
|
+
}
|
|
85
|
+
if ((0, _utils2._isChainEvmCompatible)(chainInfo)) {
|
|
86
|
+
unsubEvmContractToken = subscribeERC20Interval(addresses, chain, evmApiMap, callBack);
|
|
87
|
+
}
|
|
88
|
+
if ((0, _utils2._checkSmartContractSupportByChain)(chainInfo, _types._AssetType.PSP22)) {
|
|
89
|
+
// Get sub-token for substrate-based chains
|
|
90
|
+
unsubWasmContractToken = subscribePSP22Balance(addresses, chain, networkAPI.api, callBack);
|
|
91
|
+
}
|
|
92
|
+
} catch (err) {
|
|
93
|
+
console.warn(err);
|
|
94
|
+
}
|
|
95
|
+
return () => {
|
|
96
|
+
unsubNativeToken && unsubNativeToken();
|
|
97
|
+
unsubLocalToken && unsubLocalToken();
|
|
98
|
+
unsubEvmContractToken && unsubEvmContractToken();
|
|
99
|
+
unsubWasmContractToken && unsubWasmContractToken();
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// handler according to different logic
|
|
104
|
+
async function subscribeWithSystemAccountPallet(addresses, chainInfo, networkAPI, callBack) {
|
|
105
|
+
const chainNativeTokenSlug = (0, _utils2._getChainNativeTokenSlug)(chainInfo);
|
|
106
|
+
const unsub = await networkAPI.query.system.account.multi(addresses, async balances => {
|
|
107
|
+
let [total, reserved, miscFrozen, feeFrozen] = [new _util.BN(0), new _util.BN(0), new _util.BN(0), new _util.BN(0)];
|
|
108
|
+
let pooledStakingBalance = _util.BN_ZERO;
|
|
109
|
+
if ((0, _utils2._isSubstrateRelayChain)(chainInfo) && networkAPI.query.nominationPools) {
|
|
110
|
+
var _networkAPI$query$nom;
|
|
111
|
+
const poolMemberDatas = await ((_networkAPI$query$nom = networkAPI.query.nominationPools.poolMembers) === null || _networkAPI$query$nom === void 0 ? void 0 : _networkAPI$query$nom.multi(addresses));
|
|
112
|
+
if (poolMemberDatas) {
|
|
113
|
+
for (const _poolMemberData of poolMemberDatas) {
|
|
114
|
+
const poolMemberData = _poolMemberData.toPrimitive();
|
|
115
|
+
if (poolMemberData) {
|
|
116
|
+
const pooledBalance = new _util.BN(poolMemberData.points.toString());
|
|
117
|
+
pooledStakingBalance = pooledStakingBalance.add(pooledBalance);
|
|
118
|
+
Object.entries(poolMemberData.unbondingEras).forEach(_ref2 => {
|
|
119
|
+
let [, amount] = _ref2;
|
|
120
|
+
pooledStakingBalance = pooledStakingBalance.add(new _util.BN(amount));
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
balances.forEach(balance => {
|
|
127
|
+
var _balance$data, _balance$data$free, _balance$data2, _balance$data2$reserv, _balance$data3, _balance$data3$miscFr, _balance$data4, _balance$data4$frozen, _balance$data5, _balance$data5$feeFro;
|
|
128
|
+
total = total.add(((_balance$data = balance.data) === null || _balance$data === void 0 ? void 0 : (_balance$data$free = _balance$data.free) === null || _balance$data$free === void 0 ? void 0 : _balance$data$free.toBn()) || new _util.BN(0)); // reserved is seperated
|
|
129
|
+
reserved = reserved.add(((_balance$data2 = balance.data) === null || _balance$data2 === void 0 ? void 0 : (_balance$data2$reserv = _balance$data2.reserved) === null || _balance$data2$reserv === void 0 ? void 0 : _balance$data2$reserv.toBn()) || new _util.BN(0));
|
|
130
|
+
// @ts-ignore
|
|
131
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
132
|
+
miscFrozen = miscFrozen.add(((_balance$data3 = balance.data) === null || _balance$data3 === void 0 ? void 0 : (_balance$data3$miscFr = _balance$data3.miscFrozen) === null || _balance$data3$miscFr === void 0 ? void 0 : _balance$data3$miscFr.toBn()) || (balance === null || balance === void 0 ? void 0 : (_balance$data4 = balance.data) === null || _balance$data4 === void 0 ? void 0 : (_balance$data4$frozen = _balance$data4.frozen) === null || _balance$data4$frozen === void 0 ? void 0 : _balance$data4$frozen.toBn()) || new _util.BN(0)); // TODO: update frozen
|
|
133
|
+
feeFrozen = feeFrozen.add(((_balance$data5 = balance.data) === null || _balance$data5 === void 0 ? void 0 : (_balance$data5$feeFro = _balance$data5.feeFrozen) === null || _balance$data5$feeFro === void 0 ? void 0 : _balance$data5$feeFro.toBn()) || new _util.BN(0));
|
|
134
|
+
});
|
|
135
|
+
let locked = reserved.add(miscFrozen);
|
|
136
|
+
total = total.add(reserved); // total = free + reserved
|
|
137
|
+
|
|
138
|
+
if (pooledStakingBalance.gt(_util.BN_ZERO)) {
|
|
139
|
+
total = total.add(pooledStakingBalance);
|
|
140
|
+
locked = locked.add(pooledStakingBalance);
|
|
141
|
+
}
|
|
142
|
+
const free = total.sub(locked);
|
|
143
|
+
callBack({
|
|
144
|
+
tokenSlug: chainNativeTokenSlug,
|
|
145
|
+
free: free.gte(_util.BN_ZERO) ? free.toString() : '0',
|
|
146
|
+
locked: locked.toString(),
|
|
147
|
+
state: _KoniTypes.APIItemState.READY,
|
|
148
|
+
substrateInfo: {
|
|
149
|
+
miscFrozen: miscFrozen.toString(),
|
|
150
|
+
reserved: reserved.toString(),
|
|
151
|
+
feeFrozen: feeFrozen.toString()
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
return () => {
|
|
156
|
+
unsub();
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
function subscribeERC20Interval(addresses, chain, evmApiMap, callBack) {
|
|
160
|
+
let tokenList = {};
|
|
161
|
+
const erc20ContractMap = {};
|
|
162
|
+
const getTokenBalances = () => {
|
|
163
|
+
Object.values(tokenList).map(async tokenInfo => {
|
|
164
|
+
let free = new _util.BN(0);
|
|
165
|
+
try {
|
|
166
|
+
const contract = erc20ContractMap[tokenInfo.slug];
|
|
167
|
+
const balanceList = await Promise.all(addresses.map(address => {
|
|
168
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
169
|
+
return contract.methods.balanceOf(address).call();
|
|
170
|
+
}));
|
|
171
|
+
free = (0, _utils3.sumBN)(balanceList.map(balance => new _util.BN(balance || 0)));
|
|
172
|
+
callBack({
|
|
173
|
+
tokenSlug: tokenInfo.slug,
|
|
174
|
+
free: free.toString(),
|
|
175
|
+
locked: '0',
|
|
176
|
+
state: _KoniTypes.APIItemState.READY
|
|
177
|
+
});
|
|
178
|
+
} catch (err) {
|
|
179
|
+
console.log(tokenInfo.slug, err);
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
};
|
|
183
|
+
tokenList = _handlers.state.getAssetByChainAndAsset(chain, [_types._AssetType.ERC20]);
|
|
184
|
+
Object.entries(tokenList).forEach(_ref3 => {
|
|
185
|
+
let [slug, tokenInfo] = _ref3;
|
|
186
|
+
erc20ContractMap[slug] = (0, _web.getERC20Contract)(chain, (0, _utils2._getContractAddressOfToken)(tokenInfo), evmApiMap);
|
|
187
|
+
});
|
|
188
|
+
getTokenBalances();
|
|
189
|
+
const interval = setInterval(getTokenBalances, _constants.SUB_TOKEN_REFRESH_BALANCE_INTERVAL);
|
|
190
|
+
return () => {
|
|
191
|
+
clearInterval(interval);
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
function subscribePSP22Balance(addresses, chain, api, callBack) {
|
|
195
|
+
let tokenList = {};
|
|
196
|
+
const psp22ContractMap = {};
|
|
197
|
+
const getTokenBalances = () => {
|
|
198
|
+
Object.values(tokenList).map(async tokenInfo => {
|
|
199
|
+
let free = new _util.BN(0);
|
|
200
|
+
try {
|
|
201
|
+
const contract = psp22ContractMap[tokenInfo.slug];
|
|
202
|
+
const balances = await Promise.all(addresses.map(async address => {
|
|
203
|
+
var _balanceOf$output;
|
|
204
|
+
const _balanceOf = await contract.query['psp22::balanceOf'](address, {
|
|
205
|
+
gasLimit: (0, _utils.getDefaultWeightV2)(api)
|
|
206
|
+
}, address);
|
|
207
|
+
const balanceObj = _balanceOf === null || _balanceOf === void 0 ? void 0 : (_balanceOf$output = _balanceOf.output) === null || _balanceOf$output === void 0 ? void 0 : _balanceOf$output.toPrimitive();
|
|
208
|
+
return _balanceOf.output ? balanceObj.ok || balanceObj.Ok : '0';
|
|
209
|
+
}));
|
|
210
|
+
free = (0, _utils3.sumBN)(balances.map(bal => new _util.BN(bal || 0)));
|
|
211
|
+
callBack({
|
|
212
|
+
tokenSlug: tokenInfo.slug,
|
|
213
|
+
free: free.toString(),
|
|
214
|
+
locked: '0',
|
|
215
|
+
state: _KoniTypes.APIItemState.READY
|
|
216
|
+
});
|
|
217
|
+
} catch (err) {
|
|
218
|
+
console.warn(tokenInfo.slug, err); // TODO: error createType
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
tokenList = _handlers.state.getAssetByChainAndAsset(chain, [_types._AssetType.PSP22]);
|
|
224
|
+
Object.entries(tokenList).forEach(_ref4 => {
|
|
225
|
+
let [slug, tokenInfo] = _ref4;
|
|
226
|
+
psp22ContractMap[slug] = (0, _wasm.getPSP22ContractPromise)(api, (0, _utils2._getContractAddressOfToken)(tokenInfo));
|
|
227
|
+
});
|
|
228
|
+
getTokenBalances();
|
|
229
|
+
const interval = setInterval(getTokenBalances, _constants.SUB_TOKEN_REFRESH_BALANCE_INTERVAL);
|
|
230
|
+
return () => {
|
|
231
|
+
clearInterval(interval);
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
async function subscribeEquilibriumTokenBalance(addresses, chain, api, callBack, includeNativeToken) {
|
|
235
|
+
const tokenTypes = includeNativeToken ? [_types._AssetType.NATIVE, _types._AssetType.LOCAL] : [_types._AssetType.LOCAL];
|
|
236
|
+
const tokenMap = _handlers.state.getAssetByChainAndAsset(chain, tokenTypes);
|
|
237
|
+
const unsub = await api.query.system.account.multi(addresses, balances => {
|
|
238
|
+
// Equilibrium customizes the SystemAccount pallet
|
|
239
|
+
Object.values(tokenMap).forEach(tokenInfo => {
|
|
240
|
+
const assetId = (0, _utils2._getTokenOnChainAssetId)(tokenInfo);
|
|
241
|
+
let tokenFreeBalance = _util.BN_ZERO;
|
|
242
|
+
for (const balance of balances) {
|
|
243
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
244
|
+
const balancesData = JSON.parse(balance.data.toString());
|
|
245
|
+
const balanceList = balancesData.v0.balance;
|
|
246
|
+
|
|
247
|
+
// @ts-ignore
|
|
248
|
+
const freeTokenBalance = balanceList.find(data => data[0] === parseInt(assetId));
|
|
249
|
+
const bnFreeTokenBalance = freeTokenBalance ? new _util.BN(new _bignumber.default(freeTokenBalance[1].positive).toString()) : _util.BN_ZERO;
|
|
250
|
+
tokenFreeBalance = tokenFreeBalance.add(bnFreeTokenBalance);
|
|
251
|
+
}
|
|
252
|
+
const tokenBalance = {
|
|
253
|
+
free: tokenFreeBalance.toString(),
|
|
254
|
+
locked: '0',
|
|
255
|
+
// Equilibrium doesn't show locked balance
|
|
256
|
+
state: _KoniTypes.APIItemState.READY,
|
|
257
|
+
tokenSlug: tokenInfo.slug
|
|
258
|
+
};
|
|
259
|
+
callBack(tokenBalance);
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
return () => {
|
|
263
|
+
unsub();
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
268
|
+
async function subscribeEqBalanceAccountPallet(addresses, chain, api, callBack, includeNativeToken) {
|
|
269
|
+
const tokenTypes = includeNativeToken ? [_types._AssetType.NATIVE, _types._AssetType.LOCAL] : [_types._AssetType.LOCAL];
|
|
270
|
+
const tokenMap = _handlers.state.getAssetByChainAndAsset(chain, tokenTypes);
|
|
271
|
+
const unsubList = Object.values(tokenMap).map(async tokenInfo => {
|
|
272
|
+
try {
|
|
273
|
+
const assetId = (0, _utils2._getTokenOnChainAssetId)(tokenInfo);
|
|
274
|
+
const unsub = await api.query.eqBalances.account.multi(addresses.map(address => [address, [assetId]]), balances => {
|
|
275
|
+
const tokenBalance = {
|
|
276
|
+
free: (0, _utils3.sumBN)(balances.map(b => b.asPositive)).toString(),
|
|
277
|
+
locked: '0',
|
|
278
|
+
// Equilibrium doesn't show locked balance
|
|
279
|
+
state: _KoniTypes.APIItemState.READY,
|
|
280
|
+
tokenSlug: tokenInfo.slug
|
|
281
|
+
};
|
|
282
|
+
callBack(tokenBalance);
|
|
283
|
+
});
|
|
284
|
+
return unsub;
|
|
285
|
+
} catch (err) {
|
|
286
|
+
console.warn(err);
|
|
287
|
+
return undefined;
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
return () => {
|
|
291
|
+
unsubList.forEach(subProm => {
|
|
292
|
+
subProm.then(unsub => {
|
|
293
|
+
unsub && unsub();
|
|
294
|
+
}).catch(console.error);
|
|
295
|
+
});
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
300
|
+
async function subscribeOrmlTokensPallet(addresses, chain, api, callBack) {
|
|
301
|
+
const tokenTypes = [_types._AssetType.LOCAL];
|
|
302
|
+
const tokenMap = _handlers.state.getAssetByChainAndAsset(chain, tokenTypes);
|
|
303
|
+
const unsubList = Object.values(tokenMap).map(async tokenInfo => {
|
|
304
|
+
try {
|
|
305
|
+
const onChainInfo = (0, _utils2._getTokenOnChainInfo)(tokenInfo);
|
|
306
|
+
|
|
307
|
+
// Get Token Balance
|
|
308
|
+
// @ts-ignore
|
|
309
|
+
const unsub = await api.query.ormlTokens.accounts.multi(addresses.map(address => [address, onChainInfo]), balances => {
|
|
310
|
+
const tokenBalance = {
|
|
311
|
+
reserved: (0, _utils3.sumBN)(balances.map(b => b.reserved || new _util.BN(0))),
|
|
312
|
+
frozen: (0, _utils3.sumBN)(balances.map(b => b.frozen || new _util.BN(0))),
|
|
313
|
+
free: (0, _utils3.sumBN)(balances.map(b => b.free || new _util.BN(0))) // free is actually total balance
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
// free balance = total balance - frozen misc
|
|
317
|
+
// locked balance = reserved + frozen misc
|
|
318
|
+
const freeBalance = tokenBalance.free.sub(tokenBalance.frozen);
|
|
319
|
+
const lockedBalance = tokenBalance.frozen.add(tokenBalance.reserved);
|
|
320
|
+
callBack({
|
|
321
|
+
tokenSlug: tokenInfo.slug,
|
|
322
|
+
state: _KoniTypes.APIItemState.READY,
|
|
323
|
+
free: freeBalance.toString(),
|
|
324
|
+
locked: lockedBalance.toString(),
|
|
325
|
+
substrateInfo: {
|
|
326
|
+
reserved: tokenBalance.reserved.toString(),
|
|
327
|
+
miscFrozen: tokenBalance.frozen.toString()
|
|
328
|
+
}
|
|
329
|
+
});
|
|
330
|
+
});
|
|
331
|
+
return unsub;
|
|
332
|
+
} catch (err) {
|
|
333
|
+
console.warn(err);
|
|
334
|
+
return undefined;
|
|
335
|
+
}
|
|
336
|
+
});
|
|
337
|
+
return () => {
|
|
338
|
+
unsubList.forEach(subProm => {
|
|
339
|
+
subProm.then(unsub => {
|
|
340
|
+
unsub && unsub();
|
|
341
|
+
}).catch(console.error);
|
|
342
|
+
});
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
async function subscribeTokensAccountsPallet(addresses, chain, api, callBack, includeNativeToken) {
|
|
346
|
+
const tokenTypes = includeNativeToken ? [_types._AssetType.NATIVE, _types._AssetType.LOCAL] : [_types._AssetType.LOCAL];
|
|
347
|
+
const tokenMap = _handlers.state.getAssetByChainAndAsset(chain, tokenTypes);
|
|
348
|
+
const unsubList = await Promise.all(Object.values(tokenMap).map(async tokenInfo => {
|
|
349
|
+
try {
|
|
350
|
+
const onChainInfo = (0, _utils2._getTokenOnChainInfo)(tokenInfo);
|
|
351
|
+
const assetId = (0, _utils2._getTokenOnChainAssetId)(tokenInfo);
|
|
352
|
+
|
|
353
|
+
// Get Token Balance
|
|
354
|
+
// @ts-ignore
|
|
355
|
+
return await api.query.tokens.accounts.multi(addresses.map(address => [address, onChainInfo || assetId]), balances => {
|
|
356
|
+
const tokenBalance = {
|
|
357
|
+
reserved: (0, _utils3.sumBN)(balances.map(b => b.reserved || new _util.BN(0))),
|
|
358
|
+
frozen: (0, _utils3.sumBN)(balances.map(b => b.frozen || new _util.BN(0))),
|
|
359
|
+
free: (0, _utils3.sumBN)(balances.map(b => b.free || new _util.BN(0))) // free is actually total balance
|
|
360
|
+
};
|
|
361
|
+
|
|
362
|
+
// free balance = total balance - frozen misc
|
|
363
|
+
// locked balance = reserved + frozen misc
|
|
364
|
+
const freeBalance = tokenBalance.free.sub(tokenBalance.frozen);
|
|
365
|
+
const lockedBalance = tokenBalance.frozen.add(tokenBalance.reserved);
|
|
366
|
+
callBack({
|
|
367
|
+
tokenSlug: tokenInfo.slug,
|
|
368
|
+
state: _KoniTypes.APIItemState.READY,
|
|
369
|
+
free: freeBalance.toString(),
|
|
370
|
+
locked: lockedBalance.toString(),
|
|
371
|
+
substrateInfo: {
|
|
372
|
+
reserved: tokenBalance.reserved.toString(),
|
|
373
|
+
miscFrozen: tokenBalance.frozen.toString()
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
});
|
|
377
|
+
} catch (err) {
|
|
378
|
+
console.warn(err);
|
|
379
|
+
}
|
|
380
|
+
return undefined;
|
|
381
|
+
}));
|
|
382
|
+
return () => {
|
|
383
|
+
unsubList.forEach(unsub => {
|
|
384
|
+
unsub && unsub();
|
|
385
|
+
});
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
async function subscribeAssetsAccountPallet(addresses, chain, api, callBack) {
|
|
389
|
+
const tokenMap = _handlers.state.getAssetByChainAndAsset(chain, [_types._AssetType.LOCAL]);
|
|
390
|
+
Object.values(tokenMap).forEach(token => {
|
|
391
|
+
if (_constants2._MANTA_ZK_CHAIN_GROUP.includes(token.originChain) && token.symbol.startsWith(_constants2._ZK_ASSET_PREFIX)) {
|
|
392
|
+
delete tokenMap[token.slug];
|
|
393
|
+
}
|
|
394
|
+
});
|
|
395
|
+
const unsubList = await Promise.all(Object.values(tokenMap).map(async tokenInfo => {
|
|
396
|
+
try {
|
|
397
|
+
const assetIndex = (0, _utils2._getTokenOnChainAssetId)(tokenInfo);
|
|
398
|
+
|
|
399
|
+
// Get Token Balance
|
|
400
|
+
return await api.query.assets.account.multi(addresses.map(address => [assetIndex, address]), balances => {
|
|
401
|
+
let total = new _util.BN(0);
|
|
402
|
+
let frozen = new _util.BN(0);
|
|
403
|
+
balances.forEach(b => {
|
|
404
|
+
// @ts-ignore
|
|
405
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-assignment
|
|
406
|
+
const bdata = b === null || b === void 0 ? void 0 : b.toHuman();
|
|
407
|
+
if (bdata) {
|
|
408
|
+
// @ts-ignore
|
|
409
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument
|
|
410
|
+
const addressBalance = new _util.BN(String(bdata === null || bdata === void 0 ? void 0 : bdata.balance).replaceAll(',', '') || '0');
|
|
411
|
+
|
|
412
|
+
// @ts-ignore
|
|
413
|
+
if (bdata !== null && bdata !== void 0 && bdata.isFrozen) {
|
|
414
|
+
frozen = frozen.add(addressBalance);
|
|
415
|
+
} else {
|
|
416
|
+
total = total.add(addressBalance);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
});
|
|
420
|
+
const free = total.sub(frozen);
|
|
421
|
+
callBack({
|
|
422
|
+
tokenSlug: tokenInfo.slug,
|
|
423
|
+
free: free.toString(),
|
|
424
|
+
locked: frozen.toString(),
|
|
425
|
+
state: _KoniTypes.APIItemState.READY,
|
|
426
|
+
substrateInfo: {
|
|
427
|
+
miscFrozen: frozen.toString(),
|
|
428
|
+
reserved: '0'
|
|
429
|
+
}
|
|
430
|
+
});
|
|
431
|
+
});
|
|
432
|
+
} catch (err) {
|
|
433
|
+
console.warn(err);
|
|
434
|
+
}
|
|
435
|
+
return undefined;
|
|
436
|
+
}));
|
|
437
|
+
return () => {
|
|
438
|
+
unsubList.forEach(unsub => {
|
|
439
|
+
unsub && unsub();
|
|
440
|
+
});
|
|
441
|
+
};
|
|
442
|
+
}
|
|
443
|
+
function subscribeEVMBalance(chain, addresses, evmApiMap, callback, tokenInfo) {
|
|
444
|
+
const balanceItem = {
|
|
445
|
+
tokenSlug: tokenInfo.slug,
|
|
446
|
+
state: _KoniTypes.APIItemState.PENDING,
|
|
447
|
+
free: '0',
|
|
448
|
+
locked: '0'
|
|
449
|
+
};
|
|
450
|
+
function getBalance() {
|
|
451
|
+
(0, _balance.getEVMBalance)(chain, addresses, evmApiMap).then(balances => {
|
|
452
|
+
balanceItem.free = (0, _utils3.sumBN)(balances.map(b => new _util.BN(b || '0'))).toString();
|
|
453
|
+
balanceItem.state = _KoniTypes.APIItemState.READY;
|
|
454
|
+
callback(balanceItem);
|
|
455
|
+
}).catch(console.warn);
|
|
456
|
+
}
|
|
457
|
+
getBalance();
|
|
458
|
+
const interval = setInterval(getBalance, _constants.ASTAR_REFRESH_BALANCE_INTERVAL);
|
|
459
|
+
const unsub2 = subscribeERC20Interval(addresses, chain, evmApiMap, callback);
|
|
460
|
+
return () => {
|
|
461
|
+
clearInterval(interval);
|
|
462
|
+
unsub2 && unsub2();
|
|
463
|
+
};
|
|
464
|
+
}
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.UniqueNftApi = void 0;
|
|
8
8
|
var _config = require("@subwallet/extension-base/koni/api/nft/config");
|
|
9
9
|
var _nft = require("@subwallet/extension-base/koni/api/nft/nft");
|
|
10
|
+
var _utils = require("@subwallet/extension-base/utils");
|
|
10
11
|
var _crossFetch = _interopRequireDefault(require("cross-fetch"));
|
|
11
12
|
var _utilCrypto = require("@polkadot/util-crypto");
|
|
12
13
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
@@ -16,6 +17,9 @@ class UniqueNftApi extends _nft.BaseNftApi {
|
|
|
16
17
|
constructor(chain, addresses) {
|
|
17
18
|
super(chain, undefined, addresses);
|
|
18
19
|
}
|
|
20
|
+
parseUrl(input) {
|
|
21
|
+
return (0, _utils.baseParseIPFSUrl)(input, _config.UNIQUE_IPFS_GATEWAY);
|
|
22
|
+
}
|
|
19
23
|
handleProperties(nft) {
|
|
20
24
|
const propertiesMap = {};
|
|
21
25
|
const attRecord = nft.attributes;
|
|
@@ -34,6 +34,7 @@ var _constants3 = require("@subwallet/extension-base/services/request-service/co
|
|
|
34
34
|
var _constants4 = require("@subwallet/extension-base/services/setting-service/constants");
|
|
35
35
|
var _constants5 = require("@subwallet/extension-base/services/wallet-connect-service/constants");
|
|
36
36
|
var _helpers2 = require("@subwallet/extension-base/services/wallet-connect-service/helpers");
|
|
37
|
+
var _stores = require("@subwallet/extension-base/stores");
|
|
37
38
|
var _types3 = require("@subwallet/extension-base/types");
|
|
38
39
|
var _utils3 = require("@subwallet/extension-base/utils");
|
|
39
40
|
var _eth = require("@subwallet/extension-base/utils/eth");
|
|
@@ -547,11 +548,16 @@ class KoniExtension {
|
|
|
547
548
|
}
|
|
548
549
|
subscribeAddresses(id, port) {
|
|
549
550
|
const _cb = (0, _subscriptions.createSubscription)(id, port);
|
|
551
|
+
let old = '';
|
|
550
552
|
const subscription = this.#koniState.keyringService.addressesSubject.subscribe(subjectInfo => {
|
|
551
553
|
const addresses = (0, _utils3.convertSubjectInfoToAddresses)(subjectInfo);
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
554
|
+
const _new = JSON.stringify(addresses);
|
|
555
|
+
if (old !== _new) {
|
|
556
|
+
_cb({
|
|
557
|
+
addresses: addresses
|
|
558
|
+
});
|
|
559
|
+
old = _new;
|
|
560
|
+
}
|
|
555
561
|
});
|
|
556
562
|
this.createUnsubscriptionHandle(id, subscription.unsubscribe);
|
|
557
563
|
port.onDisconnect.addListener(() => {
|
|
@@ -564,16 +570,42 @@ class KoniExtension {
|
|
|
564
570
|
}
|
|
565
571
|
saveRecentAccount(_ref22) {
|
|
566
572
|
let {
|
|
567
|
-
accountId
|
|
573
|
+
accountId,
|
|
574
|
+
chain
|
|
568
575
|
} = _ref22;
|
|
569
576
|
if ((0, _utilCrypto.isAddress)(accountId)) {
|
|
570
577
|
const address = (0, _utils3.reformatAddress)(accountId);
|
|
571
578
|
const account = _uiKeyring.keyring.getAccount(address);
|
|
572
|
-
const contact = _uiKeyring.keyring.getAddress(address);
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
579
|
+
const contact = _uiKeyring.keyring.getAddress(address, 'address');
|
|
580
|
+
if (account) {
|
|
581
|
+
return account;
|
|
582
|
+
} else {
|
|
583
|
+
let metadata;
|
|
584
|
+
if (contact) {
|
|
585
|
+
metadata = contact.meta;
|
|
586
|
+
} else {
|
|
587
|
+
const _new = _uiKeyring.keyring.saveRecent(address);
|
|
588
|
+
metadata = _new.json.meta;
|
|
589
|
+
}
|
|
590
|
+
if (contact && !metadata.isRecent) {
|
|
591
|
+
return contact;
|
|
592
|
+
}
|
|
593
|
+
const recentChainSlugs = metadata.recentChainSlugs || [];
|
|
594
|
+
if (chain) {
|
|
595
|
+
if (!recentChainSlugs.includes(chain)) {
|
|
596
|
+
recentChainSlugs.push(chain);
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
metadata.recentChainSlugs = recentChainSlugs;
|
|
600
|
+
const result = _uiKeyring.keyring.addresses.add(new _stores.AccountsStore(), address, {
|
|
601
|
+
address: address,
|
|
602
|
+
meta: metadata
|
|
603
|
+
});
|
|
604
|
+
return {
|
|
605
|
+
...result.json,
|
|
606
|
+
publicKey: (0, _utilCrypto.decodeAddress)(address)
|
|
607
|
+
};
|
|
608
|
+
}
|
|
577
609
|
} else {
|
|
578
610
|
throw Error((0, _i18next.t)('This is not an address'));
|
|
579
611
|
}
|
|
@@ -1648,7 +1680,9 @@ class KoniExtension {
|
|
|
1648
1680
|
// Check ed for receiver
|
|
1649
1681
|
if (new _bignumber.default(receiverBalance).plus(transferAmount.value).lt(minAmount)) {
|
|
1650
1682
|
const atLeast = new _bignumber.default(minAmount).minus(receiverBalance).plus((tokenInfo.decimals || 0) === 0 ? 0 : 1);
|
|
1651
|
-
const atLeastStr = (0, _number.formatNumber)(atLeast, tokenInfo.decimals || 0, _number.balanceFormatter
|
|
1683
|
+
const atLeastStr = (0, _number.formatNumber)(atLeast, tokenInfo.decimals || 0, _number.balanceFormatter, {
|
|
1684
|
+
maxNumberFormat: tokenInfo.decimals || 6
|
|
1685
|
+
});
|
|
1652
1686
|
inputTransaction.errors.push(new _TransactionError.TransactionError(_KoniTypes.TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT, (0, _i18next.t)('You must transfer at least {{amount}} {{symbol}} to keep the destination account alive', {
|
|
1653
1687
|
replace: {
|
|
1654
1688
|
amount: atLeastStr,
|
|
@@ -1717,7 +1751,9 @@ class KoniExtension {
|
|
|
1717
1751
|
|
|
1718
1752
|
// Check ed for receiver
|
|
1719
1753
|
if (new _bignumber.default(value).lt(atLeast)) {
|
|
1720
|
-
const atLeastStr = (0, _number.formatNumber)(atLeast, destinationTokenInfo.decimals || 0, _number.balanceFormatter
|
|
1754
|
+
const atLeastStr = (0, _number.formatNumber)(atLeast, destinationTokenInfo.decimals || 0, _number.balanceFormatter, {
|
|
1755
|
+
maxNumberFormat: destinationTokenInfo.decimals || 6
|
|
1756
|
+
});
|
|
1721
1757
|
inputTransaction.errors.push(new _TransactionError.TransactionError(_KoniTypes.TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT, (0, _i18next.t)('You must transfer at least {{amount}} {{symbol}} to keep the destination account alive', {
|
|
1722
1758
|
replace: {
|
|
1723
1759
|
amount: atLeastStr,
|
|
@@ -3000,7 +3036,7 @@ class KoniExtension {
|
|
|
3000
3036
|
if (chainInfo && (_constants2._API_OPTIONS_CHAIN_GROUP.avail.includes(chainInfo.slug) || _constants2._API_OPTIONS_CHAIN_GROUP.goldberg.includes(chainInfo.slug))) {
|
|
3001
3037
|
const isChainActive = this.#koniState.getChainStateByKey(chainInfo.slug).active;
|
|
3002
3038
|
if (!isChainActive) {
|
|
3003
|
-
reject(new Error('Please
|
|
3039
|
+
reject(new Error('Please activate {{chain}} network before signing'.replaceAll('{{chain}}', chainInfo.name)));
|
|
3004
3040
|
return false;
|
|
3005
3041
|
} else {
|
|
3006
3042
|
registry = this.#koniState.getSubstrateApi(chainInfo.slug).api.registry;
|
|
@@ -3219,6 +3255,19 @@ class KoniExtension {
|
|
|
3219
3255
|
});
|
|
3220
3256
|
return this.#koniState.getChainStateMap();
|
|
3221
3257
|
}
|
|
3258
|
+
subscribeChainStatusMap(id, port) {
|
|
3259
|
+
const cb = (0, _subscriptions.createSubscription)(id, port);
|
|
3260
|
+
const chainStateMapSubscription = this.#koniState.chainService.subscribeChainStatusMap().subscribe({
|
|
3261
|
+
next: rs => {
|
|
3262
|
+
cb(rs);
|
|
3263
|
+
}
|
|
3264
|
+
});
|
|
3265
|
+
this.createUnsubscriptionHandle(id, chainStateMapSubscription.unsubscribe);
|
|
3266
|
+
port.onDisconnect.addListener(() => {
|
|
3267
|
+
this.cancelSubscription(id);
|
|
3268
|
+
});
|
|
3269
|
+
return this.#koniState.chainService.getChainStatusMap();
|
|
3270
|
+
}
|
|
3222
3271
|
async subscribeAssetRegistry(id, port) {
|
|
3223
3272
|
const cb = (0, _subscriptions.createSubscription)(id, port);
|
|
3224
3273
|
let ready = false;
|
|
@@ -3522,7 +3571,7 @@ class KoniExtension {
|
|
|
3522
3571
|
});
|
|
3523
3572
|
const {
|
|
3524
3573
|
connectionStatus
|
|
3525
|
-
} = this.#koniState.chainService.
|
|
3574
|
+
} = this.#koniState.chainService.getChainStatusByKey(_constants2._DEFAULT_MANTA_ZK_CHAIN);
|
|
3526
3575
|
if (connectionStatus !== _types2._ChainConnectionStatus.CONNECTED) {
|
|
3527
3576
|
// TODO: do better
|
|
3528
3577
|
await timeout();
|
|
@@ -4262,6 +4311,8 @@ class KoniExtension {
|
|
|
4262
4311
|
return this.subscribeChainInfoMap(id, port);
|
|
4263
4312
|
case 'pri(chainService.subscribeChainStateMap)':
|
|
4264
4313
|
return this.subscribeChainStateMap(id, port);
|
|
4314
|
+
case 'pri(chainService.subscribeChainStatusMap)':
|
|
4315
|
+
return this.subscribeChainStatusMap(id, port);
|
|
4265
4316
|
case 'pri(chainService.subscribeXcmRefMap)':
|
|
4266
4317
|
return this.subscribeXcmRefMap(id, port);
|
|
4267
4318
|
case 'pri(chainService.getSupportedContractTypes)':
|