@subwallet/extension-base 1.0.2-1b → 1.0.2-2
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 +34 -16
- package/background/KoniTypes.js +7 -6
- package/background/errors/TransactionError.js +1 -21
- package/cjs/background/KoniTypes.js +7 -6
- package/cjs/background/errors/TransactionError.js +0 -20
- package/cjs/constants/index.js +26 -8
- package/cjs/koni/api/dotsama/balance.js +224 -49
- package/cjs/koni/api/dotsama/transfer.js +29 -30
- package/cjs/koni/api/nft/acala_nft/index.js +1 -4
- package/cjs/koni/api/nft/bit.country/index.js +1 -4
- package/cjs/koni/api/nft/evm_nft/index.js +3 -7
- package/cjs/koni/api/nft/index.js +6 -3
- package/cjs/koni/api/nft/karura_nft/index.js +1 -4
- package/cjs/koni/api/nft/rmrk_nft/index.js +1 -8
- package/cjs/koni/api/nft/statemine_nft/index.js +1 -4
- package/cjs/koni/api/nft/unique_nft/index.js +1 -6
- package/cjs/koni/api/nft/wasm_nft/index.js +111 -169
- package/cjs/koni/api/nft/wasm_nft/utils.js +7 -11
- package/cjs/koni/api/staking/bonding/amplitude.js +9 -13
- package/cjs/koni/api/staking/bonding/astar.js +13 -15
- package/cjs/koni/api/staking/bonding/index.js +10 -22
- package/cjs/koni/api/staking/bonding/paraChain.js +2 -85
- package/cjs/koni/api/staking/bonding/relayChain.js +16 -119
- package/cjs/koni/api/staking/bonding/utils.js +8 -27
- package/cjs/koni/api/tokens/wasm/index.js +4 -5
- package/cjs/koni/api/xcm/polkadotXcm.js +1 -1
- package/cjs/koni/api/xcm/utils.js +13 -18
- package/cjs/koni/api/xcm/xTokens.js +1 -1
- package/cjs/koni/api/xcm/xcmPallet.js +6 -9
- package/cjs/koni/background/cron.js +47 -150
- package/cjs/koni/background/handlers/Extension.js +64 -106
- package/cjs/koni/background/handlers/State.js +21 -19
- package/cjs/koni/background/handlers/Tabs.js +1 -8
- package/cjs/koni/background/subscription.js +29 -32
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/chain-service/handler/SubstrateChainHandler.js +8 -13
- package/cjs/services/chain-service/handler/light-client/index.js +0 -2
- package/cjs/services/chain-service/index.js +7 -6
- package/cjs/services/event-service/index.js +1 -5
- package/cjs/services/event-service/types.js +1 -11
- package/cjs/services/history-service/index.js +10 -16
- package/cjs/services/history-service/subsquid-multi-chain-history.js +9 -12
- package/cjs/services/price-service/coingecko.js +1 -0
- package/cjs/services/price-service/index.js +3 -2
- package/cjs/services/request-service/handler/AuthRequestHandler.js +2 -6
- package/cjs/services/storage-service/DatabaseService.js +33 -52
- package/cjs/services/storage-service/db-stores/Nft.js +17 -4
- package/cjs/services/transaction-service/event-parser/index.js +48 -20
- package/cjs/services/transaction-service/index.js +14 -23
- package/cjs/utils/index.js +14 -7
- package/constants/index.d.ts +13 -7
- package/constants/index.js +13 -7
- package/koni/api/dotsama/balance.d.ts +1 -0
- package/koni/api/dotsama/balance.js +197 -22
- package/koni/api/dotsama/transfer.js +4 -5
- package/koni/api/nft/acala_nft/index.js +1 -3
- package/koni/api/nft/bit.country/index.js +1 -3
- package/koni/api/nft/evm_nft/index.js +3 -6
- package/koni/api/nft/index.d.ts +2 -1
- package/koni/api/nft/index.js +6 -3
- package/koni/api/nft/karura_nft/index.js +1 -3
- package/koni/api/nft/nft.d.ts +0 -1
- package/koni/api/nft/rmrk_nft/index.js +1 -8
- package/koni/api/nft/statemine_nft/index.js +1 -3
- package/koni/api/nft/unique_nft/index.js +1 -5
- package/koni/api/nft/wasm_nft/index.d.ts +2 -0
- package/koni/api/nft/wasm_nft/index.js +109 -167
- package/koni/api/nft/wasm_nft/utils.d.ts +5 -7
- package/koni/api/nft/wasm_nft/utils.js +5 -7
- package/koni/api/staking/bonding/amplitude.d.ts +1 -0
- package/koni/api/staking/bonding/amplitude.js +10 -15
- package/koni/api/staking/bonding/astar.js +6 -8
- package/koni/api/staking/bonding/index.d.ts +1 -4
- package/koni/api/staking/bonding/index.js +13 -23
- package/koni/api/staking/bonding/paraChain.d.ts +0 -3
- package/koni/api/staking/bonding/paraChain.js +5 -86
- package/koni/api/staking/bonding/relayChain.d.ts +1 -5
- package/koni/api/staking/bonding/relayChain.js +18 -118
- package/koni/api/staking/bonding/utils.d.ts +2 -3
- package/koni/api/staking/bonding/utils.js +9 -27
- package/koni/api/tokens/wasm/index.js +4 -5
- package/koni/api/xcm/polkadotXcm.js +2 -2
- package/koni/api/xcm/utils.d.ts +6 -5
- package/koni/api/xcm/utils.js +10 -15
- package/koni/api/xcm/xTokens.js +2 -2
- package/koni/api/xcm/xcmPallet.js +9 -10
- package/koni/background/cron.d.ts +1 -6
- package/koni/background/cron.js +48 -151
- package/koni/background/handlers/Extension.d.ts +2 -2
- package/koni/background/handlers/Extension.js +67 -108
- package/koni/background/handlers/State.d.ts +6 -5
- package/koni/background/handlers/State.js +21 -19
- package/koni/background/handlers/Tabs.js +1 -8
- package/koni/background/subscription.js +30 -31
- package/package.json +8 -13
- package/packageInfo.js +1 -1
- package/services/chain-service/handler/SubstrateChainHandler.js +9 -14
- package/services/chain-service/handler/light-client/index.d.ts +1 -17
- package/services/chain-service/handler/light-client/index.js +1 -1
- package/services/chain-service/helper/psp22_abi.json +881 -1041
- package/services/chain-service/helper/psp34_abi.json +1808 -2964
- package/services/chain-service/index.js +7 -6
- package/services/event-service/index.js +1 -5
- package/services/event-service/types.d.ts +9 -5
- package/services/event-service/types.js +1 -4
- package/services/history-service/index.d.ts +1 -1
- package/services/history-service/index.js +10 -16
- package/services/history-service/subsquid-multi-chain-history.js +11 -15
- package/services/price-service/coingecko.js +1 -0
- package/services/price-service/index.js +3 -2
- package/services/request-service/handler/AuthRequestHandler.js +2 -6
- package/services/storage-service/DatabaseService.d.ts +0 -1
- package/services/storage-service/DatabaseService.js +33 -52
- package/services/storage-service/db-stores/Nft.d.ts +2 -1
- package/services/storage-service/db-stores/Nft.js +16 -4
- package/services/transaction-service/event-parser/index.js +49 -21
- package/services/transaction-service/index.js +14 -23
- package/utils/index.d.ts +1 -1
- package/utils/index.js +12 -6
- package/cjs/koni/api/tokens/wasm/utils.js +0 -63
- package/koni/api/tokens/wasm/utils.d.ts +0 -6
- package/koni/api/tokens/wasm/utils.js +0 -54
|
@@ -3,33 +3,34 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.getFreeBalance = getFreeBalance;
|
|
6
7
|
exports.subscribeBalance = subscribeBalance;
|
|
7
8
|
exports.subscribeEVMBalance = subscribeEVMBalance;
|
|
8
9
|
exports.subscribeSubstrateBalance = subscribeSubstrateBalance;
|
|
9
10
|
var _types = require("@subwallet/chain-list/types");
|
|
10
11
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
11
12
|
var _constants = require("@subwallet/extension-base/constants");
|
|
12
|
-
var
|
|
13
|
+
var _balance2 = require("@subwallet/extension-base/koni/api/tokens/evm/balance");
|
|
13
14
|
var _web = require("@subwallet/extension-base/koni/api/tokens/evm/web3");
|
|
14
15
|
var _wasm = require("@subwallet/extension-base/koni/api/tokens/wasm");
|
|
15
|
-
var _utils = require("@subwallet/extension-base/koni/api/tokens/wasm/utils");
|
|
16
16
|
var _handlers = require("@subwallet/extension-base/koni/background/handlers");
|
|
17
17
|
var _constants2 = require("@subwallet/extension-base/services/chain-service/constants");
|
|
18
|
-
var
|
|
19
|
-
var
|
|
18
|
+
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
19
|
+
var _utils2 = require("@subwallet/extension-base/utils");
|
|
20
20
|
var _util = require("@polkadot/util");
|
|
21
|
+
var _utilCrypto = require("@polkadot/util-crypto");
|
|
21
22
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
22
23
|
// SPDX-License-Identifier: Apache-2.0
|
|
23
24
|
|
|
24
25
|
// main subscription
|
|
25
26
|
function subscribeBalance(addresses, chainInfoMap, substrateApiMap, evmApiMap, callback) {
|
|
26
|
-
const [substrateAddresses, evmAddresses] = (0,
|
|
27
|
+
const [substrateAddresses, evmAddresses] = (0, _utils2.categoryAddresses)(addresses);
|
|
27
28
|
|
|
28
29
|
// Looping over each chain
|
|
29
30
|
const unsubList = Object.entries(chainInfoMap).map(async _ref => {
|
|
30
31
|
let [chainSlug, chainInfo] = _ref;
|
|
31
|
-
const useAddresses = (0,
|
|
32
|
-
if ((0,
|
|
32
|
+
const useAddresses = (0, _utils._isChainEvmCompatible)(chainInfo) ? evmAddresses : substrateAddresses;
|
|
33
|
+
if ((0, _utils._isPureEvmChain)(chainInfo)) {
|
|
33
34
|
const nativeTokenInfo = _handlers.state.getNativeTokenInfo(chainSlug);
|
|
34
35
|
return subscribeEVMBalance(chainSlug, useAddresses, evmApiMap, callback, nativeTokenInfo);
|
|
35
36
|
}
|
|
@@ -78,10 +79,10 @@ async function subscribeSubstrateBalance(addresses, chainInfo, chain, networkAPI
|
|
|
78
79
|
} else if (_constants2._BALANCE_CHAIN_GROUP.equilibrium_parachain.includes(chain)) {
|
|
79
80
|
unsubLocalToken = await subscribeEquilibriumTokenBalance(addresses, chain, networkAPI.api, callBack, true);
|
|
80
81
|
}
|
|
81
|
-
if ((0,
|
|
82
|
+
if ((0, _utils._isChainEvmCompatible)(chainInfo)) {
|
|
82
83
|
unsubEvmContractToken = subscribeERC20Interval(addresses, chain, evmApiMap, callBack);
|
|
83
84
|
}
|
|
84
|
-
if ((0,
|
|
85
|
+
if ((0, _utils._checkSmartContractSupportByChain)(chainInfo, _types._AssetType.PSP22)) {
|
|
85
86
|
// Get sub-token for substrate-based chains
|
|
86
87
|
unsubWasmContractToken = subscribePSP22Balance(addresses, chain, networkAPI.api, callBack);
|
|
87
88
|
}
|
|
@@ -98,23 +99,17 @@ async function subscribeSubstrateBalance(addresses, chainInfo, chain, networkAPI
|
|
|
98
99
|
|
|
99
100
|
// handler according to different logic
|
|
100
101
|
async function subscribeWithSystemAccountPallet(addresses, chainInfo, networkAPI, callBack) {
|
|
101
|
-
const chainNativeTokenSlug = (0,
|
|
102
|
+
const chainNativeTokenSlug = (0, _utils._getChainNativeTokenSlug)(chainInfo);
|
|
102
103
|
const unsub = await networkAPI.query.system.account.multi(addresses, async balances => {
|
|
103
104
|
let [total, reserved, miscFrozen, feeFrozen] = [new _util.BN(0), new _util.BN(0), new _util.BN(0), new _util.BN(0)];
|
|
104
105
|
let pooledStakingBalance = _util.BN_ZERO;
|
|
105
|
-
if ((0,
|
|
106
|
+
if ((0, _utils._isSubstrateRelayChain)(chainInfo) && networkAPI.query.nominationPools) {
|
|
106
107
|
const poolMemberDatas = await networkAPI.query.nominationPools.poolMembers.multi(addresses);
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
pooledStakingBalance = pooledStakingBalance.add(pooledBalance);
|
|
113
|
-
Object.entries(poolMemberData.unbondingEras).forEach(_ref2 => {
|
|
114
|
-
let [, amount] = _ref2;
|
|
115
|
-
pooledStakingBalance = pooledStakingBalance.add(new _util.BN(amount));
|
|
116
|
-
});
|
|
117
|
-
}
|
|
108
|
+
for (const _poolMemberData of poolMemberDatas) {
|
|
109
|
+
const poolMemberData = _poolMemberData.toPrimitive();
|
|
110
|
+
if (poolMemberData) {
|
|
111
|
+
const pooledBalance = new _util.BN(poolMemberData.points.toString());
|
|
112
|
+
pooledStakingBalance = pooledStakingBalance.add(pooledBalance);
|
|
118
113
|
}
|
|
119
114
|
}
|
|
120
115
|
}
|
|
@@ -135,7 +130,7 @@ async function subscribeWithSystemAccountPallet(addresses, chainInfo, networkAPI
|
|
|
135
130
|
const free = total.sub(locked);
|
|
136
131
|
callBack({
|
|
137
132
|
tokenSlug: chainNativeTokenSlug,
|
|
138
|
-
free: free.
|
|
133
|
+
free: free.toString(),
|
|
139
134
|
locked: locked.toString(),
|
|
140
135
|
state: _KoniTypes.APIItemState.READY,
|
|
141
136
|
substrateInfo: {
|
|
@@ -149,6 +144,79 @@ async function subscribeWithSystemAccountPallet(addresses, chainInfo, networkAPI
|
|
|
149
144
|
unsub();
|
|
150
145
|
};
|
|
151
146
|
}
|
|
147
|
+
|
|
148
|
+
// deprecated
|
|
149
|
+
// function subscribeDarwiniaBalance (addresses: string[], chainInfo: _ChainInfo, chain: string, networkAPI: ApiPromise, callBack: (rs: BalanceItem) => void) {
|
|
150
|
+
// const tokenMap = state.getAssetByChainAndAsset(chain, [_AssetType.LOCAL]);
|
|
151
|
+
// const nativeTokenSlug = _getChainNativeTokenSlug(chainInfo);
|
|
152
|
+
//
|
|
153
|
+
// let totalBalance: BN = new BN(0);
|
|
154
|
+
// let freeBalance: BN = new BN(0);
|
|
155
|
+
// let miscFrozen: BN = new BN(0);
|
|
156
|
+
// let reservedKtonBalance: BN = new BN(0);
|
|
157
|
+
// let totalKtonBalance: BN = new BN(0);
|
|
158
|
+
//
|
|
159
|
+
// const unsubProms = addresses.map((address) => {
|
|
160
|
+
// return networkAPI.derive.balances?.all(address, async (balance: DeriveBalancesAll) => {
|
|
161
|
+
// // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
162
|
+
// freeBalance = freeBalance.add(balance.availableBalance?.toBn() || new BN(0));
|
|
163
|
+
// miscFrozen = miscFrozen.add(balance.lockedBalance?.toBn() || new BN(0));
|
|
164
|
+
// totalBalance = totalBalance.add(balance.freeBalance?.toBn() || new BN(0));
|
|
165
|
+
//
|
|
166
|
+
// const _systemBalance = await networkAPI.query.system.account(address);
|
|
167
|
+
// const systemBalance = _systemBalance.toHuman() as unknown as AccountInfo;
|
|
168
|
+
//
|
|
169
|
+
// // @ts-ignore
|
|
170
|
+
// const rawTotalKton = (systemBalance.data?.freeKton as string).replaceAll(',', '');
|
|
171
|
+
// // @ts-ignore
|
|
172
|
+
// const rawReservedKton = (systemBalance.data?.reservedKton as string).replaceAll(',', '');
|
|
173
|
+
//
|
|
174
|
+
// // @ts-ignore
|
|
175
|
+
// // eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
176
|
+
// totalKtonBalance = totalKtonBalance.add(new BN(rawTotalKton) || new BN(0));
|
|
177
|
+
// // @ts-ignore
|
|
178
|
+
// // eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
179
|
+
// reservedKtonBalance = reservedKtonBalance.add(new BN(rawReservedKton) || new BN(0));
|
|
180
|
+
//
|
|
181
|
+
// if (Object.keys(tokenMap).length > 1) {
|
|
182
|
+
// for (const tokenInfo of Object.values(tokenMap)) {
|
|
183
|
+
// if (_BALANCE_TOKEN_GROUP.crab.includes(tokenInfo.symbol)) {
|
|
184
|
+
// const freeKton = totalKtonBalance.sub(reservedKtonBalance);
|
|
185
|
+
//
|
|
186
|
+
// callBack({
|
|
187
|
+
// free: freeKton.toString(),
|
|
188
|
+
// locked: reservedKtonBalance.toString(),
|
|
189
|
+
// state: APIItemState.READY,
|
|
190
|
+
// tokenSlug: tokenInfo.slug
|
|
191
|
+
// });
|
|
192
|
+
// break;
|
|
193
|
+
// }
|
|
194
|
+
// }
|
|
195
|
+
// }
|
|
196
|
+
//
|
|
197
|
+
// const free = totalBalance.sub(miscFrozen);
|
|
198
|
+
//
|
|
199
|
+
// callBack({
|
|
200
|
+
// tokenSlug: nativeTokenSlug,
|
|
201
|
+
// free: free.toString(),
|
|
202
|
+
// locked: miscFrozen.toString(),
|
|
203
|
+
// state: APIItemState.READY,
|
|
204
|
+
// substrateInfo: {
|
|
205
|
+
// miscFrozen: miscFrozen.toString()
|
|
206
|
+
// }
|
|
207
|
+
// });
|
|
208
|
+
// });
|
|
209
|
+
// });
|
|
210
|
+
//
|
|
211
|
+
// return () => {
|
|
212
|
+
// Promise.all(unsubProms).then((unsubs) => {
|
|
213
|
+
// unsubs.forEach((unsub) => {
|
|
214
|
+
// unsub && unsub();
|
|
215
|
+
// });
|
|
216
|
+
// }).catch(console.error);
|
|
217
|
+
// };
|
|
218
|
+
// }
|
|
219
|
+
|
|
152
220
|
function subscribeERC20Interval(addresses, chain, evmApiMap, callBack) {
|
|
153
221
|
let tokenList = {};
|
|
154
222
|
const erc20ContractMap = {};
|
|
@@ -161,7 +229,7 @@ function subscribeERC20Interval(addresses, chain, evmApiMap, callBack) {
|
|
|
161
229
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
162
230
|
return contract.methods.balanceOf(address).call();
|
|
163
231
|
}));
|
|
164
|
-
free = (0,
|
|
232
|
+
free = (0, _utils2.sumBN)(balanceList.map(balance => new _util.BN(balance || 0)));
|
|
165
233
|
callBack({
|
|
166
234
|
tokenSlug: tokenInfo.slug,
|
|
167
235
|
free: free.toString(),
|
|
@@ -174,9 +242,9 @@ function subscribeERC20Interval(addresses, chain, evmApiMap, callBack) {
|
|
|
174
242
|
});
|
|
175
243
|
};
|
|
176
244
|
tokenList = _handlers.state.getAssetByChainAndAsset(chain, [_types._AssetType.ERC20]);
|
|
177
|
-
Object.entries(tokenList).forEach(
|
|
178
|
-
let [slug, tokenInfo] =
|
|
179
|
-
erc20ContractMap[slug] = (0, _web.getERC20Contract)(chain, (0,
|
|
245
|
+
Object.entries(tokenList).forEach(_ref2 => {
|
|
246
|
+
let [slug, tokenInfo] = _ref2;
|
|
247
|
+
erc20ContractMap[slug] = (0, _web.getERC20Contract)(chain, (0, _utils._getContractAddressOfToken)(tokenInfo), evmApiMap);
|
|
180
248
|
});
|
|
181
249
|
getTokenBalances();
|
|
182
250
|
const interval = setInterval(getTokenBalances, _constants.SUB_TOKEN_REFRESH_BALANCE_INTERVAL);
|
|
@@ -193,14 +261,12 @@ function subscribePSP22Balance(addresses, chain, api, callBack) {
|
|
|
193
261
|
try {
|
|
194
262
|
const contract = psp22ContractMap[tokenInfo.slug];
|
|
195
263
|
const balances = await Promise.all(addresses.map(async address => {
|
|
196
|
-
var _balanceOf$output;
|
|
197
264
|
const _balanceOf = await contract.query['psp22::balanceOf'](address, {
|
|
198
|
-
gasLimit:
|
|
265
|
+
gasLimit: -1
|
|
199
266
|
}, address);
|
|
200
|
-
|
|
201
|
-
return _balanceOf.output ? balanceObj.ok || balanceObj.Ok : '0';
|
|
267
|
+
return _balanceOf.output ? _balanceOf.output.toString() : '0';
|
|
202
268
|
}));
|
|
203
|
-
free = (0,
|
|
269
|
+
free = (0, _utils2.sumBN)(balances.map(bal => new _util.BN(bal || 0)));
|
|
204
270
|
callBack({
|
|
205
271
|
tokenSlug: tokenInfo.slug,
|
|
206
272
|
free: free.toString(),
|
|
@@ -208,15 +274,14 @@ function subscribePSP22Balance(addresses, chain, api, callBack) {
|
|
|
208
274
|
state: _KoniTypes.APIItemState.READY
|
|
209
275
|
});
|
|
210
276
|
} catch (err) {
|
|
211
|
-
console.
|
|
277
|
+
console.log('There is a problem fetching ' + tokenInfo.slug + ' PSP-22 token balance', err);
|
|
212
278
|
}
|
|
213
279
|
});
|
|
214
280
|
};
|
|
215
|
-
|
|
216
281
|
tokenList = _handlers.state.getAssetByChainAndAsset(chain, [_types._AssetType.PSP22]);
|
|
217
|
-
Object.entries(tokenList).forEach(
|
|
218
|
-
let [slug, tokenInfo] =
|
|
219
|
-
psp22ContractMap[slug] = (0, _wasm.getPSP22ContractPromise)(api, (0,
|
|
282
|
+
Object.entries(tokenList).forEach(_ref3 => {
|
|
283
|
+
let [slug, tokenInfo] = _ref3;
|
|
284
|
+
psp22ContractMap[slug] = (0, _wasm.getPSP22ContractPromise)(api, (0, _utils._getContractAddressOfToken)(tokenInfo));
|
|
220
285
|
});
|
|
221
286
|
getTokenBalances();
|
|
222
287
|
const interval = setInterval(getTokenBalances, _constants.SUB_TOKEN_REFRESH_BALANCE_INTERVAL);
|
|
@@ -230,7 +295,7 @@ async function subscribeEquilibriumTokenBalance(addresses, chain, api, callBack,
|
|
|
230
295
|
const unsub = await api.query.system.account.multi(addresses, balances => {
|
|
231
296
|
// Equilibrium customizes the SystemAccount pallet
|
|
232
297
|
Object.values(tokenMap).forEach(tokenInfo => {
|
|
233
|
-
const assetId = (0,
|
|
298
|
+
const assetId = (0, _utils._getTokenOnChainAssetId)(tokenInfo);
|
|
234
299
|
let tokenFreeBalance = _util.BN_ZERO;
|
|
235
300
|
for (const balance of balances) {
|
|
236
301
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
@@ -263,10 +328,10 @@ async function subscribeEqBalanceAccountPallet(addresses, chain, api, callBack,
|
|
|
263
328
|
const tokenMap = _handlers.state.getAssetByChainAndAsset(chain, tokenTypes);
|
|
264
329
|
const unsubList = Object.values(tokenMap).map(async tokenInfo => {
|
|
265
330
|
try {
|
|
266
|
-
const assetId = (0,
|
|
331
|
+
const assetId = (0, _utils._getTokenOnChainAssetId)(tokenInfo);
|
|
267
332
|
const unsub = await api.query.eqBalances.account.multi(addresses.map(address => [address, [assetId]]), balances => {
|
|
268
333
|
const tokenBalance = {
|
|
269
|
-
free: (0,
|
|
334
|
+
free: (0, _utils2.sumBN)(balances.map(b => b.asPositive)).toString(),
|
|
270
335
|
locked: '0',
|
|
271
336
|
// Equilibrium doesn't show locked balance
|
|
272
337
|
state: _KoniTypes.APIItemState.READY,
|
|
@@ -293,15 +358,15 @@ async function subscribeTokensAccountsPallet(addresses, chain, api, callBack, in
|
|
|
293
358
|
const tokenMap = _handlers.state.getAssetByChainAndAsset(chain, tokenTypes);
|
|
294
359
|
const unsubList = await Promise.all(Object.values(tokenMap).map(async tokenInfo => {
|
|
295
360
|
try {
|
|
296
|
-
const onChainInfo = (0,
|
|
361
|
+
const onChainInfo = (0, _utils._getTokenOnChainInfo)(tokenInfo);
|
|
297
362
|
|
|
298
363
|
// Get Token Balance
|
|
299
364
|
// @ts-ignore
|
|
300
365
|
return await api.query.tokens.accounts.multi(addresses.map(address => [address, onChainInfo]), balances => {
|
|
301
366
|
const tokenBalance = {
|
|
302
|
-
reserved: (0,
|
|
303
|
-
frozen: (0,
|
|
304
|
-
free: (0,
|
|
367
|
+
reserved: (0, _utils2.sumBN)(balances.map(b => b.reserved || new _util.BN(0))),
|
|
368
|
+
frozen: (0, _utils2.sumBN)(balances.map(b => b.frozen || new _util.BN(0))),
|
|
369
|
+
free: (0, _utils2.sumBN)(balances.map(b => b.free || new _util.BN(0))) // free is actually total balance
|
|
305
370
|
};
|
|
306
371
|
|
|
307
372
|
// free balance = total balance - frozen misc
|
|
@@ -334,7 +399,7 @@ async function subscribeAssetsAccountPallet(addresses, chain, api, callBack) {
|
|
|
334
399
|
const tokenMap = _handlers.state.getAssetByChainAndAsset(chain, [_types._AssetType.LOCAL]);
|
|
335
400
|
const unsubList = await Promise.all(Object.values(tokenMap).map(async tokenInfo => {
|
|
336
401
|
try {
|
|
337
|
-
const assetIndex = (0,
|
|
402
|
+
const assetIndex = (0, _utils._getTokenOnChainAssetId)(tokenInfo);
|
|
338
403
|
|
|
339
404
|
// Get Token Balance
|
|
340
405
|
return await api.query.assets.account.multi(addresses.map(address => [assetIndex, address]), balances => {
|
|
@@ -343,11 +408,11 @@ async function subscribeAssetsAccountPallet(addresses, chain, api, callBack) {
|
|
|
343
408
|
balances.forEach(b => {
|
|
344
409
|
// @ts-ignore
|
|
345
410
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-assignment
|
|
346
|
-
const bdata = b === null || b === void 0 ? void 0 : b.
|
|
411
|
+
const bdata = b === null || b === void 0 ? void 0 : b.toJSON();
|
|
347
412
|
if (bdata) {
|
|
348
413
|
// @ts-ignore
|
|
349
414
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument
|
|
350
|
-
const addressBalance = new _util.BN(String(bdata === null || bdata === void 0 ? void 0 : bdata.balance)
|
|
415
|
+
const addressBalance = new _util.BN(String(bdata === null || bdata === void 0 ? void 0 : bdata.balance) || '0');
|
|
351
416
|
|
|
352
417
|
// @ts-ignore
|
|
353
418
|
if (bdata !== null && bdata !== void 0 && bdata.isFrozen) {
|
|
@@ -388,8 +453,8 @@ function subscribeEVMBalance(chain, addresses, evmApiMap, callback, tokenInfo) {
|
|
|
388
453
|
locked: '0'
|
|
389
454
|
};
|
|
390
455
|
function getBalance() {
|
|
391
|
-
(0,
|
|
392
|
-
balanceItem.free = (0,
|
|
456
|
+
(0, _balance2.getEVMBalance)(chain, addresses, evmApiMap).then(balances => {
|
|
457
|
+
balanceItem.free = (0, _utils2.sumBN)(balances.map(b => new _util.BN(b || '0'))).toString();
|
|
393
458
|
balanceItem.state = _KoniTypes.APIItemState.READY;
|
|
394
459
|
callback(balanceItem);
|
|
395
460
|
}).catch(console.warn);
|
|
@@ -401,4 +466,114 @@ function subscribeEVMBalance(chain, addresses, evmApiMap, callback, tokenInfo) {
|
|
|
401
466
|
clearInterval(interval);
|
|
402
467
|
unsub2 && unsub2();
|
|
403
468
|
};
|
|
469
|
+
}
|
|
470
|
+
async function getFreeBalance(chain, address, substrateApiMap, evmApiMap, tokenSlug) {
|
|
471
|
+
const substrateApi = await substrateApiMap[chain].isReady;
|
|
472
|
+
const api = substrateApi.api;
|
|
473
|
+
const web3Api = evmApiMap[chain];
|
|
474
|
+
const tokenInfo = tokenSlug ? _handlers.state.getAssetBySlug(tokenSlug) : _handlers.state.getNativeTokenInfo(chain);
|
|
475
|
+
const chainInfo = _handlers.state.getChainInfo(chain);
|
|
476
|
+
|
|
477
|
+
// Only EVM Address use with EVM network
|
|
478
|
+
if (Boolean(web3Api || (0, _utils._isChainEvmCompatible)(chainInfo)) !== (0, _utilCrypto.isEthereumAddress)(address)) {
|
|
479
|
+
if (!(0, _utilCrypto.isEthereumAddress)(address)) {
|
|
480
|
+
return '0';
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
// web3Api support mean isEthereum Network support
|
|
485
|
+
if (web3Api) {
|
|
486
|
+
if ((0, _utils._isNativeToken)(tokenInfo)) {
|
|
487
|
+
var _web3Api$api;
|
|
488
|
+
return (await ((_web3Api$api = web3Api.api) === null || _web3Api$api === void 0 ? void 0 : _web3Api$api.eth.getBalance(address))) || '0';
|
|
489
|
+
} else {
|
|
490
|
+
if ((0, _utils._getContractAddressOfToken)(tokenInfo).length > 0) {
|
|
491
|
+
return '0';
|
|
492
|
+
}
|
|
493
|
+
const contract = (0, _web.getERC20Contract)(chain, (0, _utils._getContractAddressOfToken)(tokenInfo), evmApiMap);
|
|
494
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
495
|
+
const free = await contract.methods.balanceOf(address).call();
|
|
496
|
+
|
|
497
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-return
|
|
498
|
+
return (free === null || free === void 0 ? void 0 : free.toString()) || '0';
|
|
499
|
+
}
|
|
500
|
+
} else {
|
|
501
|
+
var _balance$availableBal, _balance$availableBal2;
|
|
502
|
+
if (tokenSlug) {
|
|
503
|
+
if ((0, _utils._isSmartContractToken)(tokenInfo)) {
|
|
504
|
+
if ((0, _utils._getContractAddressOfToken)(tokenInfo).length > 0) {
|
|
505
|
+
return '0';
|
|
506
|
+
}
|
|
507
|
+
const contractPromise = (0, _wasm.getPSP22ContractPromise)(api, (0, _utils._getContractAddressOfToken)(tokenInfo));
|
|
508
|
+
const balanceOf = await contractPromise.query['psp22::balanceOf'](address, {
|
|
509
|
+
gasLimit: -1
|
|
510
|
+
}, address);
|
|
511
|
+
return balanceOf.output ? balanceOf.output.toString() : '0';
|
|
512
|
+
} else if (_constants2._BALANCE_CHAIN_GROUP.genshiro.includes(chain)) {
|
|
513
|
+
var _balance$asPositive;
|
|
514
|
+
const onChainInfo = (0, _utils._getTokenOnChainInfo)(tokenInfo);
|
|
515
|
+
const balance = await api.query.eqBalances.account(address, onChainInfo);
|
|
516
|
+
|
|
517
|
+
// @ts-ignore
|
|
518
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return
|
|
519
|
+
return ((_balance$asPositive = balance.asPositive) === null || _balance$asPositive === void 0 ? void 0 : _balance$asPositive.toString()) || '0';
|
|
520
|
+
} else if (_constants2._BALANCE_CHAIN_GROUP.equilibrium_parachain.includes(chain)) {
|
|
521
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
522
|
+
const balance = await api.query.system.account(address);
|
|
523
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
524
|
+
const balancesData = JSON.parse(balance.data.toString());
|
|
525
|
+
const balanceList = balancesData.v0.balance;
|
|
526
|
+
let freeTokenBalance;
|
|
527
|
+
const assetId = (0, _utils._getTokenOnChainAssetId)(tokenInfo);
|
|
528
|
+
if (!(0, _utils._isNativeToken)(tokenInfo)) {
|
|
529
|
+
// @ts-ignore
|
|
530
|
+
freeTokenBalance = balanceList.find(data => data[0] === assetId);
|
|
531
|
+
} else {
|
|
532
|
+
freeTokenBalance = balanceList[0];
|
|
533
|
+
}
|
|
534
|
+
return freeTokenBalance ? freeTokenBalance[1].positive.toString() : '0';
|
|
535
|
+
} else if (_constants2._BALANCE_TOKEN_GROUP.crab.includes(tokenInfo.symbol)) {
|
|
536
|
+
var _balance$data5, _balance$data5$freeKt;
|
|
537
|
+
// @ts-ignore
|
|
538
|
+
const balance = await api.query.system.account(address);
|
|
539
|
+
return ((_balance$data5 = balance.data) === null || _balance$data5 === void 0 ? void 0 : (_balance$data5$freeKt = _balance$data5.freeKton) === null || _balance$data5$freeKt === void 0 ? void 0 : _balance$data5$freeKt.toString()) || '0';
|
|
540
|
+
} else if (!(0, _utils._isNativeToken)(tokenInfo) && _constants2._BALANCE_CHAIN_GROUP.statemine.includes(chain)) {
|
|
541
|
+
var _balanceInfo$balance;
|
|
542
|
+
const assetId = (0, _utils._getTokenOnChainAssetId)(tokenInfo);
|
|
543
|
+
const balanceInfo = (await api.query.assets.account(assetId, address)).toHuman();
|
|
544
|
+
|
|
545
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return
|
|
546
|
+
return (balanceInfo === null || balanceInfo === void 0 ? void 0 : (_balanceInfo$balance = balanceInfo.balance) === null || _balanceInfo$balance === void 0 ? void 0 : _balanceInfo$balance.replaceAll(',', '')) || '0';
|
|
547
|
+
} else if (!(0, _utils._isNativeToken)(tokenInfo) || _constants2._BALANCE_CHAIN_GROUP.kintsugi.includes(chain)) {
|
|
548
|
+
var _balance$free;
|
|
549
|
+
const onChainInfo = (0, _utils._getTokenOnChainInfo)(tokenInfo);
|
|
550
|
+
// @ts-ignore
|
|
551
|
+
const balance = await api.query.tokens.accounts(address, onChainInfo);
|
|
552
|
+
return ((_balance$free = balance.free) === null || _balance$free === void 0 ? void 0 : _balance$free.toString()) || '0';
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
if (_constants2._BALANCE_CHAIN_GROUP.kusama.includes(chain)) {
|
|
556
|
+
var _balance$data6, _balance$data7;
|
|
557
|
+
// @ts-ignore
|
|
558
|
+
const _balance = await api.query.system.account(address);
|
|
559
|
+
|
|
560
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
|
561
|
+
const balance = _balance.toHuman();
|
|
562
|
+
|
|
563
|
+
// @ts-ignore
|
|
564
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
565
|
+
const freeBalance = new _util.BN((_balance$data6 = balance.data) === null || _balance$data6 === void 0 ? void 0 : _balance$data6.free.replaceAll(',', ''));
|
|
566
|
+
|
|
567
|
+
// @ts-ignore
|
|
568
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
569
|
+
const miscFrozen = new _util.BN((_balance$data7 = balance.data) === null || _balance$data7 === void 0 ? void 0 : _balance$data7.miscFrozen.replaceAll(',', ''));
|
|
570
|
+
const transferable = freeBalance.sub(miscFrozen);
|
|
571
|
+
|
|
572
|
+
// @ts-ignore
|
|
573
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return
|
|
574
|
+
return transferable.toString() || '0';
|
|
575
|
+
}
|
|
576
|
+
const balance = await api.derive.balances.all(address);
|
|
577
|
+
return ((_balance$availableBal = balance.availableBalance) === null || _balance$availableBal === void 0 ? void 0 : (_balance$availableBal2 = _balance$availableBal.toBn()) === null || _balance$availableBal2 === void 0 ? void 0 : _balance$availableBal2.toString()) || '0';
|
|
578
|
+
}
|
|
404
579
|
}
|
|
@@ -7,9 +7,8 @@ exports.checkReferenceCount = checkReferenceCount;
|
|
|
7
7
|
exports.checkSupportTransfer = checkSupportTransfer;
|
|
8
8
|
exports.createTransferExtrinsic = void 0;
|
|
9
9
|
var _wasm = require("@subwallet/extension-base/koni/api/tokens/wasm");
|
|
10
|
-
var _utils = require("@subwallet/extension-base/koni/api/tokens/wasm/utils");
|
|
11
10
|
var _constants = require("@subwallet/extension-base/services/chain-service/constants");
|
|
12
|
-
var
|
|
11
|
+
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
13
12
|
var _util = require("@polkadot/util");
|
|
14
13
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
15
14
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -20,7 +19,7 @@ function isRefCount(accountInfo) {
|
|
|
20
19
|
async function checkReferenceCount(networkKey, address, substrateApiMap, chainInfo) {
|
|
21
20
|
const apiProps = await substrateApiMap[networkKey].isReady;
|
|
22
21
|
const api = apiProps.api;
|
|
23
|
-
if ((0,
|
|
22
|
+
if ((0, _utils._isChainEvmCompatible)(chainInfo)) {
|
|
24
23
|
return false;
|
|
25
24
|
}
|
|
26
25
|
|
|
@@ -36,7 +35,7 @@ async function checkSupportTransfer(networkKey, tokenInfo, substrateApiMap, chai
|
|
|
36
35
|
supportTransferAll: false
|
|
37
36
|
};
|
|
38
37
|
}
|
|
39
|
-
if ((0,
|
|
38
|
+
if ((0, _utils._isChainEvmCompatible)(chainInfo)) {
|
|
40
39
|
return {
|
|
41
40
|
supportTransfer: true,
|
|
42
41
|
supportTransferAll: true
|
|
@@ -60,32 +59,32 @@ async function checkSupportTransfer(networkKey, tokenInfo, substrateApiMap, chai
|
|
|
60
59
|
if (!(isTxCurrenciesSupported || isTxBalancesSupported || isTxTokensSupported || isTxEqBalancesSupported)) {
|
|
61
60
|
return result;
|
|
62
61
|
}
|
|
63
|
-
if ((0,
|
|
62
|
+
if ((0, _utils._isTokenWasmSmartContract)(tokenInfo) && api.query.contracts) {
|
|
64
63
|
// for PSP tokens
|
|
65
64
|
return {
|
|
66
65
|
supportTransfer: true,
|
|
67
66
|
supportTransferAll: true
|
|
68
67
|
};
|
|
69
68
|
}
|
|
70
|
-
if (_constants._TRANSFER_CHAIN_GROUP.acala.includes(networkKey) && !(0,
|
|
69
|
+
if (_constants._TRANSFER_CHAIN_GROUP.acala.includes(networkKey) && !(0, _utils._isNativeToken)(tokenInfo) && isTxCurrenciesSupported) {
|
|
71
70
|
result.supportTransfer = true;
|
|
72
71
|
result.supportTransferAll = false;
|
|
73
|
-
} else if (_constants._TRANSFER_CHAIN_GROUP.kintsugi.includes(networkKey) && !(0,
|
|
72
|
+
} else if (_constants._TRANSFER_CHAIN_GROUP.kintsugi.includes(networkKey) && !(0, _utils._isNativeToken)(tokenInfo) && isTxTokensSupported) {
|
|
74
73
|
result.supportTransfer = true;
|
|
75
74
|
result.supportTransferAll = true;
|
|
76
|
-
} else if (_constants._TRANSFER_CHAIN_GROUP.genshiro.includes(networkKey) && !(0,
|
|
75
|
+
} else if (_constants._TRANSFER_CHAIN_GROUP.genshiro.includes(networkKey) && !(0, _utils._isNativeToken)(tokenInfo) && isTxEqBalancesSupported) {
|
|
77
76
|
result.supportTransfer = true;
|
|
78
77
|
result.supportTransferAll = false;
|
|
79
78
|
} else if (_constants._TRANSFER_CHAIN_GROUP.crab.includes(networkKey) && _constants._BALANCE_TOKEN_GROUP.crab.includes(tokenInfo.symbol)) {
|
|
80
79
|
result.supportTransfer = true;
|
|
81
80
|
result.supportTransferAll = true;
|
|
82
|
-
} else if (isTxBalancesSupported && (0,
|
|
81
|
+
} else if (isTxBalancesSupported && (0, _utils._isNativeToken)(tokenInfo)) {
|
|
83
82
|
result.supportTransfer = true;
|
|
84
83
|
result.supportTransferAll = true;
|
|
85
|
-
} else if (_constants._TRANSFER_CHAIN_GROUP.bitcountry.includes(networkKey) && !(0,
|
|
84
|
+
} else if (_constants._TRANSFER_CHAIN_GROUP.bitcountry.includes(networkKey) && !(0, _utils._isNativeToken)(tokenInfo) && _constants._BALANCE_TOKEN_GROUP.bitcountry.includes(tokenInfo.symbol)) {
|
|
86
85
|
result.supportTransfer = true;
|
|
87
86
|
result.supportTransferAll = true;
|
|
88
|
-
} else if (_constants._TRANSFER_CHAIN_GROUP.statemine.includes(networkKey) && !(0,
|
|
87
|
+
} else if (_constants._TRANSFER_CHAIN_GROUP.statemine.includes(networkKey) && !(0, _utils._isNativeToken)(tokenInfo)) {
|
|
89
88
|
result.supportTransfer = true;
|
|
90
89
|
result.supportTransferAll = true;
|
|
91
90
|
}
|
|
@@ -112,45 +111,45 @@ const createTransferExtrinsic = async _ref => {
|
|
|
112
111
|
const isTxEqBalancesSupported = !!api && !!api.tx && !!api.tx.eqBalances;
|
|
113
112
|
let transferAmount; // for PSP-22 tokens, might be deprecated in the future
|
|
114
113
|
|
|
115
|
-
if ((0,
|
|
116
|
-
const contractPromise = (0, _wasm.getPSP22ContractPromise)(api, (0,
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
114
|
+
if ((0, _utils._isTokenWasmSmartContract)(tokenInfo) && api.query.contracts) {
|
|
115
|
+
const contractPromise = (0, _wasm.getPSP22ContractPromise)(api, (0, _utils._getContractAddressOfToken)(tokenInfo));
|
|
116
|
+
const transferQuery = await contractPromise.query['psp22::transfer'](from, {
|
|
117
|
+
gasLimit: -1
|
|
118
|
+
}, to, value, {});
|
|
119
|
+
const gasLimit = transferQuery.gasRequired.toString();
|
|
121
120
|
transfer = contractPromise.tx['psp22::transfer']({
|
|
122
121
|
gasLimit
|
|
123
122
|
}, to, value, {});
|
|
124
123
|
transferAmount = value;
|
|
125
|
-
} else if (_constants._TRANSFER_CHAIN_GROUP.acala.includes(networkKey) && !(0,
|
|
124
|
+
} else if (_constants._TRANSFER_CHAIN_GROUP.acala.includes(networkKey) && !(0, _utils._isNativeToken)(tokenInfo) && isTxCurrenciesSupported) {
|
|
126
125
|
if (transferAll) {
|
|
127
126
|
// currently Acala, Karura, Acala testnet do not have transfer all method for sub token
|
|
128
127
|
} else if (value) {
|
|
129
|
-
transfer = api.tx.currencies.transfer(to, (0,
|
|
128
|
+
transfer = api.tx.currencies.transfer(to, (0, _utils._getTokenOnChainInfo)(tokenInfo), value);
|
|
130
129
|
}
|
|
131
|
-
} else if (_constants._TRANSFER_CHAIN_GROUP.kintsugi.includes(networkKey) && !(0,
|
|
130
|
+
} else if (_constants._TRANSFER_CHAIN_GROUP.kintsugi.includes(networkKey) && !(0, _utils._isNativeToken)(tokenInfo) && isTxTokensSupported) {
|
|
132
131
|
if (transferAll) {
|
|
133
|
-
transfer = api.tx.tokens.transferAll(to, (0,
|
|
132
|
+
transfer = api.tx.tokens.transferAll(to, (0, _utils._getTokenOnChainInfo)(tokenInfo), false);
|
|
134
133
|
} else if (value) {
|
|
135
|
-
transfer = api.tx.tokens.transfer(to, (0,
|
|
134
|
+
transfer = api.tx.tokens.transfer(to, (0, _utils._getTokenOnChainInfo)(tokenInfo), new _util.BN(value));
|
|
136
135
|
}
|
|
137
|
-
} else if (_constants._TRANSFER_CHAIN_GROUP.genshiro.includes(networkKey) && !(0,
|
|
136
|
+
} else if (_constants._TRANSFER_CHAIN_GROUP.genshiro.includes(networkKey) && !(0, _utils._isNativeToken)(tokenInfo) && isTxEqBalancesSupported) {
|
|
138
137
|
if (transferAll) {
|
|
139
138
|
// currently genshiro_testnet, genshiro, equilibrium_parachain do not have transfer all method for tokens
|
|
140
139
|
} else if (value) {
|
|
141
|
-
transfer = api.tx.eqBalances.transfer((0,
|
|
140
|
+
transfer = api.tx.eqBalances.transfer((0, _utils._getTokenOnChainAssetId)(tokenInfo), to, value);
|
|
142
141
|
}
|
|
143
|
-
} else if (!(0,
|
|
142
|
+
} else if (!(0, _utils._isNativeToken)(tokenInfo) && (_constants._TRANSFER_CHAIN_GROUP.crab.includes(networkKey) || _constants._BALANCE_TOKEN_GROUP.crab.includes(tokenInfo.symbol))) {
|
|
144
143
|
if (transferAll) {
|
|
145
144
|
transfer = api.tx.kton.transferAll(to, false);
|
|
146
145
|
} else if (value) {
|
|
147
146
|
transfer = api.tx.kton.transfer(to, new _util.BN(value));
|
|
148
147
|
}
|
|
149
|
-
} else if (_constants._TRANSFER_CHAIN_GROUP.bitcountry.includes(networkKey) && !(0,
|
|
150
|
-
transfer = api.tx.currencies.transfer(to, (0,
|
|
151
|
-
} else if (_constants._TRANSFER_CHAIN_GROUP.statemine.includes(networkKey) && !(0,
|
|
152
|
-
transfer = api.tx.assets.transfer((0,
|
|
153
|
-
} else if (isTxBalancesSupported && (0,
|
|
148
|
+
} else if (_constants._TRANSFER_CHAIN_GROUP.bitcountry.includes(networkKey) && !(0, _utils._isNativeToken)(tokenInfo)) {
|
|
149
|
+
transfer = api.tx.currencies.transfer(to, (0, _utils._getTokenOnChainInfo)(tokenInfo), value);
|
|
150
|
+
} else if (_constants._TRANSFER_CHAIN_GROUP.statemine.includes(networkKey) && !(0, _utils._isNativeToken)(tokenInfo)) {
|
|
151
|
+
transfer = api.tx.assets.transfer((0, _utils._getTokenOnChainAssetId)(tokenInfo), to, value);
|
|
152
|
+
} else if (isTxBalancesSupported && (0, _utils._isNativeToken)(tokenInfo)) {
|
|
154
153
|
if (transferAll) {
|
|
155
154
|
transfer = api.tx.balances.transferAll(to, false);
|
|
156
155
|
} else if (value) {
|
|
@@ -117,11 +117,8 @@ class AcalaNftApi extends _nft.BaseNftApi {
|
|
|
117
117
|
};
|
|
118
118
|
params.updateItem(this.chain, parsedNft, address);
|
|
119
119
|
params.updateCollection(this.chain, parsedCollection);
|
|
120
|
+
// params.updateReady(true);
|
|
120
121
|
}));
|
|
121
|
-
Object.entries(collectionNftIds).forEach(_ref => {
|
|
122
|
-
let [collectionId, nftIds] = _ref;
|
|
123
|
-
params.cleanUpNfts(this.chain, address, collectionId, nftIds);
|
|
124
|
-
});
|
|
125
122
|
} catch (e) {
|
|
126
123
|
console.error('Failed to fetch acala nft', e);
|
|
127
124
|
}
|
|
@@ -114,11 +114,8 @@ class BitCountryNftApi extends _nft.BaseNftApi {
|
|
|
114
114
|
};
|
|
115
115
|
params.updateItem(this.chain, parsedNft, address);
|
|
116
116
|
params.updateCollection(this.chain, parsedCollection);
|
|
117
|
+
// params.updateReady(true);
|
|
117
118
|
}));
|
|
118
|
-
Object.entries(collectionNftIds).forEach(_ref => {
|
|
119
|
-
let [collectionId, nftIds] = _ref;
|
|
120
|
-
params.cleanUpNfts(this.chain, address, collectionId, nftIds);
|
|
121
|
-
});
|
|
122
119
|
} catch (e) {
|
|
123
120
|
console.error('Failed to fetch bit.country nft', e);
|
|
124
121
|
}
|
|
@@ -82,7 +82,6 @@ class EvmNftApi extends _nft.BaseNftApi {
|
|
|
82
82
|
const contract = new this.evmApi.api.eth.Contract(_helper._ERC721_ABI, smartContract);
|
|
83
83
|
let ownItem = false;
|
|
84
84
|
let collectionImage;
|
|
85
|
-
const nftOwnerMap = {};
|
|
86
85
|
await Promise.all(this.addresses.map(async address => {
|
|
87
86
|
if (!(0, _utilCrypto.isEthereumAddress)(address)) {
|
|
88
87
|
return;
|
|
@@ -133,9 +132,8 @@ class EvmNftApi extends _nft.BaseNftApi {
|
|
|
133
132
|
}
|
|
134
133
|
}
|
|
135
134
|
}));
|
|
136
|
-
nftOwnerMap[address] = nftIds;
|
|
137
135
|
} catch (e) {
|
|
138
|
-
console.error('
|
|
136
|
+
console.error('evm nft error', e);
|
|
139
137
|
}
|
|
140
138
|
}));
|
|
141
139
|
if (ownItem) {
|
|
@@ -147,12 +145,10 @@ class EvmNftApi extends _nft.BaseNftApi {
|
|
|
147
145
|
originAsset: tokenInfo.slug
|
|
148
146
|
};
|
|
149
147
|
nftParams.updateCollection(this.chain, nftCollection);
|
|
150
|
-
|
|
151
|
-
let [owner, nftIds] = _ref;
|
|
152
|
-
nftParams.cleanUpNfts(this.chain, owner, smartContract, nftIds);
|
|
153
|
-
});
|
|
148
|
+
// nftParams.updateReady(true);
|
|
154
149
|
}
|
|
155
150
|
}
|
|
151
|
+
|
|
156
152
|
async handleNfts(params) {
|
|
157
153
|
if (!this.evmContracts || this.evmContracts.length === 0) {
|
|
158
154
|
return;
|
|
@@ -132,16 +132,19 @@ class NftHandler {
|
|
|
132
132
|
console.error('error setting up nft handlers', e);
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
|
-
async handleNfts(nftContracts, updateItem, updateCollection
|
|
135
|
+
async handleNfts(nftContracts, updateItem, updateCollection) {
|
|
136
136
|
this.setupApi();
|
|
137
137
|
this.setupNftContracts(nftContracts);
|
|
138
138
|
await Promise.all(this.handlers.map(async handler => {
|
|
139
139
|
await handler.fetchNfts({
|
|
140
140
|
updateItem,
|
|
141
|
-
updateCollection
|
|
142
|
-
cleanUpNfts
|
|
141
|
+
updateCollection
|
|
143
142
|
});
|
|
144
143
|
}));
|
|
145
144
|
}
|
|
145
|
+
parseAssetId(id) {
|
|
146
|
+
const numberId = parseInt(id);
|
|
147
|
+
return numberId.toString();
|
|
148
|
+
}
|
|
146
149
|
}
|
|
147
150
|
exports.NftHandler = NftHandler;
|