@subwallet/extension-base 1.1.51-1 → 1.1.52-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 +1 -0
- package/cjs/koni/api/tokens/evm/balance.js +1 -2
- package/cjs/koni/api/tokens/evm/transfer.js +3 -5
- package/cjs/koni/api/tokens/evm/web3.js +3 -3
- package/cjs/koni/background/handlers/Extension.js +5 -4
- package/cjs/koni/background/handlers/State.js +21 -122
- package/cjs/koni/background/subscription.js +3 -63
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/BalanceMapImpl.js +2 -2
- package/cjs/services/balance-service/helpers/index.js +27 -0
- package/cjs/services/balance-service/helpers/subscribe/evm.js +33 -15
- package/cjs/services/balance-service/helpers/subscribe/{balance.js → index.js} +46 -29
- package/cjs/services/balance-service/helpers/subscribe/substrate/equilibrium.js +34 -15
- package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +156 -72
- package/cjs/services/balance-service/index.js +371 -44
- package/cjs/services/chain-service/constants.js +2 -1
- package/cjs/services/chain-service/health-check/utils/asset-info.js +1 -3
- package/cjs/services/chain-service/index.js +60 -26
- package/cjs/services/chain-service/utils/index.js +10 -2
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +2 -2
- package/cjs/services/earning-service/handlers/native-staking/para-chain.js +1 -1
- package/cjs/services/migration-service/scripts/AutoEnableChainsTokens.js +1 -1
- package/cjs/services/storage-service/DatabaseService.js +10 -1
- package/cjs/stores/DetectAccountBalance.js +18 -0
- package/cjs/utils/asset.js +19 -0
- package/cjs/utils/index.js +12 -0
- package/koni/api/tokens/evm/balance.d.ts +1 -1
- package/koni/api/tokens/evm/balance.js +1 -2
- package/koni/api/tokens/evm/transfer.d.ts +2 -2
- package/koni/api/tokens/evm/transfer.js +3 -5
- package/koni/api/tokens/evm/web3.d.ts +1 -1
- package/koni/api/tokens/evm/web3.js +2 -2
- package/koni/background/handlers/Extension.js +5 -4
- package/koni/background/handlers/State.d.ts +2 -13
- package/koni/background/handlers/State.js +21 -121
- package/koni/background/subscription.d.ts +1 -5
- package/koni/background/subscription.js +1 -60
- package/package.json +28 -13
- package/packageInfo.js +1 -1
- package/services/balance-service/BalanceMapImpl.js +1 -1
- package/services/balance-service/helpers/index.d.ts +2 -0
- package/services/balance-service/helpers/index.js +5 -0
- package/services/balance-service/helpers/subscribe/evm.d.ts +3 -5
- package/services/balance-service/helpers/subscribe/evm.js +31 -14
- package/services/balance-service/helpers/subscribe/{balance.d.ts → index.d.ts} +2 -2
- package/services/balance-service/helpers/subscribe/{balance.js → index.js} +41 -28
- package/services/balance-service/helpers/subscribe/substrate/equilibrium.d.ts +3 -4
- package/services/balance-service/helpers/subscribe/substrate/equilibrium.js +29 -13
- package/services/balance-service/helpers/subscribe/substrate/index.d.ts +2 -2
- package/services/balance-service/helpers/subscribe/substrate/index.js +143 -67
- package/services/balance-service/index.d.ts +71 -4
- package/services/balance-service/index.js +372 -46
- package/services/chain-service/constants.js +2 -1
- package/services/chain-service/health-check/utils/asset-info.js +1 -3
- package/services/chain-service/index.d.ts +2 -1
- package/services/chain-service/index.js +61 -27
- package/services/chain-service/types.d.ts +1 -0
- package/services/chain-service/utils/index.js +10 -2
- package/services/chain-service/utils/patch.js +1 -1
- package/services/earning-service/handlers/liquid-staking/stella-swap.js +2 -2
- package/services/earning-service/handlers/native-staking/para-chain.js +1 -1
- package/services/migration-service/scripts/AutoEnableChainsTokens.js +1 -1
- package/services/storage-service/DatabaseService.js +7 -1
- package/services/storage-service/databases/index.d.ts +1 -0
- package/stores/DetectAccountBalance.d.ts +5 -0
- package/stores/DetectAccountBalance.js +10 -0
- package/types/{balance.d.ts → balance/index.d.ts} +16 -0
- package/types/index.js +1 -1
- package/utils/asset.d.ts +2 -0
- package/utils/asset.js +12 -0
- package/utils/index.d.ts +1 -0
- package/utils/index.js +1 -0
- /package/cjs/types/{balance.js → balance/index.js} +0 -0
- /package/types/{balance.js → balance/index.js} +0 -0
|
@@ -8,7 +8,6 @@ exports.getAccountJsonByAddress = void 0;
|
|
|
8
8
|
exports.subscribeBalance = subscribeBalance;
|
|
9
9
|
var _types = require("@subwallet/chain-list/types");
|
|
10
10
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
11
|
-
var _handlers = require("@subwallet/extension-base/koni/background/handlers");
|
|
12
11
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
13
12
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
14
13
|
var _uiKeyring = _interopRequireDefault(require("@subwallet/ui-keyring"));
|
|
@@ -43,6 +42,8 @@ const getAccountJsonByAddress = address => {
|
|
|
43
42
|
return null;
|
|
44
43
|
}
|
|
45
44
|
};
|
|
45
|
+
|
|
46
|
+
/** Filter addresses to subscribe by chain info */
|
|
46
47
|
exports.getAccountJsonByAddress = getAccountJsonByAddress;
|
|
47
48
|
const filterAddress = (addresses, chainInfo) => {
|
|
48
49
|
const isEvmChain = (0, _utils._isChainEvmCompatible)(chainInfo);
|
|
@@ -74,40 +75,56 @@ const filterAddress = (addresses, chainInfo) => {
|
|
|
74
75
|
}
|
|
75
76
|
};
|
|
76
77
|
|
|
77
|
-
//
|
|
78
|
-
|
|
78
|
+
// interface SubscribeBlanceOptions {
|
|
79
|
+
// addresses: string[];
|
|
80
|
+
// chains: string[];
|
|
81
|
+
// tokens: string[];
|
|
82
|
+
// chainInfoMap: Record<string, _ChainInfo>;
|
|
83
|
+
// substrateApiMap: Record<string, _SubstrateApi>;
|
|
84
|
+
// evmApiMap: Record<string, _EvmApi>;
|
|
85
|
+
// callback: (rs: BalanceItem[]) => void;
|
|
86
|
+
// }
|
|
87
|
+
|
|
88
|
+
// main subscription, use for multiple chains, multiple addresses and multiple tokens
|
|
89
|
+
function subscribeBalance(addresses, chains, tokens, _chainAssetMap, _chainInfoMap, substrateApiMap, evmApiMap, callback) {
|
|
90
|
+
// Filter chain and token
|
|
91
|
+
const chainAssetMap = Object.fromEntries(Object.entries(_chainAssetMap).filter(_ref => {
|
|
92
|
+
let [token] = _ref;
|
|
93
|
+
return tokens.includes(token);
|
|
94
|
+
}));
|
|
95
|
+
const chainInfoMap = Object.fromEntries(Object.entries(_chainInfoMap).filter(_ref2 => {
|
|
96
|
+
let [chain] = _ref2;
|
|
97
|
+
return chains.includes(chain);
|
|
98
|
+
}));
|
|
99
|
+
|
|
79
100
|
// Looping over each chain
|
|
80
|
-
const unsubList = Object.
|
|
81
|
-
|
|
101
|
+
const unsubList = Object.values(chainInfoMap).map(async chainInfo => {
|
|
102
|
+
const chainSlug = chainInfo.slug;
|
|
82
103
|
const [useAddresses, notSupportAddresses] = filterAddress(addresses, chainInfo);
|
|
83
104
|
if (notSupportAddresses.length) {
|
|
84
|
-
const tokens =
|
|
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
|
-
});
|
|
105
|
+
const tokens = (0, _utils2.filterAssetsByChainAndType)(chainAssetMap, chainSlug, [_types._AssetType.NATIVE, _types._AssetType.ERC20, _types._AssetType.PSP22, _types._AssetType.LOCAL]);
|
|
93
106
|
const now = new Date().getTime();
|
|
94
|
-
|
|
95
|
-
const items =
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
};
|
|
104
|
-
});
|
|
107
|
+
Object.values(tokens).forEach(token => {
|
|
108
|
+
const items = notSupportAddresses.map(address => ({
|
|
109
|
+
address,
|
|
110
|
+
tokenSlug: token.slug,
|
|
111
|
+
free: '0',
|
|
112
|
+
locked: '0',
|
|
113
|
+
state: _KoniTypes.APIItemState.NOT_SUPPORT,
|
|
114
|
+
timestamp: now
|
|
115
|
+
}));
|
|
105
116
|
callback(items);
|
|
106
117
|
});
|
|
107
118
|
}
|
|
119
|
+
const evmApi = evmApiMap[chainSlug];
|
|
108
120
|
if ((0, _utils._isPureEvmChain)(chainInfo)) {
|
|
109
|
-
|
|
110
|
-
|
|
121
|
+
return (0, _evm.subscribeEVMBalance)({
|
|
122
|
+
addresses: useAddresses,
|
|
123
|
+
assetMap: chainAssetMap,
|
|
124
|
+
callback,
|
|
125
|
+
chainInfo,
|
|
126
|
+
evmApi
|
|
127
|
+
});
|
|
111
128
|
}
|
|
112
129
|
|
|
113
130
|
// if (!useAddresses || useAddresses.length === 0 || _PURE_EVM_CHAINS.indexOf(chainSlug) > -1) {
|
|
@@ -127,8 +144,8 @@ function subscribeBalance(addresses, chainInfoMap, substrateApiMap, evmApiMap, c
|
|
|
127
144
|
// return undefined;
|
|
128
145
|
// }
|
|
129
146
|
|
|
130
|
-
const
|
|
131
|
-
return (0, _substrate.subscribeSubstrateBalance)(useAddresses, chainInfo,
|
|
147
|
+
const substrateApi = await substrateApiMap[chainSlug].isReady;
|
|
148
|
+
return (0, _substrate.subscribeSubstrateBalance)(useAddresses, chainInfo, chainAssetMap, substrateApi, evmApi, callback);
|
|
132
149
|
});
|
|
133
150
|
return () => {
|
|
134
151
|
unsubList.forEach(subProm => {
|
|
@@ -4,22 +4,30 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.subscribeEqBalanceAccountPallet =
|
|
8
|
-
exports.subscribeEquilibriumTokenBalance = subscribeEquilibriumTokenBalance;
|
|
7
|
+
exports.subscribeEquilibriumTokenBalance = exports.subscribeEqBalanceAccountPallet = void 0;
|
|
9
8
|
var _types = require("@subwallet/chain-list/types");
|
|
10
9
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
11
|
-
var _handlers = require("@subwallet/extension-base/koni/background/handlers");
|
|
12
10
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
11
|
+
var _utils2 = require("@subwallet/extension-base/utils");
|
|
13
12
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
14
13
|
var _util = require("@polkadot/util");
|
|
15
14
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
16
15
|
// SPDX-License-Identifier: Apache-2.0
|
|
17
16
|
|
|
18
|
-
|
|
17
|
+
const subscribeEquilibriumTokenBalance = async _ref => {
|
|
18
|
+
let {
|
|
19
|
+
addresses,
|
|
20
|
+
assetMap,
|
|
21
|
+
callback,
|
|
22
|
+
chainInfo,
|
|
23
|
+
includeNativeToken,
|
|
24
|
+
substrateApi
|
|
25
|
+
} = _ref;
|
|
26
|
+
const chain = chainInfo.slug;
|
|
19
27
|
const tokenTypes = includeNativeToken ? [_types._AssetType.NATIVE, _types._AssetType.LOCAL] : [_types._AssetType.LOCAL];
|
|
20
|
-
const tokenMap =
|
|
28
|
+
const tokenMap = (0, _utils2.filterAssetsByChainAndType)(assetMap, chain, tokenTypes);
|
|
21
29
|
try {
|
|
22
|
-
const unsub = await
|
|
30
|
+
const unsub = await substrateApi.query.system.account.multi(addresses, balances => {
|
|
23
31
|
// Equilibrium customizes the SystemAccount pallet
|
|
24
32
|
Object.values(tokenMap).forEach(tokenInfo => {
|
|
25
33
|
const assetId = (0, _utils._getTokenOnChainAssetId)(tokenInfo);
|
|
@@ -40,7 +48,7 @@ async function subscribeEquilibriumTokenBalance(addresses, chain, api, callBack,
|
|
|
40
48
|
tokenSlug: tokenInfo.slug
|
|
41
49
|
};
|
|
42
50
|
});
|
|
43
|
-
|
|
51
|
+
callback(items);
|
|
44
52
|
});
|
|
45
53
|
});
|
|
46
54
|
return () => {
|
|
@@ -58,22 +66,32 @@ async function subscribeEquilibriumTokenBalance(addresses, chain, api, callBack,
|
|
|
58
66
|
tokenSlug: tokenInfo.slug
|
|
59
67
|
};
|
|
60
68
|
});
|
|
61
|
-
|
|
69
|
+
callback(items);
|
|
62
70
|
});
|
|
63
71
|
return () => {
|
|
64
72
|
// Empty
|
|
65
73
|
};
|
|
66
74
|
}
|
|
67
|
-
}
|
|
75
|
+
};
|
|
68
76
|
|
|
69
77
|
// eslint-disable-next-line @typescript-eslint/require-await
|
|
70
|
-
|
|
78
|
+
exports.subscribeEquilibriumTokenBalance = subscribeEquilibriumTokenBalance;
|
|
79
|
+
const subscribeEqBalanceAccountPallet = async _ref2 => {
|
|
80
|
+
let {
|
|
81
|
+
addresses,
|
|
82
|
+
assetMap,
|
|
83
|
+
callback,
|
|
84
|
+
chainInfo,
|
|
85
|
+
includeNativeToken,
|
|
86
|
+
substrateApi
|
|
87
|
+
} = _ref2;
|
|
88
|
+
const chain = chainInfo.slug;
|
|
71
89
|
const tokenTypes = includeNativeToken ? [_types._AssetType.NATIVE, _types._AssetType.LOCAL] : [_types._AssetType.LOCAL];
|
|
72
|
-
const tokenMap =
|
|
90
|
+
const tokenMap = (0, _utils2.filterAssetsByChainAndType)(assetMap, chain, tokenTypes);
|
|
73
91
|
const unsubList = Object.values(tokenMap).map(async tokenInfo => {
|
|
74
92
|
try {
|
|
75
93
|
const assetId = (0, _utils._getTokenOnChainAssetId)(tokenInfo);
|
|
76
|
-
const unsub = await
|
|
94
|
+
const unsub = await substrateApi.query.eqBalances.account.multi(addresses.map(address => [address, [assetId]]), balances => {
|
|
77
95
|
const items = balances.map((balance, index) => {
|
|
78
96
|
return {
|
|
79
97
|
address: addresses[index],
|
|
@@ -84,7 +102,7 @@ async function subscribeEqBalanceAccountPallet(addresses, chain, api, callBack,
|
|
|
84
102
|
tokenSlug: tokenInfo.slug
|
|
85
103
|
};
|
|
86
104
|
});
|
|
87
|
-
|
|
105
|
+
callback(items);
|
|
88
106
|
});
|
|
89
107
|
return unsub;
|
|
90
108
|
} catch (err) {
|
|
@@ -99,7 +117,7 @@ async function subscribeEqBalanceAccountPallet(addresses, chain, api, callBack,
|
|
|
99
117
|
tokenSlug: tokenInfo.slug
|
|
100
118
|
};
|
|
101
119
|
});
|
|
102
|
-
|
|
120
|
+
callback(items);
|
|
103
121
|
return undefined;
|
|
104
122
|
}
|
|
105
123
|
});
|
|
@@ -110,4 +128,5 @@ async function subscribeEqBalanceAccountPallet(addresses, chain, api, callBack,
|
|
|
110
128
|
}).catch(console.error);
|
|
111
129
|
});
|
|
112
130
|
};
|
|
113
|
-
}
|
|
131
|
+
};
|
|
132
|
+
exports.subscribeEqBalanceAccountPallet = subscribeEqBalanceAccountPallet;
|
|
@@ -3,51 +3,72 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.subscribeSubstrateBalance =
|
|
6
|
+
exports.subscribeSubstrateBalance = void 0;
|
|
7
7
|
var _types = require("@subwallet/chain-list/types");
|
|
8
8
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
9
9
|
var _constants = require("@subwallet/extension-base/constants");
|
|
10
10
|
var _wasm = require("@subwallet/extension-base/koni/api/tokens/wasm");
|
|
11
11
|
var _utils = require("@subwallet/extension-base/koni/api/tokens/wasm/utils");
|
|
12
|
-
var _handlers = require("@subwallet/extension-base/koni/background/handlers");
|
|
13
|
-
var _evm = require("@subwallet/extension-base/services/balance-service/helpers/subscribe/evm");
|
|
14
12
|
var _constants2 = require("@subwallet/extension-base/services/chain-service/constants");
|
|
15
13
|
var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
|
|
14
|
+
var _utils3 = require("@subwallet/extension-base/utils");
|
|
15
|
+
var _rxjs = require("rxjs");
|
|
16
16
|
var _util = require("@polkadot/util");
|
|
17
|
+
var _evm = require("../evm");
|
|
17
18
|
var _equilibrium = require("./equilibrium");
|
|
18
19
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
19
20
|
// SPDX-License-Identifier: Apache-2.0
|
|
20
21
|
|
|
21
|
-
async
|
|
22
|
+
const subscribeSubstrateBalance = async (addresses, chainInfo, assetMap, substrateApi, evmApi, callback) => {
|
|
22
23
|
let unsubNativeToken;
|
|
23
|
-
if (!_constants2._BALANCE_CHAIN_GROUP.kintsugi.includes(chain) && !_constants2._BALANCE_CHAIN_GROUP.genshiro.includes(chain) && !_constants2._BALANCE_CHAIN_GROUP.equilibrium_parachain.includes(chain)) {
|
|
24
|
-
unsubNativeToken = await subscribeWithSystemAccountPallet(addresses, chainInfo, networkAPI.api, callBack);
|
|
25
|
-
}
|
|
26
24
|
let unsubLocalToken;
|
|
27
25
|
let unsubEvmContractToken;
|
|
28
26
|
let unsubWasmContractToken;
|
|
29
27
|
let unsubBridgedToken;
|
|
28
|
+
const chain = chainInfo.slug;
|
|
29
|
+
const baseParams = {
|
|
30
|
+
addresses,
|
|
31
|
+
chainInfo,
|
|
32
|
+
assetMap,
|
|
33
|
+
callback
|
|
34
|
+
};
|
|
35
|
+
const substrateParams = {
|
|
36
|
+
...baseParams,
|
|
37
|
+
substrateApi: substrateApi.api
|
|
38
|
+
};
|
|
39
|
+
if (!_constants2._BALANCE_CHAIN_GROUP.kintsugi.includes(chain) && !_constants2._BALANCE_CHAIN_GROUP.genshiro.includes(chain) && !_constants2._BALANCE_CHAIN_GROUP.equilibrium_parachain.includes(chain)) {
|
|
40
|
+
unsubNativeToken = await subscribeWithSystemAccountPallet(substrateParams);
|
|
41
|
+
}
|
|
30
42
|
try {
|
|
31
43
|
if (_constants2._BALANCE_CHAIN_GROUP.bifrost.includes(chain)) {
|
|
32
|
-
unsubLocalToken = await subscribeTokensAccountsPallet(
|
|
44
|
+
unsubLocalToken = await subscribeTokensAccountsPallet(substrateParams);
|
|
33
45
|
} else if (_constants2._BALANCE_CHAIN_GROUP.kintsugi.includes(chain)) {
|
|
34
|
-
unsubLocalToken = await subscribeTokensAccountsPallet(
|
|
46
|
+
unsubLocalToken = await subscribeTokensAccountsPallet({
|
|
47
|
+
...substrateParams,
|
|
48
|
+
includeNativeToken: true
|
|
49
|
+
});
|
|
35
50
|
} else if (_constants2._BALANCE_CHAIN_GROUP.statemine.includes(chain)) {
|
|
36
|
-
unsubLocalToken = await subscribeAssetsAccountPallet(
|
|
51
|
+
unsubLocalToken = await subscribeAssetsAccountPallet(substrateParams);
|
|
37
52
|
} else if (_constants2._BALANCE_CHAIN_GROUP.genshiro.includes(chain) || _constants2._BALANCE_CHAIN_GROUP.equilibrium_parachain.includes(chain)) {
|
|
38
|
-
unsubLocalToken = await (0, _equilibrium.subscribeEquilibriumTokenBalance)(
|
|
53
|
+
unsubLocalToken = await (0, _equilibrium.subscribeEquilibriumTokenBalance)({
|
|
54
|
+
...substrateParams,
|
|
55
|
+
includeNativeToken: true
|
|
56
|
+
});
|
|
39
57
|
} else if (_constants2._BALANCE_CHAIN_GROUP.centrifuge.includes(chain)) {
|
|
40
|
-
unsubLocalToken = await subscribeOrmlTokensPallet(
|
|
58
|
+
unsubLocalToken = await subscribeOrmlTokensPallet(substrateParams);
|
|
41
59
|
}
|
|
42
60
|
if (_constants2._BALANCE_CHAIN_GROUP.supportBridged.includes(chain)) {
|
|
43
|
-
unsubBridgedToken = await subscribeBridgedBalance(
|
|
61
|
+
unsubBridgedToken = await subscribeBridgedBalance(substrateParams);
|
|
44
62
|
}
|
|
45
63
|
if ((0, _utils2._isChainEvmCompatible)(chainInfo)) {
|
|
46
|
-
unsubEvmContractToken = (0, _evm.subscribeERC20Interval)(
|
|
64
|
+
unsubEvmContractToken = (0, _evm.subscribeERC20Interval)({
|
|
65
|
+
...baseParams,
|
|
66
|
+
evmApi: evmApi
|
|
67
|
+
});
|
|
47
68
|
}
|
|
48
69
|
if ((0, _utils2._checkSmartContractSupportByChain)(chainInfo, _types._AssetType.PSP22)) {
|
|
49
70
|
// Get sub-token for substrate-based chains
|
|
50
|
-
unsubWasmContractToken = subscribePSP22Balance(
|
|
71
|
+
unsubWasmContractToken = subscribePSP22Balance(substrateParams);
|
|
51
72
|
}
|
|
52
73
|
} catch (err) {
|
|
53
74
|
console.warn(err);
|
|
@@ -59,32 +80,54 @@ async function subscribeSubstrateBalance(addresses, chainInfo, chain, networkAPI
|
|
|
59
80
|
unsubWasmContractToken && unsubWasmContractToken();
|
|
60
81
|
unsubBridgedToken && unsubBridgedToken();
|
|
61
82
|
};
|
|
62
|
-
}
|
|
83
|
+
};
|
|
63
84
|
|
|
64
85
|
// handler according to different logic
|
|
65
|
-
|
|
86
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
87
|
+
exports.subscribeSubstrateBalance = subscribeSubstrateBalance;
|
|
88
|
+
const subscribeWithSystemAccountPallet = async _ref => {
|
|
89
|
+
let {
|
|
90
|
+
addresses,
|
|
91
|
+
callback,
|
|
92
|
+
chainInfo,
|
|
93
|
+
substrateApi
|
|
94
|
+
} = _ref;
|
|
66
95
|
const chainNativeTokenSlug = (0, _utils2._getChainNativeTokenSlug)(chainInfo);
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
if (poolMemberData) {
|
|
78
|
-
let pooled = new _util.BN(poolMemberData.points.toString());
|
|
79
|
-
Object.entries(poolMemberData.unbondingEras).forEach(_ref => {
|
|
80
|
-
let [, amount] = _ref;
|
|
81
|
-
pooled = pooled.add(new _util.BN(amount));
|
|
82
|
-
});
|
|
83
|
-
pooledStakingBalances.push(pooled);
|
|
84
|
-
} else {
|
|
85
|
-
pooledStakingBalances.push(_util.BN_ZERO);
|
|
86
|
-
}
|
|
96
|
+
const balanceSubscribe = substrateApi.rx.query.system.account.multi(addresses);
|
|
97
|
+
let poolSubscribe;
|
|
98
|
+
if ((0, _utils2._isSubstrateRelayChain)(chainInfo) && substrateApi.query.nominationPools) {
|
|
99
|
+
var _substrateApi$rx$quer;
|
|
100
|
+
poolSubscribe = (_substrateApi$rx$quer = substrateApi.rx.query.nominationPools.poolMembers) === null || _substrateApi$rx$quer === void 0 ? void 0 : _substrateApi$rx$quer.multi(addresses);
|
|
101
|
+
} else {
|
|
102
|
+
poolSubscribe = new _rxjs.Observable(subscriber => {
|
|
103
|
+
subscriber.next(addresses.map(() => ({
|
|
104
|
+
toPrimitive() {
|
|
105
|
+
return null;
|
|
87
106
|
}
|
|
107
|
+
})));
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
const subscription = (0, _rxjs.combineLatest)({
|
|
111
|
+
balances: balanceSubscribe,
|
|
112
|
+
pools: poolSubscribe
|
|
113
|
+
}).subscribe(_ref2 => {
|
|
114
|
+
let {
|
|
115
|
+
balances: _balances,
|
|
116
|
+
pools: poolMemberDatas
|
|
117
|
+
} = _ref2;
|
|
118
|
+
const balances = _balances;
|
|
119
|
+
const pooledStakingBalances = [];
|
|
120
|
+
for (const _poolMemberData of poolMemberDatas) {
|
|
121
|
+
const poolMemberData = _poolMemberData.toPrimitive();
|
|
122
|
+
if (poolMemberData) {
|
|
123
|
+
let pooled = new _util.BN(poolMemberData.points.toString());
|
|
124
|
+
Object.entries(poolMemberData.unbondingEras).forEach(_ref3 => {
|
|
125
|
+
let [, amount] = _ref3;
|
|
126
|
+
pooled = pooled.add(new _util.BN(amount));
|
|
127
|
+
});
|
|
128
|
+
pooledStakingBalances.push(pooled);
|
|
129
|
+
} else {
|
|
130
|
+
pooledStakingBalances.push(_util.BN_ZERO);
|
|
88
131
|
}
|
|
89
132
|
}
|
|
90
133
|
const items = balances.map((balance, index) => {
|
|
@@ -116,14 +159,22 @@ async function subscribeWithSystemAccountPallet(addresses, chainInfo, networkAPI
|
|
|
116
159
|
}
|
|
117
160
|
};
|
|
118
161
|
});
|
|
119
|
-
|
|
162
|
+
callback(items);
|
|
120
163
|
});
|
|
121
164
|
return () => {
|
|
122
|
-
|
|
165
|
+
subscription.unsubscribe();
|
|
123
166
|
};
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
|
|
167
|
+
};
|
|
168
|
+
const subscribeBridgedBalance = async _ref4 => {
|
|
169
|
+
let {
|
|
170
|
+
addresses,
|
|
171
|
+
assetMap,
|
|
172
|
+
callback,
|
|
173
|
+
chainInfo,
|
|
174
|
+
substrateApi
|
|
175
|
+
} = _ref4;
|
|
176
|
+
const chain = chainInfo.slug;
|
|
177
|
+
const tokenMap = (0, _utils3.filterAssetsByChainAndType)(assetMap, chain, [_types._AssetType.LOCAL]);
|
|
127
178
|
|
|
128
179
|
// @ts-ignore
|
|
129
180
|
const unsubList = await Promise.all(Object.values(tokenMap).map(async tokenInfo => {
|
|
@@ -131,7 +182,7 @@ async function subscribeBridgedBalance(addresses, chain, api, callBack) {
|
|
|
131
182
|
const isBridgedToken = (0, _utils2._isBridgedToken)(tokenInfo);
|
|
132
183
|
if (isBridgedToken) {
|
|
133
184
|
const multiLocation = (0, _utils2._getXcmAssetMultilocation)(tokenInfo);
|
|
134
|
-
return await
|
|
185
|
+
return await substrateApi.query.foreignAssets.account.multi(addresses.map(address => [multiLocation, address]), balances => {
|
|
135
186
|
const items = balances.map((balance, index) => {
|
|
136
187
|
const bdata = balance === null || balance === void 0 ? void 0 : balance.toHuman();
|
|
137
188
|
let frozen = _util.BN_ZERO;
|
|
@@ -161,7 +212,7 @@ async function subscribeBridgedBalance(addresses, chain, api, callBack) {
|
|
|
161
212
|
}
|
|
162
213
|
};
|
|
163
214
|
});
|
|
164
|
-
|
|
215
|
+
callback(items);
|
|
165
216
|
});
|
|
166
217
|
}
|
|
167
218
|
} catch (err) {
|
|
@@ -174,25 +225,37 @@ async function subscribeBridgedBalance(addresses, chain, api, callBack) {
|
|
|
174
225
|
unsub && unsub();
|
|
175
226
|
});
|
|
176
227
|
};
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
let
|
|
228
|
+
};
|
|
229
|
+
const subscribePSP22Balance = _ref5 => {
|
|
230
|
+
let {
|
|
231
|
+
addresses,
|
|
232
|
+
assetMap,
|
|
233
|
+
callback,
|
|
234
|
+
chainInfo,
|
|
235
|
+
substrateApi
|
|
236
|
+
} = _ref5;
|
|
237
|
+
const chain = chainInfo.slug;
|
|
180
238
|
const psp22ContractMap = {};
|
|
239
|
+
const tokenList = (0, _utils3.filterAssetsByChainAndType)(assetMap, chain, [_types._AssetType.PSP22]);
|
|
240
|
+
Object.entries(tokenList).forEach(_ref6 => {
|
|
241
|
+
let [slug, tokenInfo] = _ref6;
|
|
242
|
+
psp22ContractMap[slug] = (0, _wasm.getPSP22ContractPromise)(substrateApi, (0, _utils2._getContractAddressOfToken)(tokenInfo));
|
|
243
|
+
});
|
|
181
244
|
const getTokenBalances = () => {
|
|
182
245
|
Object.values(tokenList).map(async tokenInfo => {
|
|
183
246
|
try {
|
|
184
247
|
const contract = psp22ContractMap[tokenInfo.slug];
|
|
185
248
|
const balances = await Promise.all(addresses.map(async address => {
|
|
186
249
|
try {
|
|
187
|
-
var _balanceOf$output,
|
|
250
|
+
var _balanceOf$output, _ref7;
|
|
188
251
|
const _balanceOf = await contract.query['psp22::balanceOf'](address, {
|
|
189
|
-
gasLimit: (0, _utils.getDefaultWeightV2)(
|
|
252
|
+
gasLimit: (0, _utils.getDefaultWeightV2)(substrateApi)
|
|
190
253
|
}, address);
|
|
191
254
|
const balanceObj = _balanceOf === null || _balanceOf === void 0 ? void 0 : (_balanceOf$output = _balanceOf.output) === null || _balanceOf$output === void 0 ? void 0 : _balanceOf$output.toPrimitive();
|
|
192
255
|
return {
|
|
193
256
|
address: address,
|
|
194
257
|
tokenSlug: tokenInfo.slug,
|
|
195
|
-
free: _balanceOf.output ? (
|
|
258
|
+
free: _balanceOf.output ? (_ref7 = balanceObj.ok) !== null && _ref7 !== void 0 ? _ref7 : balanceObj.Ok : '0',
|
|
196
259
|
locked: '0',
|
|
197
260
|
state: _KoniTypes.APIItemState.READY
|
|
198
261
|
};
|
|
@@ -207,27 +270,31 @@ function subscribePSP22Balance(addresses, chain, api, callBack) {
|
|
|
207
270
|
};
|
|
208
271
|
}
|
|
209
272
|
}));
|
|
210
|
-
|
|
273
|
+
callback(balances);
|
|
211
274
|
} catch (err) {
|
|
212
275
|
console.warn(tokenInfo.slug, err); // TODO: error createType
|
|
213
276
|
}
|
|
214
277
|
});
|
|
215
278
|
};
|
|
216
279
|
|
|
217
|
-
tokenList = _handlers.state.getAssetByChainAndAsset(chain, [_types._AssetType.PSP22]);
|
|
218
|
-
Object.entries(tokenList).forEach(_ref3 => {
|
|
219
|
-
let [slug, tokenInfo] = _ref3;
|
|
220
|
-
psp22ContractMap[slug] = (0, _wasm.getPSP22ContractPromise)(api, (0, _utils2._getContractAddressOfToken)(tokenInfo));
|
|
221
|
-
});
|
|
222
280
|
getTokenBalances();
|
|
223
281
|
const interval = setInterval(getTokenBalances, _constants.SUB_TOKEN_REFRESH_BALANCE_INTERVAL);
|
|
224
282
|
return () => {
|
|
225
283
|
clearInterval(interval);
|
|
226
284
|
};
|
|
227
|
-
}
|
|
228
|
-
|
|
285
|
+
};
|
|
286
|
+
const subscribeTokensAccountsPallet = async _ref8 => {
|
|
287
|
+
let {
|
|
288
|
+
addresses,
|
|
289
|
+
assetMap,
|
|
290
|
+
callback,
|
|
291
|
+
chainInfo,
|
|
292
|
+
includeNativeToken,
|
|
293
|
+
substrateApi
|
|
294
|
+
} = _ref8;
|
|
295
|
+
const chain = chainInfo.slug;
|
|
229
296
|
const tokenTypes = includeNativeToken ? [_types._AssetType.NATIVE, _types._AssetType.LOCAL] : [_types._AssetType.LOCAL];
|
|
230
|
-
const tokenMap =
|
|
297
|
+
const tokenMap = (0, _utils3.filterAssetsByChainAndType)(assetMap, chain, tokenTypes);
|
|
231
298
|
const unsubList = await Promise.all(Object.values(tokenMap).map(async tokenInfo => {
|
|
232
299
|
try {
|
|
233
300
|
const onChainInfo = (0, _utils2._getTokenOnChainInfo)(tokenInfo);
|
|
@@ -235,7 +302,7 @@ async function subscribeTokensAccountsPallet(addresses, chain, api, callBack, in
|
|
|
235
302
|
|
|
236
303
|
// Get Token Balance
|
|
237
304
|
// @ts-ignore
|
|
238
|
-
return await
|
|
305
|
+
return await substrateApi.query.tokens.accounts.multi(addresses.map(address => [address, onChainInfo || assetId]), balances => {
|
|
239
306
|
const items = balances.map((balance, index) => {
|
|
240
307
|
const tokenBalance = {
|
|
241
308
|
reserved: balance.reserved || new _util.BN(0),
|
|
@@ -257,7 +324,7 @@ async function subscribeTokensAccountsPallet(addresses, chain, api, callBack, in
|
|
|
257
324
|
}
|
|
258
325
|
};
|
|
259
326
|
});
|
|
260
|
-
|
|
327
|
+
callback(items);
|
|
261
328
|
});
|
|
262
329
|
} catch (err) {
|
|
263
330
|
console.warn(err);
|
|
@@ -269,9 +336,18 @@ async function subscribeTokensAccountsPallet(addresses, chain, api, callBack, in
|
|
|
269
336
|
unsub && unsub();
|
|
270
337
|
});
|
|
271
338
|
};
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
|
|
339
|
+
};
|
|
340
|
+
const subscribeAssetsAccountPallet = async _ref9 => {
|
|
341
|
+
let {
|
|
342
|
+
addresses,
|
|
343
|
+
assetMap,
|
|
344
|
+
callback,
|
|
345
|
+
chainInfo,
|
|
346
|
+
includeNativeToken,
|
|
347
|
+
substrateApi
|
|
348
|
+
} = _ref9;
|
|
349
|
+
const chain = chainInfo.slug;
|
|
350
|
+
const tokenMap = (0, _utils3.filterAssetsByChainAndType)(assetMap, chain, [_types._AssetType.LOCAL]);
|
|
275
351
|
Object.values(tokenMap).forEach(token => {
|
|
276
352
|
if (_constants2._MANTA_ZK_CHAIN_GROUP.includes(token.originChain) && token.symbol.startsWith(_constants2._ZK_ASSET_PREFIX)) {
|
|
277
353
|
delete tokenMap[token.slug];
|
|
@@ -282,7 +358,7 @@ async function subscribeAssetsAccountPallet(addresses, chain, api, callBack) {
|
|
|
282
358
|
const assetIndex = (0, _utils2._getTokenOnChainAssetId)(tokenInfo);
|
|
283
359
|
|
|
284
360
|
// Get Token Balance
|
|
285
|
-
return await
|
|
361
|
+
return await substrateApi.query.assets.account.multi(addresses.map(address => [assetIndex, address]), balances => {
|
|
286
362
|
const items = balances.map((balance, index) => {
|
|
287
363
|
const bdata = balance === null || balance === void 0 ? void 0 : balance.toPrimitive();
|
|
288
364
|
let frozen = _util.BN_ZERO;
|
|
@@ -311,7 +387,7 @@ async function subscribeAssetsAccountPallet(addresses, chain, api, callBack) {
|
|
|
311
387
|
}
|
|
312
388
|
};
|
|
313
389
|
});
|
|
314
|
-
|
|
390
|
+
callback(items);
|
|
315
391
|
});
|
|
316
392
|
} catch (err) {
|
|
317
393
|
console.warn(err);
|
|
@@ -323,19 +399,27 @@ async function subscribeAssetsAccountPallet(addresses, chain, api, callBack) {
|
|
|
323
399
|
unsub && unsub();
|
|
324
400
|
});
|
|
325
401
|
};
|
|
326
|
-
}
|
|
402
|
+
};
|
|
327
403
|
|
|
328
404
|
// eslint-disable-next-line @typescript-eslint/require-await
|
|
329
|
-
|
|
405
|
+
const subscribeOrmlTokensPallet = async _ref10 => {
|
|
406
|
+
let {
|
|
407
|
+
addresses,
|
|
408
|
+
assetMap,
|
|
409
|
+
callback,
|
|
410
|
+
chainInfo,
|
|
411
|
+
substrateApi
|
|
412
|
+
} = _ref10;
|
|
413
|
+
const chain = chainInfo.slug;
|
|
330
414
|
const tokenTypes = [_types._AssetType.LOCAL];
|
|
331
|
-
const tokenMap =
|
|
415
|
+
const tokenMap = (0, _utils3.filterAssetsByChainAndType)(assetMap, chain, tokenTypes);
|
|
332
416
|
const unsubList = Object.values(tokenMap).map(async tokenInfo => {
|
|
333
417
|
try {
|
|
334
418
|
const onChainInfo = (0, _utils2._getTokenOnChainInfo)(tokenInfo);
|
|
335
419
|
|
|
336
420
|
// Get Token Balance
|
|
337
421
|
// @ts-ignore
|
|
338
|
-
const unsub = await
|
|
422
|
+
const unsub = await substrateApi.query.ormlTokens.accounts.multi(addresses.map(address => [address, onChainInfo]), balances => {
|
|
339
423
|
const items = balances.map((balance, index) => {
|
|
340
424
|
const tokenBalance = {
|
|
341
425
|
reserved: balance.reserved || new _util.BN(0),
|
|
@@ -359,7 +443,7 @@ async function subscribeOrmlTokensPallet(addresses, chain, api, callBack) {
|
|
|
359
443
|
}
|
|
360
444
|
};
|
|
361
445
|
});
|
|
362
|
-
|
|
446
|
+
callback(items);
|
|
363
447
|
});
|
|
364
448
|
return unsub;
|
|
365
449
|
} catch (err) {
|
|
@@ -374,4 +458,4 @@ async function subscribeOrmlTokensPallet(addresses, chain, api, callBack) {
|
|
|
374
458
|
}).catch(console.error);
|
|
375
459
|
});
|
|
376
460
|
};
|
|
377
|
-
}
|
|
461
|
+
};
|