@subwallet/extension-base 1.0.2-2 → 1.0.2-3
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 +46 -38
- package/background/KoniTypes.js +8 -8
- package/background/errors/TransactionError.js +25 -1
- package/background/types.d.ts +10 -5
- package/cjs/background/KoniTypes.js +8 -8
- package/cjs/background/errors/TransactionError.js +24 -0
- package/cjs/constants/index.js +8 -26
- package/cjs/koni/api/dotsama/balance.js +49 -224
- package/cjs/koni/api/dotsama/transfer.js +34 -39
- package/cjs/koni/api/nft/acala_nft/index.js +7 -7
- package/cjs/koni/api/nft/bit.country/index.js +7 -6
- package/cjs/koni/api/nft/evm_nft/index.js +8 -3
- package/cjs/koni/api/nft/index.js +3 -6
- package/cjs/koni/api/nft/karura_nft/index.js +7 -6
- package/cjs/koni/api/nft/rmrk_nft/index.js +11 -1
- package/cjs/koni/api/nft/statemine_nft/index.js +7 -6
- package/cjs/koni/api/nft/unique_nft/index.js +5 -1
- package/cjs/koni/api/nft/wasm_nft/index.js +170 -111
- package/cjs/koni/api/nft/wasm_nft/utils.js +11 -7
- package/cjs/koni/api/staking/bonding/amplitude.js +13 -9
- package/cjs/koni/api/staking/bonding/astar.js +15 -13
- package/cjs/koni/api/staking/bonding/index.js +22 -10
- package/cjs/koni/api/staking/bonding/paraChain.js +85 -2
- package/cjs/koni/api/staking/bonding/relayChain.js +122 -16
- package/cjs/koni/api/staking/bonding/utils.js +27 -8
- 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/polkadotXcm.js +1 -1
- package/cjs/koni/api/xcm/utils.js +18 -13
- package/cjs/koni/api/xcm/xTokens.js +1 -1
- package/cjs/koni/api/xcm/xcmPallet.js +9 -6
- package/cjs/koni/background/cron.js +171 -61
- package/cjs/koni/background/handlers/Extension.js +382 -207
- package/cjs/koni/background/handlers/State.js +41 -33
- package/cjs/koni/background/handlers/Tabs.js +50 -17
- package/cjs/koni/background/subscription.js +32 -29
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/chain-service/handler/SubstrateChainHandler.js +13 -8
- package/cjs/services/chain-service/index.js +59 -45
- package/cjs/services/event-service/index.js +5 -1
- package/cjs/services/event-service/types.js +11 -1
- package/cjs/services/history-service/index.js +19 -13
- package/cjs/services/history-service/subsquid-multi-chain-history.js +13 -10
- package/cjs/services/keyring-service/index.js +11 -13
- package/cjs/services/price-service/coingecko.js +0 -1
- package/cjs/services/price-service/index.js +2 -3
- package/cjs/services/request-service/handler/AuthRequestHandler.js +13 -7
- package/cjs/services/request-service/handler/EvmRequestHandler.js +8 -12
- package/cjs/services/request-service/index.js +14 -5
- package/cjs/services/storage-service/DatabaseService.js +56 -34
- package/cjs/services/storage-service/db-stores/Nft.js +7 -15
- package/cjs/services/transaction-service/event-parser/index.js +20 -48
- package/cjs/services/transaction-service/index.js +26 -15
- package/cjs/utils/address.js +10 -1
- package/cjs/utils/index.js +9 -15
- package/constants/index.d.ts +7 -13
- package/constants/index.js +7 -13
- package/koni/api/dotsama/balance.d.ts +0 -1
- package/koni/api/dotsama/balance.js +22 -197
- package/koni/api/dotsama/transfer.js +11 -16
- package/koni/api/nft/acala_nft/index.js +7 -7
- package/koni/api/nft/bit.country/index.js +7 -6
- package/koni/api/nft/evm_nft/index.js +7 -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 +7 -6
- package/koni/api/nft/nft.d.ts +1 -0
- package/koni/api/nft/rmrk_nft/index.js +11 -1
- package/koni/api/nft/statemine_nft/index.js +7 -6
- 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 +168 -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 +0 -1
- package/koni/api/staking/bonding/amplitude.js +15 -10
- package/koni/api/staking/bonding/astar.js +8 -6
- package/koni/api/staking/bonding/index.d.ts +4 -1
- package/koni/api/staking/bonding/index.js +23 -13
- package/koni/api/staking/bonding/paraChain.d.ts +3 -0
- package/koni/api/staking/bonding/paraChain.js +86 -5
- package/koni/api/staking/bonding/relayChain.d.ts +5 -1
- package/koni/api/staking/bonding/relayChain.js +121 -18
- package/koni/api/staking/bonding/utils.d.ts +3 -2
- package/koni/api/staking/bonding/utils.js +27 -9
- 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/polkadotXcm.js +2 -2
- package/koni/api/xcm/utils.d.ts +5 -6
- package/koni/api/xcm/utils.js +15 -10
- package/koni/api/xcm/xTokens.js +2 -2
- package/koni/api/xcm/xcmPallet.js +10 -9
- package/koni/background/cron.d.ts +6 -1
- package/koni/background/cron.js +172 -62
- package/koni/background/handlers/Extension.d.ts +8 -3
- package/koni/background/handlers/Extension.js +297 -126
- package/koni/background/handlers/State.d.ts +5 -6
- package/koni/background/handlers/State.js +43 -33
- package/koni/background/handlers/Tabs.js +50 -17
- package/koni/background/subscription.js +31 -30
- package/package.json +18 -13
- package/packageInfo.js +1 -1
- package/services/chain-service/handler/SubstrateChainHandler.js +14 -9
- 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 +3 -2
- package/services/chain-service/index.js +53 -40
- package/services/chain-service/types.d.ts +1 -0
- package/services/event-service/index.js +5 -1
- package/services/event-service/types.d.ts +5 -9
- package/services/event-service/types.js +4 -1
- package/services/history-service/index.d.ts +4 -2
- package/services/history-service/index.js +19 -13
- package/services/history-service/subsquid-multi-chain-history.js +16 -12
- package/services/keyring-service/index.d.ts +4 -2
- package/services/keyring-service/index.js +11 -13
- package/services/price-service/coingecko.js +0 -1
- package/services/price-service/index.js +2 -3
- package/services/request-service/handler/AuthRequestHandler.d.ts +3 -1
- package/services/request-service/handler/AuthRequestHandler.js +13 -7
- package/services/request-service/handler/EvmRequestHandler.js +8 -12
- package/services/request-service/index.d.ts +3 -1
- package/services/request-service/index.js +14 -5
- package/services/storage-service/DatabaseService.d.ts +1 -0
- package/services/storage-service/DatabaseService.js +56 -34
- package/services/storage-service/db-stores/Nft.d.ts +2 -2
- package/services/storage-service/db-stores/Nft.js +7 -14
- package/services/transaction-service/event-parser/index.js +21 -49
- package/services/transaction-service/index.js +26 -15
- package/utils/address.d.ts +3 -0
- package/utils/address.js +8 -1
- package/utils/index.d.ts +2 -2
- package/utils/index.js +7 -13
|
@@ -10,6 +10,7 @@ var _databases = _interopRequireDefault(require("@subwallet/extension-base/servi
|
|
|
10
10
|
var _dbStores = require("@subwallet/extension-base/services/storage-service/db-stores");
|
|
11
11
|
var _ChainStakingMetadata = _interopRequireDefault(require("@subwallet/extension-base/services/storage-service/db-stores/ChainStakingMetadata"));
|
|
12
12
|
var _NominatorMetadata = _interopRequireDefault(require("@subwallet/extension-base/services/storage-service/db-stores/NominatorMetadata"));
|
|
13
|
+
var _utils = require("@subwallet/extension-base/utils");
|
|
13
14
|
var _util = require("@polkadot/util");
|
|
14
15
|
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
15
16
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -54,7 +55,8 @@ class DatabaseService {
|
|
|
54
55
|
}
|
|
55
56
|
async updateBalanceStore(address, item) {
|
|
56
57
|
if (item.state === _KoniTypes.APIItemState.READY) {
|
|
57
|
-
this.logger.log(`Updating balance for [${item.tokenSlug}]`);
|
|
58
|
+
// this.logger.log(`Updating balance for [${item.tokenSlug}]`);
|
|
59
|
+
|
|
58
60
|
return this.stores.balance.upsert({
|
|
59
61
|
address,
|
|
60
62
|
...item
|
|
@@ -69,14 +71,16 @@ class DatabaseService {
|
|
|
69
71
|
// Crowdloan
|
|
70
72
|
async updateCrowdloanStore(chain, address, item) {
|
|
71
73
|
if (item.state === _KoniTypes.APIItemState.READY && item.contribute !== '0') {
|
|
72
|
-
this.logger.log(`Updating crowdloan for [${chain}]`);
|
|
74
|
+
// this.logger.log(`Updating crowdloan for [${chain}]`);
|
|
75
|
+
|
|
73
76
|
return this.stores.crowdloan.upsert({
|
|
74
77
|
chain,
|
|
75
78
|
address,
|
|
76
79
|
...item
|
|
77
80
|
});
|
|
78
81
|
} else {
|
|
79
|
-
this.logger.debug(`Removing crowdloan for [${chain}]`);
|
|
82
|
+
// this.logger.debug(`Removing crowdloan for [${chain}]`);
|
|
83
|
+
|
|
80
84
|
return this.stores.crowdloan.deleteByChainAndAddress(chain, address);
|
|
81
85
|
}
|
|
82
86
|
}
|
|
@@ -84,22 +88,23 @@ class DatabaseService {
|
|
|
84
88
|
// Staking
|
|
85
89
|
async updateStaking(chain, address, item) {
|
|
86
90
|
if (item.state === _KoniTypes.APIItemState.READY) {
|
|
87
|
-
this.logger.log(`Updating staking for [${chain}]`);
|
|
91
|
+
// this.logger.log(`Updating staking for [${chain}]`);
|
|
92
|
+
|
|
88
93
|
return this.stores.staking.upsert(item);
|
|
89
94
|
}
|
|
90
95
|
}
|
|
91
96
|
async getStakings(addresses, chains) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
return
|
|
97
|
+
// this.logger.log('Get Stakings: ', stakings);
|
|
98
|
+
|
|
99
|
+
return this.stores.staking.getStakings(addresses, chains);
|
|
95
100
|
}
|
|
96
101
|
async getStakingsByChains(chains) {
|
|
97
102
|
return this.stores.staking.getStakingsByChains(chains);
|
|
98
103
|
}
|
|
99
104
|
async getPooledStakings(addresses, chainHashes) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
return
|
|
105
|
+
// this.logger.log('Get Pooled Stakings: ', stakings);
|
|
106
|
+
|
|
107
|
+
return this.stores.staking.getPooledStakings(addresses, chainHashes);
|
|
103
108
|
}
|
|
104
109
|
subscribeStaking(addresses, chainList, callback) {
|
|
105
110
|
this.stakingSubscription && this.stakingSubscription.unsubscribe();
|
|
@@ -121,18 +126,18 @@ class DatabaseService {
|
|
|
121
126
|
|
|
122
127
|
// Transaction histories
|
|
123
128
|
async getHistories(query) {
|
|
124
|
-
|
|
125
|
-
this.logger.log('Get histories: ', histories);
|
|
126
|
-
return histories;
|
|
129
|
+
return this.stores.transaction.queryHistory(query);
|
|
127
130
|
}
|
|
128
131
|
async upsertHistory(histories) {
|
|
129
|
-
this.logger.log('Updating transaction histories');
|
|
130
|
-
|
|
132
|
+
// this.logger.log('Updating transaction histories');
|
|
133
|
+
const cleanedHistory = histories.filter(x => x && x.address && x.chain && x.extrinsicHash);
|
|
134
|
+
return this.stores.transaction.bulkUpsert(cleanedHistory);
|
|
131
135
|
}
|
|
132
136
|
|
|
133
137
|
// NFT Collection
|
|
134
138
|
async addNftCollection(collection) {
|
|
135
|
-
this.logger.log(`Updating NFT collection for [${collection.chain}]`);
|
|
139
|
+
// this.logger.log(`Updating NFT collection for [${collection.chain}]`);
|
|
140
|
+
|
|
136
141
|
return this.stores.nftCollection.upsert(collection);
|
|
137
142
|
}
|
|
138
143
|
async deleteNftCollection(chain, collectionId) {
|
|
@@ -151,13 +156,22 @@ class DatabaseService {
|
|
|
151
156
|
});
|
|
152
157
|
return this.nftSubscription;
|
|
153
158
|
}
|
|
159
|
+
async cleanUpNft(chain, owner, collectionIds, nftIds, ownNothing) {
|
|
160
|
+
if (ownNothing) {
|
|
161
|
+
return this.stores.nft.deleteNftsByChainAndOwner(chain, (0, _utils.reformatAddress)(owner, 42));
|
|
162
|
+
}
|
|
163
|
+
const result = await this.stores.nft.cleanUpNfts(chain, (0, _utils.reformatAddress)(owner, 42), collectionIds, nftIds);
|
|
164
|
+
result > 0 && console.debug(`Cleaned up ${result} NFTs on chain ${chain} for owner ${(0, _utils.reformatAddress)(owner, 42)}`, collectionIds, nftIds);
|
|
165
|
+
return result;
|
|
166
|
+
}
|
|
154
167
|
async getNft(addresses, chainHashes) {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
return
|
|
168
|
+
// this.logger.log('Get NFTs: ', nfts);
|
|
169
|
+
|
|
170
|
+
return this.stores.nft.getNft(addresses, chainHashes);
|
|
158
171
|
}
|
|
159
172
|
async addNft(address, nft) {
|
|
160
|
-
this.logger.log(`Updating NFT for [${nft.chain}]`);
|
|
173
|
+
// this.logger.log(`Updating NFT for [${nft.chain}]`);
|
|
174
|
+
|
|
161
175
|
return this.stores.nft.upsert({
|
|
162
176
|
...nft,
|
|
163
177
|
address
|
|
@@ -167,47 +181,54 @@ class DatabaseService {
|
|
|
167
181
|
return this.stores.nft.deleteNftItem(chain, addresses, nftItem);
|
|
168
182
|
}
|
|
169
183
|
removeNfts(chain, address, collectionId, nftIds) {
|
|
170
|
-
this.logger.log(`Remove NFTs [${nftIds.join(', ')}]`);
|
|
184
|
+
// this.logger.log(`Remove NFTs [${nftIds.join(', ')}]`);
|
|
185
|
+
|
|
171
186
|
return this.stores.nft.removeNfts(chain, address, collectionId, nftIds);
|
|
172
187
|
}
|
|
173
188
|
|
|
174
189
|
// Chain
|
|
175
190
|
async updateChainStore(item) {
|
|
176
|
-
this.logger.log(`Updating storageInfo for chain [${item.slug}]`);
|
|
191
|
+
// this.logger.log(`Updating storageInfo for chain [${item.slug}]`);
|
|
192
|
+
|
|
177
193
|
return this.stores.chain.upsert(item);
|
|
178
194
|
}
|
|
179
195
|
async bulkUpdateChainStore(data) {
|
|
180
|
-
this.logger.log('Bulk updating ChainStore');
|
|
196
|
+
// this.logger.log('Bulk updating ChainStore');
|
|
197
|
+
|
|
181
198
|
return this.stores.chain.bulkUpsert(data);
|
|
182
199
|
}
|
|
183
200
|
async removeFromChainStore(chains) {
|
|
184
|
-
this.logger.log('Bulk removing ChainStore');
|
|
201
|
+
// this.logger.log('Bulk removing ChainStore');
|
|
202
|
+
|
|
185
203
|
return this.stores.chain.removeChains(chains);
|
|
186
204
|
}
|
|
187
205
|
async getAllChainStore() {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
return
|
|
206
|
+
// this.logger.log('Get all chains: ', allChains);
|
|
207
|
+
|
|
208
|
+
return this.stores.chain.getAll();
|
|
191
209
|
}
|
|
192
210
|
|
|
193
211
|
// Asset
|
|
194
212
|
async updateAssetStore(item) {
|
|
195
|
-
this.logger.log(`Updating storageInfo for chainAsset [${item.originChain}]`);
|
|
213
|
+
// this.logger.log(`Updating storageInfo for chainAsset [${item.originChain}]`);
|
|
214
|
+
|
|
196
215
|
return this.stores.asset.upsert(item);
|
|
197
216
|
}
|
|
198
217
|
async getAllAssetStore() {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
return
|
|
218
|
+
// this.logger.log('Get all stored assets: ', allAssets);
|
|
219
|
+
|
|
220
|
+
return this.stores.asset.getAll();
|
|
202
221
|
}
|
|
203
222
|
async removeFromAssetStore(items) {
|
|
204
|
-
this.logger.log('Bulk removing AssetStore');
|
|
223
|
+
// this.logger.log('Bulk removing AssetStore');
|
|
224
|
+
|
|
205
225
|
return this.stores.asset.removeAssets(items);
|
|
206
226
|
}
|
|
207
227
|
|
|
208
228
|
// Staking
|
|
209
229
|
async updateChainStakingMetadata(item) {
|
|
210
|
-
this.logger.log('Update ChainStakingMetadata: ', item.chain);
|
|
230
|
+
// this.logger.log('Update ChainStakingMetadata: ', item.chain);
|
|
231
|
+
|
|
211
232
|
return this.stores.chainStakingMetadata.upsert(item);
|
|
212
233
|
}
|
|
213
234
|
async getChainStakingMetadata() {
|
|
@@ -218,7 +239,8 @@ class DatabaseService {
|
|
|
218
239
|
return this.stores.chainStakingMetadata.getByChainAndType(chain, type);
|
|
219
240
|
}
|
|
220
241
|
async updateNominatorMetadata(item) {
|
|
221
|
-
this.logger.log('Update NominatorMetadata: ', item.address, item.chain);
|
|
242
|
+
// this.logger.log('Update NominatorMetadata: ', item.address, item.chain);
|
|
243
|
+
|
|
222
244
|
return this.stores.nominatorMetadata.upsert(item);
|
|
223
245
|
}
|
|
224
246
|
async getNominatorMetadata() {
|
|
@@ -24,25 +24,17 @@ class NftStore extends _BaseStoreWithAddressAndChain.default {
|
|
|
24
24
|
let chainList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
25
25
|
return (0, _dexie.liveQuery)(() => this.getNft(addresses, chainList));
|
|
26
26
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
};
|
|
33
|
-
if (!collection && nftIds && nftIds.length) {
|
|
34
|
-
return this.logger.warn('Missing collection id');
|
|
35
|
-
}
|
|
36
|
-
if (collection) {
|
|
37
|
-
conditions.collectionId = collection;
|
|
38
|
-
}
|
|
39
|
-
return this.table.where(conditions).and(item => !nftIds.some(nft => nft === item.id)).delete();
|
|
27
|
+
cleanUpNfts(chain, address, collectionIds, nftIds) {
|
|
28
|
+
return this.table.where({
|
|
29
|
+
address,
|
|
30
|
+
chain
|
|
31
|
+
}).and(nft => !collectionIds.includes(nft.collectionId) || collectionIds.includes(nft.collectionId) && !nftIds.includes(nft.id)).delete();
|
|
40
32
|
}
|
|
41
|
-
|
|
33
|
+
deleteNftsByChainAndOwner(chain, address) {
|
|
42
34
|
return this.table.where({
|
|
43
35
|
address,
|
|
44
36
|
chain
|
|
45
|
-
}).
|
|
37
|
+
}).delete();
|
|
46
38
|
}
|
|
47
39
|
deleteNftByAddress(addresses) {
|
|
48
40
|
return this.table.where('address').anyOfIgnoreCase(addresses).delete();
|
|
@@ -10,43 +10,28 @@ var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
|
10
10
|
// SPDX-License-Identifier: Apache-2.0
|
|
11
11
|
|
|
12
12
|
function parseXcmEventLogs(historyItem, eventLogs, chain, sendingTokenInfo, chainInfo) {
|
|
13
|
-
let isFeeUseMainTokenSymbol = true;
|
|
14
13
|
for (let index = 0; index < eventLogs.length; index++) {
|
|
15
14
|
const record = eventLogs[index];
|
|
16
|
-
if (['karura', 'acala', 'acala_testnet'].includes(chain) && sendingTokenInfo && !(0, _utils._isNativeToken)(sendingTokenInfo)) {
|
|
17
|
-
if (record.event.section === 'currencies' && record.event.method.toLowerCase() === 'transferred') {
|
|
18
|
-
if (index === 0) {
|
|
19
|
-
var _record$event$data$;
|
|
20
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
21
|
-
historyItem.fee = {
|
|
22
|
-
value: ((_record$event$data$ = record.event.data[3]) === null || _record$event$data$ === void 0 ? void 0 : _record$event$data$.toString()) || '0',
|
|
23
|
-
symbol: sendingTokenInfo.symbol,
|
|
24
|
-
decimals: (0, _utils._getAssetDecimals)(sendingTokenInfo)
|
|
25
|
-
};
|
|
26
|
-
isFeeUseMainTokenSymbol = false;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
15
|
const {
|
|
31
16
|
decimals: nativeDecimals,
|
|
32
17
|
symbol: nativeSymbol
|
|
33
18
|
} = (0, _utils._getChainNativeTokenBasicInfo)(chainInfo);
|
|
34
|
-
if (
|
|
35
|
-
var _record$event$data
|
|
36
|
-
if ((_record$event$data$
|
|
37
|
-
var _record$event$data$
|
|
19
|
+
if (record.event.section === 'balances' && record.event.method.toLowerCase() === 'withdraw') {
|
|
20
|
+
var _record$event$data$;
|
|
21
|
+
if ((_record$event$data$ = record.event.data[1]) !== null && _record$event$data$ !== void 0 && _record$event$data$.toString()) {
|
|
22
|
+
var _record$event$data$2;
|
|
38
23
|
historyItem.fee = {
|
|
39
|
-
value: (_record$event$data$
|
|
24
|
+
value: (_record$event$data$2 = record.event.data[1]) === null || _record$event$data$2 === void 0 ? void 0 : _record$event$data$2.toString(),
|
|
40
25
|
symbol: nativeSymbol,
|
|
41
26
|
decimals: nativeDecimals
|
|
42
27
|
};
|
|
43
28
|
}
|
|
44
|
-
} else if (
|
|
45
|
-
var _record$event$data$
|
|
46
|
-
if ((_record$event$data$
|
|
47
|
-
var _record$event$data$
|
|
29
|
+
} else if (record.event.section === 'tokens' && record.event.method.toLowerCase() === 'withdrawn') {
|
|
30
|
+
var _record$event$data$3;
|
|
31
|
+
if (!historyItem.fee && (_record$event$data$3 = record.event.data[2]) !== null && _record$event$data$3 !== void 0 && _record$event$data$3.toString()) {
|
|
32
|
+
var _record$event$data$4;
|
|
48
33
|
historyItem.fee = {
|
|
49
|
-
value: (_record$event$data$
|
|
34
|
+
value: (_record$event$data$4 = record.event.data[2]) === null || _record$event$data$4 === void 0 ? void 0 : _record$event$data$4.toString(),
|
|
50
35
|
symbol: nativeSymbol,
|
|
51
36
|
decimals: nativeDecimals
|
|
52
37
|
};
|
|
@@ -55,28 +40,15 @@ function parseXcmEventLogs(historyItem, eventLogs, chain, sendingTokenInfo, chai
|
|
|
55
40
|
}
|
|
56
41
|
}
|
|
57
42
|
function parseTransferEventLogs(historyItem, eventLogs, chain, sendingTokenInfo, chainInfo) {
|
|
58
|
-
let isFeeUseMainTokenSymbol = true;
|
|
59
43
|
for (let index = 0; index < eventLogs.length; index++) {
|
|
60
44
|
const record = eventLogs[index];
|
|
61
|
-
if (['
|
|
62
|
-
if (record.event.section === 'currencies' && record.event.method.toLowerCase() === 'transferred') {
|
|
63
|
-
if (index === 0) {
|
|
64
|
-
var _record$event$data$6;
|
|
65
|
-
historyItem.fee = {
|
|
66
|
-
value: ((_record$event$data$6 = record.event.data[3]) === null || _record$event$data$6 === void 0 ? void 0 : _record$event$data$6.toString()) || '0',
|
|
67
|
-
symbol: sendingTokenInfo.symbol,
|
|
68
|
-
decimals: (0, _utils._getAssetDecimals)(sendingTokenInfo)
|
|
69
|
-
};
|
|
70
|
-
isFeeUseMainTokenSymbol = false;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
} else if (['genshiro_testnet', 'genshiro', 'equilibrium_parachain'].includes(chain) && sendingTokenInfo) {
|
|
45
|
+
if (['genshiro_testnet', 'genshiro', 'equilibrium_parachain'].includes(chain) && sendingTokenInfo) {
|
|
74
46
|
if (record.event.section === 'transactionPayment' && record.event.method.toLowerCase() === 'transactionfeepaid') {
|
|
75
|
-
var _record$event$data$
|
|
76
|
-
if ((_record$event$data$
|
|
77
|
-
var _record$event$data$
|
|
47
|
+
var _record$event$data$5;
|
|
48
|
+
if ((_record$event$data$5 = record.event.data[1]) !== null && _record$event$data$5 !== void 0 && _record$event$data$5.toString()) {
|
|
49
|
+
var _record$event$data$6;
|
|
78
50
|
historyItem.fee = {
|
|
79
|
-
value: ((_record$event$data$
|
|
51
|
+
value: ((_record$event$data$6 = record.event.data[1]) === null || _record$event$data$6 === void 0 ? void 0 : _record$event$data$6.toString()) || '0',
|
|
80
52
|
symbol: sendingTokenInfo.symbol,
|
|
81
53
|
decimals: (0, _utils._getAssetDecimals)(sendingTokenInfo)
|
|
82
54
|
};
|
|
@@ -87,13 +59,13 @@ function parseTransferEventLogs(historyItem, eventLogs, chain, sendingTokenInfo,
|
|
|
87
59
|
decimals: nativeDecimals,
|
|
88
60
|
symbol: nativeSymbol
|
|
89
61
|
} = (0, _utils._getChainNativeTokenBasicInfo)(chainInfo);
|
|
90
|
-
if (
|
|
91
|
-
var _record$event$data$
|
|
92
|
-
if ((_record$event$data$
|
|
93
|
-
var _record$event$data$
|
|
62
|
+
if (record.event.section === 'balances' && record.event.method.toLowerCase() === 'withdraw') {
|
|
63
|
+
var _record$event$data$7;
|
|
64
|
+
if ((_record$event$data$7 = record.event.data[1]) !== null && _record$event$data$7 !== void 0 && _record$event$data$7.toString()) {
|
|
65
|
+
var _record$event$data$8;
|
|
94
66
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
95
67
|
historyItem.fee = {
|
|
96
|
-
value: ((_record$event$data$
|
|
68
|
+
value: ((_record$event$data$8 = record.event.data[1]) === null || _record$event$data$8 === void 0 ? void 0 : _record$event$data$8.toString()) || '0',
|
|
97
69
|
symbol: nativeSymbol,
|
|
98
70
|
decimals: nativeDecimals
|
|
99
71
|
};
|
|
@@ -187,7 +187,6 @@ class TransactionService {
|
|
|
187
187
|
this.transactionSubject.next({
|
|
188
188
|
...transactions
|
|
189
189
|
});
|
|
190
|
-
console.log(transaction);
|
|
191
190
|
|
|
192
191
|
// Send transaction
|
|
193
192
|
return await this.sendTransaction(transaction);
|
|
@@ -434,11 +433,11 @@ class TransactionService {
|
|
|
434
433
|
}
|
|
435
434
|
try {
|
|
436
435
|
// Return one more history record if transaction send to account in the wallets
|
|
437
|
-
const toAccount = (historyItem === null || historyItem === void 0 ? void 0 : historyItem.to) && _uiKeyring.default.
|
|
436
|
+
const toAccount = (historyItem === null || historyItem === void 0 ? void 0 : historyItem.to) && _uiKeyring.default.getPair(historyItem.to);
|
|
438
437
|
if (toAccount) {
|
|
439
438
|
return [historyItem, {
|
|
440
439
|
...historyItem,
|
|
441
|
-
address:
|
|
440
|
+
address: toAccount.address,
|
|
442
441
|
direction: _KoniTypes.TransactionDirection.RECEIVED
|
|
443
442
|
}];
|
|
444
443
|
}
|
|
@@ -464,18 +463,27 @@ class TransactionService {
|
|
|
464
463
|
handlePostProcessing(id) {
|
|
465
464
|
// must be done after success/failure to make sure the transaction is finalized
|
|
466
465
|
const transaction = this.getTransaction(id);
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
466
|
+
if (transaction.extrinsicType === _KoniTypes.ExtrinsicType.SEND_NFT) {
|
|
467
|
+
const inputData = (0, _utils2.parseTransactionData)(transaction.data);
|
|
468
|
+
try {
|
|
469
|
+
const sender = _uiKeyring.default.getPair(inputData.senderAddress);
|
|
470
|
+
sender && this.databaseService.handleNftTransfer(transaction.chain, [sender.address, _constants.ALL_ACCOUNT_KEY], inputData.nftItem).then(() => {
|
|
471
|
+
this.eventService.emit('transaction.transferNft', undefined);
|
|
472
|
+
}).catch(console.error);
|
|
473
|
+
} catch (e) {
|
|
474
|
+
console.error(e);
|
|
475
|
+
}
|
|
476
|
+
try {
|
|
477
|
+
const recipient = _uiKeyring.default.getPair(inputData.recipientAddress);
|
|
478
|
+
recipient && this.databaseService.addNft(recipient.address, {
|
|
479
|
+
...inputData.nftItem,
|
|
480
|
+
owner: recipient.address
|
|
481
|
+
}).catch(console.error);
|
|
482
|
+
} catch (e) {
|
|
483
|
+
console.error(e);
|
|
484
|
+
}
|
|
485
|
+
} else if ([_KoniTypes.ExtrinsicType.STAKING_BOND, _KoniTypes.ExtrinsicType.STAKING_UNBOND, _KoniTypes.ExtrinsicType.STAKING_WITHDRAW, _KoniTypes.ExtrinsicType.STAKING_CANCEL_UNSTAKE, _KoniTypes.ExtrinsicType.STAKING_CLAIM_REWARD, _KoniTypes.ExtrinsicType.STAKING_JOIN_POOL, _KoniTypes.ExtrinsicType.STAKING_POOL_WITHDRAW, _KoniTypes.ExtrinsicType.STAKING_LEAVE_POOL].includes(transaction.extrinsicType)) {
|
|
486
|
+
this.eventService.emit('transaction.submitStaking', transaction.chain);
|
|
479
487
|
}
|
|
480
488
|
}
|
|
481
489
|
onSuccess(_ref2) {
|
|
@@ -587,6 +595,9 @@ class TransactionService {
|
|
|
587
595
|
payload.isToContract = isToContract;
|
|
588
596
|
payload.parseData = isToContract ? payload.data ? (await (0, _parseTransaction.parseContractInput)(payload.data || '', payload.to || '', chainInfo)).result : '' : payload.data || '';
|
|
589
597
|
}
|
|
598
|
+
if ('data' in payload && payload.data === undefined) {
|
|
599
|
+
delete payload.data;
|
|
600
|
+
}
|
|
590
601
|
|
|
591
602
|
// Set unique nonce to avoid transaction errors
|
|
592
603
|
if (!payload.nonce) {
|
package/cjs/utils/address.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.convertSubjectInfoToAddresses = void 0;
|
|
6
7
|
exports.quickFormatAddressToCompare = quickFormatAddressToCompare;
|
|
7
8
|
exports.simpleAddress = void 0;
|
|
8
9
|
var _index = require("@subwallet/extension-base/utils/index");
|
|
@@ -22,4 +23,12 @@ function quickFormatAddressToCompare(address) {
|
|
|
22
23
|
return address;
|
|
23
24
|
}
|
|
24
25
|
return (0, _index.reformatAddress)(address, 42).toLowerCase();
|
|
25
|
-
}
|
|
26
|
+
}
|
|
27
|
+
const convertSubjectInfoToAddresses = subjectInfo => {
|
|
28
|
+
return Object.values(subjectInfo).map(info => ({
|
|
29
|
+
address: info.json.address,
|
|
30
|
+
type: info.type,
|
|
31
|
+
...info.json.meta
|
|
32
|
+
}));
|
|
33
|
+
};
|
|
34
|
+
exports.convertSubjectInfoToAddresses = convertSubjectInfoToAddresses;
|
package/cjs/utils/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
@@ -28,15 +27,14 @@ exports.isUrl = isUrl;
|
|
|
28
27
|
exports.isValidSubstrateAddress = exports.isValidProvider = void 0;
|
|
29
28
|
exports.mergeNetworkProviders = mergeNetworkProviders;
|
|
30
29
|
exports.parseIpfsLink = exports.notDef = exports.nonEmptyArr = void 0;
|
|
31
|
-
exports.parseNumberToDisplay = parseNumberToDisplay;
|
|
32
30
|
exports.parseRawNumber = parseRawNumber;
|
|
33
31
|
exports.reformatAddress = reformatAddress;
|
|
34
32
|
exports.sumBN = sumBN;
|
|
35
33
|
exports.toUnit = void 0;
|
|
36
34
|
exports.utf16ToString = utf16ToString;
|
|
35
|
+
exports.waitTimeout = waitTimeout;
|
|
37
36
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
38
37
|
var _constants = require("@subwallet/extension-base/constants");
|
|
39
|
-
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
40
38
|
var _util = require("@polkadot/util");
|
|
41
39
|
var _utilCrypto = require("@polkadot/util-crypto");
|
|
42
40
|
var _canDerive = require("./canDerive");
|
|
@@ -54,7 +52,8 @@ exports.isEmptyArray = isEmptyArray;
|
|
|
54
52
|
function isAccountAll(address) {
|
|
55
53
|
return address === _constants.ALL_ACCOUNT_KEY;
|
|
56
54
|
}
|
|
57
|
-
function reformatAddress(address
|
|
55
|
+
function reformatAddress(address) {
|
|
56
|
+
let networkPrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 42;
|
|
58
57
|
let isEthereum = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
59
58
|
try {
|
|
60
59
|
if ((0, _utilCrypto.isEthereumAddress)(address)) {
|
|
@@ -315,21 +314,16 @@ exports.filterAndSortingAccountByAuthType = filterAndSortingAccountByAuthType;
|
|
|
315
314
|
function parseRawNumber(value) {
|
|
316
315
|
return parseFloat(value.replaceAll(',', ''));
|
|
317
316
|
}
|
|
318
|
-
function parseNumberToDisplay(amount, decimals) {
|
|
319
|
-
if (!decimals) {
|
|
320
|
-
return '0';
|
|
321
|
-
}
|
|
322
|
-
const parsedAmount = parseRawNumber(amount.toString());
|
|
323
|
-
const bigN = new _bignumber.default(parsedAmount / 10 ** decimals);
|
|
324
|
-
const roundedString = bigN.toFixed(9);
|
|
325
|
-
const formattedString = parseFloat(roundedString); // remove excess zeros at the end
|
|
326
|
-
|
|
327
|
-
return formattedString.toString();
|
|
328
|
-
}
|
|
329
317
|
function isSameAddress(address1, address2) {
|
|
318
|
+
if ((0, _utilCrypto.isEthereumAddress)(address1)) {
|
|
319
|
+
return address1.toLowerCase() === address2.toLowerCase();
|
|
320
|
+
}
|
|
330
321
|
return reformatAddress(address1, 0) === reformatAddress(address2, 0); // TODO: maybe there's a better way
|
|
331
322
|
}
|
|
332
323
|
|
|
333
324
|
function getDomainFromUrl(url) {
|
|
334
325
|
return url.replace(/^(https?:\/\/)?(www\.)?/, '').split('/')[0];
|
|
326
|
+
}
|
|
327
|
+
async function waitTimeout(ms) {
|
|
328
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
335
329
|
}
|
package/constants/index.d.ts
CHANGED
|
@@ -1,22 +1,16 @@
|
|
|
1
1
|
export declare const CRON_REFRESH_PRICE_INTERVAL = 30000;
|
|
2
|
-
export declare const DOTSAMA_API_TIMEOUT = 30000;
|
|
3
|
-
export declare const DOTSAMA_AUTO_CONNECT_MS = 3000;
|
|
4
|
-
export declare const DOTSAMA_MAX_CONTINUE_RETRY = 2;
|
|
5
2
|
export declare const CRON_AUTO_RECOVER_DOTSAMA_INTERVAL = 60000;
|
|
6
3
|
export declare const CRON_AUTO_RECOVER_WEB3_INTERVAL = 90000;
|
|
7
4
|
export declare const ACALA_REFRESH_CROWDLOAN_INTERVAL = 300000;
|
|
8
|
-
export declare const
|
|
9
|
-
export declare const
|
|
10
|
-
export declare const
|
|
11
|
-
export declare const SUBSCRIBE_BALANCE_FAST_INTERVAL = 9000;
|
|
12
|
-
export declare const CRON_REFRESH_NFT_INTERVAL = 900000;
|
|
5
|
+
export declare const ASTAR_REFRESH_BALANCE_INTERVAL = 60000;
|
|
6
|
+
export declare const SUB_TOKEN_REFRESH_BALANCE_INTERVAL = 60000;
|
|
7
|
+
export declare const CRON_REFRESH_NFT_INTERVAL = 7200000;
|
|
13
8
|
export declare const CRON_REFRESH_STAKING_REWARD_INTERVAL = 900000;
|
|
14
|
-
export declare const CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL =
|
|
15
|
-
export declare const CRON_REFRESH_HISTORY_INTERVAL =
|
|
16
|
-
export declare const CRON_GET_API_MAP_STATUS =
|
|
17
|
-
export declare const CRON_REFRESH_STAKING_DATA = 30000;
|
|
9
|
+
export declare const CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL = 300000;
|
|
10
|
+
export declare const CRON_REFRESH_HISTORY_INTERVAL = 900000;
|
|
11
|
+
export declare const CRON_GET_API_MAP_STATUS = 10000;
|
|
18
12
|
export declare const CRON_REFRESH_CHAIN_STAKING_METADATA = 900000;
|
|
19
|
-
export declare const CRON_REFRESH_CHAIN_NOMINATOR_METADATA =
|
|
13
|
+
export declare const CRON_REFRESH_CHAIN_NOMINATOR_METADATA = 1800000;
|
|
20
14
|
export declare const ALL_ACCOUNT_KEY = "ALL";
|
|
21
15
|
export declare const ALL_NETWORK_KEY = "all";
|
|
22
16
|
export declare const ALL_GENESIS_HASH: null;
|
package/constants/index.js
CHANGED
|
@@ -2,24 +2,18 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
export const CRON_REFRESH_PRICE_INTERVAL = 30000;
|
|
5
|
-
export const DOTSAMA_API_TIMEOUT = 30000;
|
|
6
|
-
export const DOTSAMA_AUTO_CONNECT_MS = 3000;
|
|
7
|
-
export const DOTSAMA_MAX_CONTINUE_RETRY = 2;
|
|
8
5
|
export const CRON_AUTO_RECOVER_DOTSAMA_INTERVAL = 60000;
|
|
9
6
|
export const CRON_AUTO_RECOVER_WEB3_INTERVAL = 90000;
|
|
10
7
|
export const ACALA_REFRESH_CROWDLOAN_INTERVAL = 300000;
|
|
11
|
-
export const
|
|
12
|
-
export const
|
|
13
|
-
export const
|
|
14
|
-
export const SUBSCRIBE_BALANCE_FAST_INTERVAL = 9000;
|
|
15
|
-
export const CRON_REFRESH_NFT_INTERVAL = 900000;
|
|
8
|
+
export const ASTAR_REFRESH_BALANCE_INTERVAL = 60000;
|
|
9
|
+
export const SUB_TOKEN_REFRESH_BALANCE_INTERVAL = 60000;
|
|
10
|
+
export const CRON_REFRESH_NFT_INTERVAL = 7200000;
|
|
16
11
|
export const CRON_REFRESH_STAKING_REWARD_INTERVAL = 900000;
|
|
17
|
-
export const CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL =
|
|
18
|
-
export const CRON_REFRESH_HISTORY_INTERVAL =
|
|
19
|
-
export const CRON_GET_API_MAP_STATUS =
|
|
20
|
-
export const CRON_REFRESH_STAKING_DATA = 30000;
|
|
12
|
+
export const CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL = 300000;
|
|
13
|
+
export const CRON_REFRESH_HISTORY_INTERVAL = 900000;
|
|
14
|
+
export const CRON_GET_API_MAP_STATUS = 10000;
|
|
21
15
|
export const CRON_REFRESH_CHAIN_STAKING_METADATA = 900000;
|
|
22
|
-
export const CRON_REFRESH_CHAIN_NOMINATOR_METADATA =
|
|
16
|
+
export const CRON_REFRESH_CHAIN_NOMINATOR_METADATA = 1800000;
|
|
23
17
|
export const ALL_ACCOUNT_KEY = 'ALL';
|
|
24
18
|
export const ALL_NETWORK_KEY = 'all';
|
|
25
19
|
export const ALL_GENESIS_HASH = null;
|
|
@@ -4,4 +4,3 @@ import { _EvmApi, _SubstrateApi } from '@subwallet/extension-base/services/chain
|
|
|
4
4
|
export declare function subscribeBalance(addresses: string[], chainInfoMap: Record<string, _ChainInfo>, substrateApiMap: Record<string, _SubstrateApi>, evmApiMap: Record<string, _EvmApi>, callback: (rs: BalanceItem) => void): () => void;
|
|
5
5
|
export declare function subscribeSubstrateBalance(addresses: string[], chainInfo: _ChainInfo, chain: string, networkAPI: _SubstrateApi, evmApiMap: Record<string, _EvmApi>, callBack: (rs: BalanceItem) => void): Promise<() => void>;
|
|
6
6
|
export declare function subscribeEVMBalance(chain: string, addresses: string[], evmApiMap: Record<string, _EvmApi>, callback: (rs: BalanceItem) => void, tokenInfo: _ChainAsset): () => void;
|
|
7
|
-
export declare function getFreeBalance(chain: string, address: string, substrateApiMap: Record<string, _SubstrateApi>, evmApiMap: Record<string, _EvmApi>, tokenSlug?: string): Promise<string>;
|