@subwallet/extension-base 1.1.52-0 → 1.1.53-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 +9 -1
- package/background/KoniTypes.js +1 -0
- package/background/errors/SwapError.d.ts +6 -0
- package/background/errors/SwapError.js +57 -0
- package/background/errors/TransactionError.js +9 -0
- package/cjs/background/KoniTypes.js +1 -0
- package/cjs/background/errors/SwapError.js +64 -0
- package/cjs/background/errors/TransactionError.js +9 -0
- package/cjs/koni/api/dotsama/balance.js +464 -0
- package/cjs/koni/api/nft/ordinal_nft/utils.js +41 -0
- package/cjs/koni/api/staking/bonding/utils.js +35 -6
- package/cjs/koni/background/handlers/Extension.js +85 -0
- package/cjs/koni/background/handlers/State.js +25 -5
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/helpers/subscribe/balance.js +140 -0
- package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +2 -1
- package/cjs/services/balance-service/index.js +6 -3
- package/cjs/services/chain-service/constants.js +1 -1
- package/cjs/services/chain-service/index.js +43 -18
- package/cjs/services/chain-service/utils/index.js +7 -2
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/chain-service/utils.js +506 -0
- package/cjs/services/earning-service/constants/chains.js +4 -2
- package/cjs/services/earning-service/handlers/native-staking/astar.js +4 -3
- package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +22 -3
- 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/request-service/handler/ConnectWCRequestHandler.js +0 -1
- package/cjs/services/storage-service/index.js +241 -0
- package/cjs/services/swap-service/handler/base-handler.js +171 -0
- package/cjs/services/swap-service/handler/chainflip-handler.js +407 -0
- package/cjs/services/swap-service/handler/hydradx-handler.js +444 -0
- package/cjs/services/swap-service/index.js +249 -0
- package/cjs/services/swap-service/utils.js +126 -0
- package/cjs/services/transaction-service/index.js +20 -0
- package/cjs/services/transaction-service/utils.js +6 -0
- package/cjs/services/wallet-connect-service/helpers.js +1 -1
- package/cjs/services/wallet-connect-service/index.js +19 -0
- package/cjs/types/balance.js +1 -0
- package/cjs/types/fee/evm.js +1 -0
- package/cjs/types/fee/fee.js +70 -0
- package/cjs/types/fee/index.js +27 -1
- package/cjs/types/service-base.js +1 -0
- package/cjs/types/swap/index.js +50 -0
- package/cjs/types.js +1 -0
- package/cjs/utils/address.js +34 -0
- package/cjs/utils/eth/parseTransaction/index.js +1 -1
- package/cjs/utils/index.js +12 -0
- package/cjs/utils/keyring.js +57 -0
- package/cjs/utils/swap.js +78 -0
- package/koni/api/staking/bonding/utils.d.ts +3 -1
- package/koni/api/staking/bonding/utils.js +32 -6
- package/koni/background/handlers/Extension.d.ts +5 -0
- package/koni/background/handlers/Extension.js +85 -0
- package/koni/background/handlers/State.d.ts +2 -0
- package/koni/background/handlers/State.js +26 -6
- package/package.json +64 -7
- package/packageInfo.js +1 -1
- package/services/balance-service/helpers/subscribe/substrate/index.js +2 -1
- package/services/balance-service/index.js +6 -3
- package/services/base/types.d.ts +4 -0
- package/services/chain-service/constants.js +1 -1
- package/services/chain-service/index.d.ts +4 -0
- package/services/chain-service/index.js +24 -0
- package/services/chain-service/utils/index.d.ts +6 -5
- package/services/chain-service/utils/index.js +5 -2
- package/services/chain-service/utils/patch.js +1 -1
- package/services/earning-service/constants/chains.d.ts +1 -0
- package/services/earning-service/constants/chains.js +1 -0
- package/services/earning-service/handlers/native-staking/astar.js +4 -3
- package/services/earning-service/handlers/native-staking/relay-chain.js +24 -5
- package/services/event-service/types.d.ts +1 -0
- package/services/request-service/handler/ConnectWCRequestHandler.js +0 -1
- package/services/swap-service/handler/base-handler.d.ts +38 -0
- package/services/swap-service/handler/base-handler.js +162 -0
- package/services/swap-service/handler/chainflip-handler.d.ts +30 -0
- package/services/swap-service/handler/chainflip-handler.js +399 -0
- package/services/swap-service/handler/hydradx-handler.d.ts +36 -0
- package/services/swap-service/handler/hydradx-handler.js +435 -0
- package/services/swap-service/index.d.ts +32 -0
- package/services/swap-service/index.js +240 -0
- package/services/swap-service/utils.d.ts +18 -0
- package/services/swap-service/utils.js +105 -0
- package/services/transaction-service/index.js +20 -0
- package/services/transaction-service/utils.d.ts +2 -0
- package/services/transaction-service/utils.js +6 -2
- package/services/wallet-connect-service/helpers.js +1 -1
- package/services/wallet-connect-service/index.d.ts +1 -0
- package/services/wallet-connect-service/index.js +19 -1
- package/types/fee/evm.d.ts +49 -0
- package/types/fee/evm.js +1 -0
- package/types/fee/fee.d.ts +32 -0
- package/types/fee/fee.js +63 -0
- package/types/fee/index.d.ts +2 -49
- package/types/fee/index.js +5 -1
- package/types/service-base.d.ts +10 -0
- package/types/service-base.js +1 -0
- package/types/swap/index.d.ts +166 -0
- package/types/swap/index.js +41 -0
- package/types/yield/info/chain/target.d.ts +2 -0
- package/types/yield/info/pallet.d.ts +4 -0
- package/utils/eth/parseTransaction/index.js +1 -1
- package/utils/index.d.ts +1 -0
- package/utils/index.js +2 -1
- package/utils/swap.d.ts +3 -0
- package/utils/swap.js +70 -0
|
@@ -32,6 +32,7 @@ var _SettingService = _interopRequireDefault(require("@subwallet/extension-base/
|
|
|
32
32
|
var _DatabaseService = _interopRequireDefault(require("@subwallet/extension-base/services/storage-service/DatabaseService"));
|
|
33
33
|
var _subscanService = require("@subwallet/extension-base/services/subscan-service");
|
|
34
34
|
var _subscanChainMap = require("@subwallet/extension-base/services/subscan-service/subscan-chain-map");
|
|
35
|
+
var _swapService = require("@subwallet/extension-base/services/swap-service");
|
|
35
36
|
var _transactionService = _interopRequireDefault(require("@subwallet/extension-base/services/transaction-service"));
|
|
36
37
|
var _walletConnectService = _interopRequireDefault(require("@subwallet/extension-base/services/wallet-connect-service"));
|
|
37
38
|
var _AccountRef = _interopRequireDefault(require("@subwallet/extension-base/stores/AccountRef"));
|
|
@@ -111,6 +112,7 @@ class KoniState {
|
|
|
111
112
|
this.transactionService = new _transactionService.default(this);
|
|
112
113
|
this.earningService = new _service.default(this);
|
|
113
114
|
this.feeService = new _service2.default(this);
|
|
115
|
+
this.swapService = new _swapService.SwapService(this);
|
|
114
116
|
this.subscription = new _subscription.KoniSubscription(this, this.dbService);
|
|
115
117
|
this.cron = new _cron.KoniCron(this, this.subscription, this.dbService);
|
|
116
118
|
this.logger = (0, _util.logger)('State');
|
|
@@ -234,6 +236,7 @@ class KoniState {
|
|
|
234
236
|
this.eventService.emit('chain.ready', true);
|
|
235
237
|
await this.balanceService.init();
|
|
236
238
|
await this.earningService.init();
|
|
239
|
+
await this.swapService.init();
|
|
237
240
|
this.onReady();
|
|
238
241
|
this.onAccountAdd();
|
|
239
242
|
this.onAccountRemove();
|
|
@@ -1224,17 +1227,34 @@ class KoniState {
|
|
|
1224
1227
|
maxFeePerGas: autoFormatNumber(transactionParams.maxFeePerGas),
|
|
1225
1228
|
data: transactionParams.data
|
|
1226
1229
|
};
|
|
1230
|
+
const getTransactionGas = async () => {
|
|
1231
|
+
try {
|
|
1232
|
+
transaction.gas = await web3.eth.estimateGas({
|
|
1233
|
+
...transaction
|
|
1234
|
+
});
|
|
1235
|
+
} catch (e) {
|
|
1236
|
+
// @ts-ignore
|
|
1237
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
1238
|
+
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.INVALID_PARAMS, e === null || e === void 0 ? void 0 : e.message);
|
|
1239
|
+
}
|
|
1240
|
+
};
|
|
1227
1241
|
|
|
1228
1242
|
// Calculate transaction data
|
|
1229
1243
|
try {
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1244
|
+
await Promise.race([getTransactionGas(), (0, _utils3.wait)(3000).then(async () => {
|
|
1245
|
+
if (!transaction.gas) {
|
|
1246
|
+
await this.chainService.initSingleApi(networkKey);
|
|
1247
|
+
await getTransactionGas();
|
|
1248
|
+
}
|
|
1249
|
+
})]);
|
|
1233
1250
|
} catch (e) {
|
|
1234
1251
|
// @ts-ignore
|
|
1235
1252
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
1236
1253
|
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.INVALID_PARAMS, e === null || e === void 0 ? void 0 : e.message);
|
|
1237
1254
|
}
|
|
1255
|
+
if (!transaction.gas) {
|
|
1256
|
+
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.INVALID_PARAMS);
|
|
1257
|
+
}
|
|
1238
1258
|
let estimateGas;
|
|
1239
1259
|
|
|
1240
1260
|
// TODO: Review, If not override, transaction maybe fail because fee too low
|
|
@@ -1419,7 +1439,7 @@ class KoniState {
|
|
|
1419
1439
|
// Stopping services
|
|
1420
1440
|
await Promise.all([this.cron.stop(), this.subscription.stop()]);
|
|
1421
1441
|
await this.pauseAllNetworks(undefined, 'IDLE mode');
|
|
1422
|
-
await Promise.all([this.historyService.stop(), this.priceService.stop(), this.balanceService.stop(), this.earningService.stop()]);
|
|
1442
|
+
await Promise.all([this.historyService.stop(), this.priceService.stop(), this.balanceService.stop(), this.earningService.stop(), this.swapService.stop()]);
|
|
1423
1443
|
|
|
1424
1444
|
// Complete sleeping
|
|
1425
1445
|
sleeping.resolve();
|
|
@@ -1452,7 +1472,7 @@ class KoniState {
|
|
|
1452
1472
|
}
|
|
1453
1473
|
|
|
1454
1474
|
// Start services
|
|
1455
|
-
await Promise.all([this.cron.start(), this.subscription.start(), this.historyService.start(), this.priceService.start(), this.balanceService.start(), this.earningService.start()]);
|
|
1475
|
+
await Promise.all([this.cron.start(), this.subscription.start(), this.historyService.start(), this.priceService.start(), this.balanceService.start(), this.earningService.start(), this.swapService.start()]);
|
|
1456
1476
|
|
|
1457
1477
|
// Complete starting
|
|
1458
1478
|
starting.resolve();
|
package/cjs/packageInfo.js
CHANGED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getAccountJsonByAddress = void 0;
|
|
8
|
+
exports.subscribeBalance = subscribeBalance;
|
|
9
|
+
var _types = require("@subwallet/chain-list/types");
|
|
10
|
+
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
11
|
+
var _handlers = require("@subwallet/extension-base/koni/background/handlers");
|
|
12
|
+
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
13
|
+
var _utils2 = require("@subwallet/extension-base/utils");
|
|
14
|
+
var _uiKeyring = _interopRequireDefault(require("@subwallet/ui-keyring"));
|
|
15
|
+
var _evm = require("./evm");
|
|
16
|
+
var _substrate = require("./substrate");
|
|
17
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
18
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @function getAccountJsonByAddress
|
|
22
|
+
* @desc Get account info by address
|
|
23
|
+
* <p>
|
|
24
|
+
* Note: Use on the background only
|
|
25
|
+
* </p>
|
|
26
|
+
* @param {string} address - Address
|
|
27
|
+
* @returns {AccountJson|null} - Account info or null if not found
|
|
28
|
+
*/
|
|
29
|
+
const getAccountJsonByAddress = address => {
|
|
30
|
+
try {
|
|
31
|
+
const pair = _uiKeyring.default.getPair(address);
|
|
32
|
+
if (pair) {
|
|
33
|
+
return {
|
|
34
|
+
address: pair.address,
|
|
35
|
+
type: pair.type,
|
|
36
|
+
...pair.meta
|
|
37
|
+
};
|
|
38
|
+
} else {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
} catch (e) {
|
|
42
|
+
console.warn(e);
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
exports.getAccountJsonByAddress = getAccountJsonByAddress;
|
|
47
|
+
const filterAddress = (addresses, chainInfo) => {
|
|
48
|
+
const isEvmChain = (0, _utils._isChainEvmCompatible)(chainInfo);
|
|
49
|
+
const [substrateAddresses, evmAddresses] = (0, _utils2.categoryAddresses)(addresses);
|
|
50
|
+
if (isEvmChain) {
|
|
51
|
+
return [evmAddresses, substrateAddresses];
|
|
52
|
+
} else {
|
|
53
|
+
const fetchList = [];
|
|
54
|
+
const unfetchList = [];
|
|
55
|
+
substrateAddresses.forEach(address => {
|
|
56
|
+
const account = getAccountJsonByAddress(address);
|
|
57
|
+
if (account) {
|
|
58
|
+
if (account.isHardware) {
|
|
59
|
+
const availGen = account.availableGenesisHashes || [];
|
|
60
|
+
const gen = (0, _utils._getSubstrateGenesisHash)(chainInfo);
|
|
61
|
+
if (availGen.includes(gen)) {
|
|
62
|
+
fetchList.push(address);
|
|
63
|
+
} else {
|
|
64
|
+
unfetchList.push(address);
|
|
65
|
+
}
|
|
66
|
+
} else {
|
|
67
|
+
fetchList.push(address);
|
|
68
|
+
}
|
|
69
|
+
} else {
|
|
70
|
+
fetchList.push(address);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
return [fetchList, [...unfetchList, ...evmAddresses]];
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
// main subscription
|
|
78
|
+
function subscribeBalance(addresses, chainInfoMap, substrateApiMap, evmApiMap, callback) {
|
|
79
|
+
// Looping over each chain
|
|
80
|
+
const unsubList = Object.entries(chainInfoMap).map(async _ref => {
|
|
81
|
+
let [chainSlug, chainInfo] = _ref;
|
|
82
|
+
const [useAddresses, notSupportAddresses] = filterAddress(addresses, chainInfo);
|
|
83
|
+
if (notSupportAddresses.length) {
|
|
84
|
+
const tokens = _handlers.state.chainService.getAssetByChainAndType(chainSlug, [_types._AssetType.NATIVE, _types._AssetType.ERC20, _types._AssetType.PSP22, _types._AssetType.LOCAL]);
|
|
85
|
+
const assetSetting = await _handlers.state.chainService.getAssetSettings();
|
|
86
|
+
const filtered = Object.values(tokens).filter(_ref2 => {
|
|
87
|
+
var _assetSetting$slug;
|
|
88
|
+
let {
|
|
89
|
+
slug
|
|
90
|
+
} = _ref2;
|
|
91
|
+
return (_assetSetting$slug = assetSetting[slug]) === null || _assetSetting$slug === void 0 ? void 0 : _assetSetting$slug.visible;
|
|
92
|
+
});
|
|
93
|
+
const now = new Date().getTime();
|
|
94
|
+
notSupportAddresses.forEach(address => {
|
|
95
|
+
const items = filtered.map(token => {
|
|
96
|
+
return {
|
|
97
|
+
address,
|
|
98
|
+
tokenSlug: token.slug,
|
|
99
|
+
free: '0',
|
|
100
|
+
locked: '0',
|
|
101
|
+
state: _KoniTypes.APIItemState.NOT_SUPPORT,
|
|
102
|
+
timestamp: now
|
|
103
|
+
};
|
|
104
|
+
});
|
|
105
|
+
callback(items);
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
if ((0, _utils._isPureEvmChain)(chainInfo)) {
|
|
109
|
+
const nativeTokenInfo = _handlers.state.getNativeTokenInfo(chainSlug);
|
|
110
|
+
return (0, _evm.subscribeEVMBalance)(chainSlug, useAddresses, evmApiMap, callback, nativeTokenInfo);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// if (!useAddresses || useAddresses.length === 0 || _PURE_EVM_CHAINS.indexOf(chainSlug) > -1) {
|
|
114
|
+
// const fungibleTokensByChain = state.chainService.getFungibleTokensByChain(chainSlug, true);
|
|
115
|
+
// const now = new Date().getTime();
|
|
116
|
+
//
|
|
117
|
+
// Object.values(fungibleTokensByChain).map((token) => {
|
|
118
|
+
// return {
|
|
119
|
+
// tokenSlug: token.slug,
|
|
120
|
+
// free: '0',
|
|
121
|
+
// locked: '0',
|
|
122
|
+
// state: APIItemState.READY,
|
|
123
|
+
// timestamp: now
|
|
124
|
+
// } as BalanceItem;
|
|
125
|
+
// }).forEach(callback);
|
|
126
|
+
//
|
|
127
|
+
// return undefined;
|
|
128
|
+
// }
|
|
129
|
+
|
|
130
|
+
const networkAPI = await substrateApiMap[chainSlug].isReady;
|
|
131
|
+
return (0, _substrate.subscribeSubstrateBalance)(useAddresses, chainInfo, chainSlug, networkAPI, evmApiMap, callback);
|
|
132
|
+
});
|
|
133
|
+
return () => {
|
|
134
|
+
unsubList.forEach(subProm => {
|
|
135
|
+
subProm.then(unsub => {
|
|
136
|
+
unsub && unsub();
|
|
137
|
+
}).catch(console.error);
|
|
138
|
+
});
|
|
139
|
+
};
|
|
140
|
+
}
|
|
@@ -98,7 +98,8 @@ const subscribeWithSystemAccountPallet = async _ref => {
|
|
|
98
98
|
if ((0, _utils2._isSubstrateRelayChain)(chainInfo) && substrateApi.query.nominationPools) {
|
|
99
99
|
var _substrateApi$rx$quer;
|
|
100
100
|
poolSubscribe = (_substrateApi$rx$quer = substrateApi.rx.query.nominationPools.poolMembers) === null || _substrateApi$rx$quer === void 0 ? void 0 : _substrateApi$rx$quer.multi(addresses);
|
|
101
|
-
}
|
|
101
|
+
}
|
|
102
|
+
if (!poolSubscribe) {
|
|
102
103
|
poolSubscribe = new _rxjs.Observable(subscriber => {
|
|
103
104
|
subscriber.next(addresses.map(() => ({
|
|
104
105
|
toPrimitive() {
|
|
@@ -191,7 +191,8 @@ class BalanceService {
|
|
|
191
191
|
const chainInfoMap = this.state.chainService.getChainInfoMap();
|
|
192
192
|
const evmApiMap = this.state.chainService.getEvmApiMap();
|
|
193
193
|
const substrateApiMap = this.state.chainService.getSubstrateApiMap();
|
|
194
|
-
|
|
194
|
+
let unsub = _util.noop;
|
|
195
|
+
unsub = (0, _helpers.subscribeBalance)([address], [chain], [tSlug], assetMap, chainInfoMap, substrateApiMap, evmApiMap, result => {
|
|
195
196
|
const rs = result[0];
|
|
196
197
|
if (rs.tokenSlug === tSlug) {
|
|
197
198
|
hasError = false;
|
|
@@ -203,15 +204,17 @@ class BalanceService {
|
|
|
203
204
|
if (callback) {
|
|
204
205
|
callback(balance);
|
|
205
206
|
} else {
|
|
207
|
+
var _unsub;
|
|
206
208
|
// Auto unsubscribe if no callback
|
|
207
|
-
unsub();
|
|
209
|
+
(_unsub = unsub) === null || _unsub === void 0 ? void 0 : _unsub();
|
|
208
210
|
}
|
|
209
211
|
resolve([unsub, balance]);
|
|
210
212
|
}
|
|
211
213
|
});
|
|
212
214
|
setTimeout(() => {
|
|
213
215
|
if (hasError) {
|
|
214
|
-
|
|
216
|
+
var _unsub2;
|
|
217
|
+
(_unsub2 = unsub) === null || _unsub2 === void 0 ? void 0 : _unsub2();
|
|
215
218
|
reject(new Error((0, _i18next.t)('Failed to get balance. Please check your internet connection or change your network endpoint')));
|
|
216
219
|
}
|
|
217
220
|
}, 9999);
|
|
@@ -39,7 +39,7 @@ const _BALANCE_CHAIN_GROUP = {
|
|
|
39
39
|
kintsugi: ['kintsugi', 'interlay', 'kintsugi_test', 'mangatax_para'],
|
|
40
40
|
genshiro: ['genshiro_testnet', 'genshiro'],
|
|
41
41
|
equilibrium_parachain: ['equilibrium_parachain'],
|
|
42
|
-
bifrost: ['bifrost', 'acala', 'karura', 'acala_testnet', 'pioneer', 'bitcountry', 'bifrost_dot', 'hydradx_main', 'pendulum', 'amplitude', 'continuum_network'],
|
|
42
|
+
bifrost: ['bifrost', 'acala', 'karura', 'acala_testnet', 'pioneer', 'bitcountry', 'bifrost_dot', 'hydradx_main', 'hydradx_rococo', 'pendulum', 'amplitude', 'continuum_network'],
|
|
43
43
|
statemine: ['statemine', 'astar', 'shiden', 'statemint', 'moonbeam', 'moonbase', 'moonriver', 'crabParachain', 'darwinia2', 'parallel', 'calamari', 'manta_network', 'rococo_assethub', 'liberlandTest', 'liberland', 'dentnet', 'pangolin', 'crust', 'phala', 'shibuya'],
|
|
44
44
|
kusama: ['kusama', 'kintsugi', 'kintsugi_test', 'interlay', 'acala', 'statemint', 'karura', 'bifrost'],
|
|
45
45
|
// perhaps there are some runtime updates
|
|
@@ -42,6 +42,7 @@ class ChainService {
|
|
|
42
42
|
assetRegistrySubject = new _rxjs.Subject();
|
|
43
43
|
multiChainAssetMapSubject = new _rxjs.Subject();
|
|
44
44
|
xcmRefMapSubject = new _rxjs.Subject();
|
|
45
|
+
swapRefMapSubject = new _rxjs.Subject();
|
|
45
46
|
assetLogoMapSubject = new _rxjs.BehaviorSubject(_chainList.AssetLogoMap);
|
|
46
47
|
chainLogoMapSubject = new _rxjs.BehaviorSubject(_chainList.ChainLogoMap);
|
|
47
48
|
assetMapPatch = JSON.stringify({});
|
|
@@ -57,6 +58,7 @@ class ChainService {
|
|
|
57
58
|
this.chainStateMapSubject.next(this.dataMap.chainStateMap);
|
|
58
59
|
this.assetRegistrySubject.next(this.dataMap.assetRegistry);
|
|
59
60
|
this.xcmRefMapSubject.next(this.xcmRefMap);
|
|
61
|
+
this.swapRefMapSubject.next(this.swapRefMap);
|
|
60
62
|
if (_utils2.MODULE_SUPPORT.MANTA_ZK) {
|
|
61
63
|
console.log('Init Manta ZK');
|
|
62
64
|
this.mantaChainHandler = new _MantaPrivateHandler.MantaPrivateHandler(dbService);
|
|
@@ -65,6 +67,9 @@ class ChainService {
|
|
|
65
67
|
this.evmChainHandler = new _EvmChainHandler.EvmChainHandler(this);
|
|
66
68
|
this.logger = (0, _logger.logger)('chain-service');
|
|
67
69
|
}
|
|
70
|
+
subscribeSwapRefMap() {
|
|
71
|
+
return this.swapRefMapSubject;
|
|
72
|
+
}
|
|
68
73
|
|
|
69
74
|
// Getter
|
|
70
75
|
get xcmRefMap() {
|
|
@@ -77,6 +82,16 @@ class ChainService {
|
|
|
77
82
|
});
|
|
78
83
|
return result;
|
|
79
84
|
}
|
|
85
|
+
get swapRefMap() {
|
|
86
|
+
const result = {};
|
|
87
|
+
Object.entries(this.dataMap.assetRefMap).forEach(_ref2 => {
|
|
88
|
+
let [key, assetRef] = _ref2;
|
|
89
|
+
if (assetRef.path === _types._AssetRefPath.SWAP) {
|
|
90
|
+
result[key] = assetRef;
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
80
95
|
getEvmApi(slug) {
|
|
81
96
|
return this.evmChainHandler.getEvmApiByChain(slug);
|
|
82
97
|
}
|
|
@@ -200,11 +215,11 @@ class ChainService {
|
|
|
200
215
|
return this.getChainStatusMap()[key];
|
|
201
216
|
}
|
|
202
217
|
getActiveChains() {
|
|
203
|
-
return Object.entries(this.dataMap.chainStateMap).filter(
|
|
204
|
-
let [, chainState] =
|
|
218
|
+
return Object.entries(this.dataMap.chainStateMap).filter(_ref3 => {
|
|
219
|
+
let [, chainState] = _ref3;
|
|
205
220
|
return (0, _utils._isChainEnabled)(chainState);
|
|
206
|
-
}).map(
|
|
207
|
-
let [key] =
|
|
221
|
+
}).map(_ref4 => {
|
|
222
|
+
let [key] = _ref4;
|
|
208
223
|
return key;
|
|
209
224
|
});
|
|
210
225
|
}
|
|
@@ -364,8 +379,8 @@ class ChainService {
|
|
|
364
379
|
(0, _utils2.addLazy)('updateChainConnectionStatus', () => {
|
|
365
380
|
const chainStatusMap = this.getChainStatusMap();
|
|
366
381
|
let update = false;
|
|
367
|
-
Object.entries(this.connectionStatusQueueMap).forEach(
|
|
368
|
-
let [slug, status] =
|
|
382
|
+
Object.entries(this.connectionStatusQueueMap).forEach(_ref5 => {
|
|
383
|
+
let [slug, status] = _ref5;
|
|
369
384
|
if (chainStatusMap[slug]) {
|
|
370
385
|
if (chainStatusMap[slug].connectionStatus !== status) {
|
|
371
386
|
chainStatusMap[slug].connectionStatus = status;
|
|
@@ -497,12 +512,13 @@ class ChainService {
|
|
|
497
512
|
});
|
|
498
513
|
this.dataMap.assetRefMap = updatedAssetRefMap;
|
|
499
514
|
this.xcmRefMapSubject.next(this.xcmRefMap);
|
|
515
|
+
this.swapRefMapSubject.next(this.swapRefMap);
|
|
500
516
|
this.logger.log('Finished updating latest asset ref');
|
|
501
517
|
}
|
|
502
518
|
handleLatestPriceId(latestPriceIds) {
|
|
503
519
|
let isUpdated = false;
|
|
504
|
-
Object.entries(latestPriceIds).forEach(
|
|
505
|
-
let [slug, priceId] =
|
|
520
|
+
Object.entries(latestPriceIds).forEach(_ref6 => {
|
|
521
|
+
let [slug, priceId] = _ref6;
|
|
506
522
|
if (this.dataMap.assetRegistry[slug] && this.dataMap.assetRegistry[slug].priceId !== priceId) {
|
|
507
523
|
isUpdated = true;
|
|
508
524
|
this.dataMap.assetRegistry[slug].priceId = priceId;
|
|
@@ -581,8 +597,8 @@ class ChainService {
|
|
|
581
597
|
}
|
|
582
598
|
}
|
|
583
599
|
handleLatestData() {
|
|
584
|
-
this.fetchLatestAssetData().then(
|
|
585
|
-
let [latestAssetInfo, latestAssetLogoMap] =
|
|
600
|
+
this.fetchLatestAssetData().then(_ref7 => {
|
|
601
|
+
let [latestAssetInfo, latestAssetLogoMap] = _ref7;
|
|
586
602
|
this.eventService.waitAssetReady.then(() => {
|
|
587
603
|
this.handleLatestAssetData(latestAssetInfo, latestAssetLogoMap);
|
|
588
604
|
}).catch(console.error);
|
|
@@ -590,8 +606,8 @@ class ChainService {
|
|
|
590
606
|
this.fetchLatestChainData().then(latestChainInfo => {
|
|
591
607
|
this.handleLatestChainData(latestChainInfo);
|
|
592
608
|
}).catch(console.error);
|
|
593
|
-
this.fetchLatestAssetRef().then(
|
|
594
|
-
let [latestAssetRef, latestAssetRefMap] =
|
|
609
|
+
this.fetchLatestAssetRef().then(_ref8 => {
|
|
610
|
+
let [latestAssetRef, latestAssetRefMap] = _ref8;
|
|
595
611
|
this.handleLatestAssetRef(latestAssetRef, latestAssetRefMap);
|
|
596
612
|
}).catch(console.error);
|
|
597
613
|
this.fetchLatestPriceIdsData().then(latestPriceIds => {
|
|
@@ -601,12 +617,12 @@ class ChainService {
|
|
|
601
617
|
async initApis() {
|
|
602
618
|
const chainInfoMap = this.getChainInfoMap();
|
|
603
619
|
const chainStateMap = this.getChainStateMap();
|
|
604
|
-
await Promise.all(Object.entries(chainInfoMap).filter(
|
|
620
|
+
await Promise.all(Object.entries(chainInfoMap).filter(_ref9 => {
|
|
605
621
|
var _chainStateMap$slug;
|
|
606
|
-
let [slug] =
|
|
622
|
+
let [slug] = _ref9;
|
|
607
623
|
return (_chainStateMap$slug = chainStateMap[slug]) === null || _chainStateMap$slug === void 0 ? void 0 : _chainStateMap$slug.active;
|
|
608
|
-
}).map(
|
|
609
|
-
let [, chainInfo] =
|
|
624
|
+
}).map(_ref10 => {
|
|
625
|
+
let [, chainInfo] = _ref10;
|
|
610
626
|
try {
|
|
611
627
|
return this.initApiForChain(chainInfo);
|
|
612
628
|
} catch (e) {
|
|
@@ -615,6 +631,15 @@ class ChainService {
|
|
|
615
631
|
}
|
|
616
632
|
}));
|
|
617
633
|
}
|
|
634
|
+
async initSingleApi(slug) {
|
|
635
|
+
const chainInfoMap = this.getChainInfoMap();
|
|
636
|
+
const chainStateMap = this.getChainStateMap();
|
|
637
|
+
if (!chainStateMap[slug].active) {
|
|
638
|
+
return false;
|
|
639
|
+
}
|
|
640
|
+
await this.initApiForChain(chainInfoMap[slug]);
|
|
641
|
+
return true;
|
|
642
|
+
}
|
|
618
643
|
async initApiForChain(chainInfo) {
|
|
619
644
|
const {
|
|
620
645
|
endpoint,
|
|
@@ -949,8 +974,8 @@ class ChainService {
|
|
|
949
974
|
}
|
|
950
975
|
|
|
951
976
|
// Fill in the missing chainState and storageData (new chains never before seen)
|
|
952
|
-
Object.entries(mergedChainInfoMap).forEach(
|
|
953
|
-
let [slug, chainInfo] =
|
|
977
|
+
Object.entries(mergedChainInfoMap).forEach(_ref11 => {
|
|
978
|
+
let [slug, chainInfo] = _ref11;
|
|
954
979
|
if (!(slug in this.dataMap.chainStateMap)) {
|
|
955
980
|
this.dataMap.chainStateMap[slug] = {
|
|
956
981
|
currentProvider: Object.keys(chainInfo.providers)[0],
|
|
@@ -55,6 +55,7 @@ var _exportNames = {
|
|
|
55
55
|
_isAssetValuable: true,
|
|
56
56
|
_getMultiChainAsset: true,
|
|
57
57
|
_getAssetPriceId: true,
|
|
58
|
+
_getAssetName: true,
|
|
58
59
|
_getMultiChainAssetPriceId: true,
|
|
59
60
|
_getAssetSymbol: true,
|
|
60
61
|
_getMultiChainAssetSymbol: true,
|
|
@@ -78,6 +79,7 @@ var _exportNames = {
|
|
|
78
79
|
exports._checkSmartContractSupportByChain = _checkSmartContractSupportByChain;
|
|
79
80
|
exports._generateCustomProviderKey = _generateCustomProviderKey;
|
|
80
81
|
exports._getAssetDecimals = _getAssetDecimals;
|
|
82
|
+
exports._getAssetName = _getAssetName;
|
|
81
83
|
exports._getAssetOriginChain = _getAssetOriginChain;
|
|
82
84
|
exports._getAssetPriceId = _getAssetPriceId;
|
|
83
85
|
exports._getAssetSymbol = _getAssetSymbol;
|
|
@@ -439,6 +441,9 @@ function _getMultiChainAsset(assetInfo) {
|
|
|
439
441
|
function _getAssetPriceId(assetInfo) {
|
|
440
442
|
return (assetInfo === null || assetInfo === void 0 ? void 0 : assetInfo.priceId) || '';
|
|
441
443
|
}
|
|
444
|
+
function _getAssetName(assetInfo) {
|
|
445
|
+
return (assetInfo === null || assetInfo === void 0 ? void 0 : assetInfo.name) || '';
|
|
446
|
+
}
|
|
442
447
|
function _getMultiChainAssetPriceId(multiChainAsset) {
|
|
443
448
|
return (multiChainAsset === null || multiChainAsset === void 0 ? void 0 : multiChainAsset.priceId) || '';
|
|
444
449
|
}
|
|
@@ -449,13 +454,13 @@ function _getMultiChainAssetSymbol(multiChainAsset) {
|
|
|
449
454
|
return multiChainAsset.symbol;
|
|
450
455
|
}
|
|
451
456
|
function _getAssetOriginChain(assetInfo) {
|
|
452
|
-
return assetInfo.originChain;
|
|
457
|
+
return (assetInfo === null || assetInfo === void 0 ? void 0 : assetInfo.originChain) || '';
|
|
453
458
|
}
|
|
454
459
|
function _getChainName(chainInfo) {
|
|
455
460
|
return chainInfo.name;
|
|
456
461
|
}
|
|
457
462
|
function _getAssetDecimals(assetInfo) {
|
|
458
|
-
return assetInfo.decimals || 0;
|
|
463
|
+
return (assetInfo === null || assetInfo === void 0 ? void 0 : assetInfo.decimals) || 0;
|
|
459
464
|
}
|
|
460
465
|
function _getBlockExplorerFromChain(chainInfo) {
|
|
461
466
|
let blockExplorer;
|
|
@@ -12,7 +12,7 @@ var _crossFetch = _interopRequireDefault(require("cross-fetch"));
|
|
|
12
12
|
const PRODUCTION_BRANCHES = ['master', 'webapp', 'webapp-dev'];
|
|
13
13
|
const branchName = process.env.BRANCH_NAME || 'subwallet-dev';
|
|
14
14
|
const fetchDomain = PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'https://chain-list-assets.subwallet.app' : 'https://dev.sw-chain-list-assets.pages.dev';
|
|
15
|
-
const ChainListVersion = '0.2.
|
|
15
|
+
const ChainListVersion = '0.2.55-beta.3';
|
|
16
16
|
async function fetchPatchData(slug) {
|
|
17
17
|
try {
|
|
18
18
|
const fetchPromise = (0, _crossFetch.default)(`${fetchDomain}/patch/${ChainListVersion}/${slug}`);
|