@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.
Files changed (134) hide show
  1. package/background/KoniTypes.d.ts +46 -38
  2. package/background/KoniTypes.js +8 -8
  3. package/background/errors/TransactionError.js +25 -1
  4. package/background/types.d.ts +10 -5
  5. package/cjs/background/KoniTypes.js +8 -8
  6. package/cjs/background/errors/TransactionError.js +24 -0
  7. package/cjs/constants/index.js +8 -26
  8. package/cjs/koni/api/dotsama/balance.js +49 -224
  9. package/cjs/koni/api/dotsama/transfer.js +34 -39
  10. package/cjs/koni/api/nft/acala_nft/index.js +7 -7
  11. package/cjs/koni/api/nft/bit.country/index.js +7 -6
  12. package/cjs/koni/api/nft/evm_nft/index.js +8 -3
  13. package/cjs/koni/api/nft/index.js +3 -6
  14. package/cjs/koni/api/nft/karura_nft/index.js +7 -6
  15. package/cjs/koni/api/nft/rmrk_nft/index.js +11 -1
  16. package/cjs/koni/api/nft/statemine_nft/index.js +7 -6
  17. package/cjs/koni/api/nft/unique_nft/index.js +5 -1
  18. package/cjs/koni/api/nft/wasm_nft/index.js +170 -111
  19. package/cjs/koni/api/nft/wasm_nft/utils.js +11 -7
  20. package/cjs/koni/api/staking/bonding/amplitude.js +13 -9
  21. package/cjs/koni/api/staking/bonding/astar.js +15 -13
  22. package/cjs/koni/api/staking/bonding/index.js +22 -10
  23. package/cjs/koni/api/staking/bonding/paraChain.js +85 -2
  24. package/cjs/koni/api/staking/bonding/relayChain.js +122 -16
  25. package/cjs/koni/api/staking/bonding/utils.js +27 -8
  26. package/cjs/koni/api/tokens/wasm/index.js +5 -4
  27. package/cjs/koni/api/tokens/wasm/utils.js +63 -0
  28. package/cjs/koni/api/xcm/polkadotXcm.js +1 -1
  29. package/cjs/koni/api/xcm/utils.js +18 -13
  30. package/cjs/koni/api/xcm/xTokens.js +1 -1
  31. package/cjs/koni/api/xcm/xcmPallet.js +9 -6
  32. package/cjs/koni/background/cron.js +171 -61
  33. package/cjs/koni/background/handlers/Extension.js +382 -207
  34. package/cjs/koni/background/handlers/State.js +41 -33
  35. package/cjs/koni/background/handlers/Tabs.js +50 -17
  36. package/cjs/koni/background/subscription.js +32 -29
  37. package/cjs/packageInfo.js +1 -1
  38. package/cjs/services/chain-service/handler/SubstrateChainHandler.js +13 -8
  39. package/cjs/services/chain-service/index.js +59 -45
  40. package/cjs/services/event-service/index.js +5 -1
  41. package/cjs/services/event-service/types.js +11 -1
  42. package/cjs/services/history-service/index.js +19 -13
  43. package/cjs/services/history-service/subsquid-multi-chain-history.js +13 -10
  44. package/cjs/services/keyring-service/index.js +11 -13
  45. package/cjs/services/price-service/coingecko.js +0 -1
  46. package/cjs/services/price-service/index.js +2 -3
  47. package/cjs/services/request-service/handler/AuthRequestHandler.js +13 -7
  48. package/cjs/services/request-service/handler/EvmRequestHandler.js +8 -12
  49. package/cjs/services/request-service/index.js +14 -5
  50. package/cjs/services/storage-service/DatabaseService.js +56 -34
  51. package/cjs/services/storage-service/db-stores/Nft.js +7 -15
  52. package/cjs/services/transaction-service/event-parser/index.js +20 -48
  53. package/cjs/services/transaction-service/index.js +26 -15
  54. package/cjs/utils/address.js +10 -1
  55. package/cjs/utils/index.js +9 -15
  56. package/constants/index.d.ts +7 -13
  57. package/constants/index.js +7 -13
  58. package/koni/api/dotsama/balance.d.ts +0 -1
  59. package/koni/api/dotsama/balance.js +22 -197
  60. package/koni/api/dotsama/transfer.js +11 -16
  61. package/koni/api/nft/acala_nft/index.js +7 -7
  62. package/koni/api/nft/bit.country/index.js +7 -6
  63. package/koni/api/nft/evm_nft/index.js +7 -3
  64. package/koni/api/nft/index.d.ts +1 -2
  65. package/koni/api/nft/index.js +3 -6
  66. package/koni/api/nft/karura_nft/index.js +7 -6
  67. package/koni/api/nft/nft.d.ts +1 -0
  68. package/koni/api/nft/rmrk_nft/index.js +11 -1
  69. package/koni/api/nft/statemine_nft/index.js +7 -6
  70. package/koni/api/nft/unique_nft/index.js +5 -1
  71. package/koni/api/nft/wasm_nft/index.d.ts +0 -2
  72. package/koni/api/nft/wasm_nft/index.js +168 -109
  73. package/koni/api/nft/wasm_nft/utils.d.ts +7 -5
  74. package/koni/api/nft/wasm_nft/utils.js +7 -5
  75. package/koni/api/staking/bonding/amplitude.d.ts +0 -1
  76. package/koni/api/staking/bonding/amplitude.js +15 -10
  77. package/koni/api/staking/bonding/astar.js +8 -6
  78. package/koni/api/staking/bonding/index.d.ts +4 -1
  79. package/koni/api/staking/bonding/index.js +23 -13
  80. package/koni/api/staking/bonding/paraChain.d.ts +3 -0
  81. package/koni/api/staking/bonding/paraChain.js +86 -5
  82. package/koni/api/staking/bonding/relayChain.d.ts +5 -1
  83. package/koni/api/staking/bonding/relayChain.js +121 -18
  84. package/koni/api/staking/bonding/utils.d.ts +3 -2
  85. package/koni/api/staking/bonding/utils.js +27 -9
  86. package/koni/api/tokens/wasm/index.js +5 -4
  87. package/koni/api/tokens/wasm/utils.d.ts +6 -0
  88. package/koni/api/tokens/wasm/utils.js +54 -0
  89. package/koni/api/xcm/polkadotXcm.js +2 -2
  90. package/koni/api/xcm/utils.d.ts +5 -6
  91. package/koni/api/xcm/utils.js +15 -10
  92. package/koni/api/xcm/xTokens.js +2 -2
  93. package/koni/api/xcm/xcmPallet.js +10 -9
  94. package/koni/background/cron.d.ts +6 -1
  95. package/koni/background/cron.js +172 -62
  96. package/koni/background/handlers/Extension.d.ts +8 -3
  97. package/koni/background/handlers/Extension.js +297 -126
  98. package/koni/background/handlers/State.d.ts +5 -6
  99. package/koni/background/handlers/State.js +43 -33
  100. package/koni/background/handlers/Tabs.js +50 -17
  101. package/koni/background/subscription.js +31 -30
  102. package/package.json +18 -13
  103. package/packageInfo.js +1 -1
  104. package/services/chain-service/handler/SubstrateChainHandler.js +14 -9
  105. package/services/chain-service/helper/psp22_abi.json +1041 -881
  106. package/services/chain-service/helper/psp34_abi.json +2963 -1807
  107. package/services/chain-service/index.d.ts +3 -2
  108. package/services/chain-service/index.js +53 -40
  109. package/services/chain-service/types.d.ts +1 -0
  110. package/services/event-service/index.js +5 -1
  111. package/services/event-service/types.d.ts +5 -9
  112. package/services/event-service/types.js +4 -1
  113. package/services/history-service/index.d.ts +4 -2
  114. package/services/history-service/index.js +19 -13
  115. package/services/history-service/subsquid-multi-chain-history.js +16 -12
  116. package/services/keyring-service/index.d.ts +4 -2
  117. package/services/keyring-service/index.js +11 -13
  118. package/services/price-service/coingecko.js +0 -1
  119. package/services/price-service/index.js +2 -3
  120. package/services/request-service/handler/AuthRequestHandler.d.ts +3 -1
  121. package/services/request-service/handler/AuthRequestHandler.js +13 -7
  122. package/services/request-service/handler/EvmRequestHandler.js +8 -12
  123. package/services/request-service/index.d.ts +3 -1
  124. package/services/request-service/index.js +14 -5
  125. package/services/storage-service/DatabaseService.d.ts +1 -0
  126. package/services/storage-service/DatabaseService.js +56 -34
  127. package/services/storage-service/db-stores/Nft.d.ts +2 -2
  128. package/services/storage-service/db-stores/Nft.js +7 -14
  129. package/services/transaction-service/event-parser/index.js +21 -49
  130. package/services/transaction-service/index.js +26 -15
  131. package/utils/address.d.ts +3 -0
  132. package/utils/address.js +8 -1
  133. package/utils/index.d.ts +2 -2
  134. 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
