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