- const stakings = await this.stores.staking.getStakings(addresses, chains);
93
- this.logger.log('Get Stakings: ', stakings);
94
- return stakings;
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
- const stakings = await this.stores.staking.getPooledStakings(addresses, chainHashes);
101
- this.logger.log('Get Pooled Stakings: ', stakings);
102
- return stakings;
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
- const histories = await this.stores.transaction.queryHistory(query);
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
- return this.stores.transaction.bulkUpsert(histories);
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
- const nfts = await this.stores.nft.getNft(addresses, chainHashes);
156
- this.logger.log('Get NFTs: ', nfts);
157
- return nfts;
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
- const allChains = await this.stores.chain.getAll();
189
- this.logger.log('Get all chains: ', allChains);
190
- return allChains;
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
- const allAssets = await this.stores.asset.getAll();
200
- this.logger.log('Get all stored assets: ', allAssets);
201
- return allAssets;
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
- deleteRemovedNftsFromCollection(chainHash, address, collection) {
28
- let nftIds = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
29
- const conditions = {
30
- chainHash,
31
- address
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
- deleteNftsFromRemovedCollection(chain, address, collectionIds) {
33
+ deleteNftsByChainAndOwner(chain, address) {
42
34
  return this.table.where({
43
35
  address,
44
36
  chain
45
- }).and(nft => !collectionIds.some(item => item === nft.collectionId));
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 (isFeeUseMainTokenSymbol && record.event.section === 'balances' && record.event.method.toLowerCase() === 'withdraw') {
35
- var _record$event$data$2;
36
- if ((_record$event$data$2 = record.event.data[1]) !== null && _record$event$data$2 !== void 0 && _record$event$data$2.toString()) {
37
- var _record$event$data$3;
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$3 = record.event.data[1]) === null || _record$event$data$3 === void 0 ? void 0 : _record$event$data$3.toString(),
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 (isFeeUseMainTokenSymbol && record.event.section === 'tokens' && record.event.method.toLowerCase() === 'withdrawn') {
45
- var _record$event$data$4;
46
- if ((_record$event$data$4 = record.event.data[2]) !== null && _record$event$data$4 !== void 0 && _record$event$data$4.toString()) {
47
- var _record$event$data$5;
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$5 = record.event.data[2]) === null || _record$event$data$5 === void 0 ? void 0 : _record$event$data$5.toString(),
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 (['karura', 'acala', 'acala_testnet'].includes(chain) && !(0, _utils._isNativeToken)(sendingTokenInfo)) {
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$7;
76
- if ((_record$event$data$7 = record.event.data[1]) !== null && _record$event$data$7 !== void 0 && _record$event$data$7.toString()) {
77
- var _record$event$data$8;
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$8 = record.event.data[1]) === null || _record$event$data$8 === void 0 ? void 0 : _record$event$data$8.toString()) || '0',
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 (isFeeUseMainTokenSymbol && record.event.section === 'balances' && record.event.method.toLowerCase() === 'withdraw') {
91
- var _record$event$data$9;
92
- if ((_record$event$data$9 = record.event.data[1]) !== null && _record$event$data$9 !== void 0 && _record$event$data$9.toString()) {
93
- var _record$event$data$10;
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$10 = record.event.data[1]) === null || _record$event$data$10 === void 0 ? void 0 : _record$event$data$10.toString()) || '0',
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.getAccount(historyItem.to);
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: historyItem.to,
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
- switch (transaction.extrinsicType) {
468
- case _KoniTypes.ExtrinsicType.SEND_NFT:
469
- {
470
- const inputData = (0, _utils2.parseTransactionData)(transaction.data);
471
- const sender = _uiKeyring.default.getAccount(inputData.senderAddress);
472
- const recipient = _uiKeyring.default.getAccount(inputData.recipientAddress);
473
- sender && this.databaseService.handleNftTransfer(transaction.chain, [sender.address, _constants.ALL_ACCOUNT_KEY], inputData.nftItem).catch(console.error);
474
- recipient && this.databaseService.addNft(recipient.address, {
475
- ...inputData.nftItem,
476
- owner: recipient.address
477
- }).catch(console.error);
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) {
@@ -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;
@@ -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, networkPrefix) {
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
  }
@@ -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 ACALA_REFRESH_BALANCE_INTERVAL = 30000;
9
- export declare const ASTAR_REFRESH_BALANCE_INTERVAL = 30000;
10
- export declare const SUB_TOKEN_REFRESH_BALANCE_INTERVAL = 30000;
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 = 10000;
15
- export declare const CRON_REFRESH_HISTORY_INTERVAL = 90000;
16
- export declare const CRON_GET_API_MAP_STATUS = 5000;
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 = 900000;
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;
@@ -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 ACALA_REFRESH_BALANCE_INTERVAL = 30000;
12
- export const ASTAR_REFRESH_BALANCE_INTERVAL = 30000;
13
- export const SUB_TOKEN_REFRESH_BALANCE_INTERVAL = 30000;
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 = 10000;
18
- export const CRON_REFRESH_HISTORY_INTERVAL = 90000;
19
- export const CRON_GET_API_MAP_STATUS = 5000;
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 = 900000;
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>;