@subwallet/extension-base 1.1.2-0 → 1.1.3-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/background/KoniTypes.d.ts +32 -4
  2. package/background/KoniTypes.js +2 -1
  3. package/cjs/background/KoniTypes.js +4 -2
  4. package/cjs/constants/i18n.js +10 -2
  5. package/cjs/koni/api/dotsama/transfer.js +6 -2
  6. package/cjs/koni/api/nft/acala_nft/index.js +0 -2
  7. package/cjs/koni/api/nft/bit.country/index.js +49 -18
  8. package/cjs/koni/api/nft/config.js +5 -3
  9. package/cjs/koni/api/nft/evm_nft/index.js +0 -5
  10. package/cjs/koni/api/nft/index.js +2 -3
  11. package/cjs/koni/api/nft/karura_nft/index.js +0 -2
  12. package/cjs/koni/api/nft/rmrk_nft/index.js +0 -4
  13. package/cjs/koni/api/nft/statemine_nft/index.js +0 -2
  14. package/cjs/koni/api/nft/unique_nft/index.js +0 -5
  15. package/cjs/koni/api/nft/wasm_nft/index.js +0 -5
  16. package/cjs/koni/api/staking/bonding/amplitude.js +6 -6
  17. package/cjs/koni/api/staking/bonding/astar.js +6 -6
  18. package/cjs/koni/api/staking/bonding/paraChain.js +5 -5
  19. package/cjs/koni/api/staking/bonding/relayChain.js +24 -14
  20. package/cjs/koni/api/staking/bonding/utils.js +1 -7
  21. package/cjs/koni/api/xcm/xTokens.js +1 -1
  22. package/cjs/koni/background/cron.js +2 -37
  23. package/cjs/koni/background/handlers/Extension.js +206 -137
  24. package/cjs/koni/background/handlers/State.js +72 -84
  25. package/cjs/koni/background/subscription.js +6 -88
  26. package/cjs/packageInfo.js +1 -1
  27. package/cjs/services/chain-service/constants.js +8 -5
  28. package/cjs/services/chain-service/handler/SubstrateApi.js +8 -0
  29. package/cjs/services/chain-service/handler/manta/MantaPrivateHandler.js +1 -1
  30. package/cjs/services/chain-service/handler/manta/manta-extension-sdk-empty.js +13 -0
  31. package/cjs/services/chain-service/index.js +11 -6
  32. package/cjs/services/request-service/handler/PopupHandler.js +2 -2
  33. package/cjs/services/request-service/helper/index.js +2 -26
  34. package/cjs/services/setting-service/constants.js +16 -6
  35. package/cjs/services/storage-service/DatabaseService.js +3 -0
  36. package/cjs/services/storage-service/db-stores/Metadata.js +1 -1
  37. package/cjs/services/storage-service/db-stores/Nft.js +3 -0
  38. package/cjs/services/storage-service/db-stores/NominatorMetadata.js +3 -2
  39. package/cjs/services/wallet-connect-service/constants.js +8 -5
  40. package/cjs/services/wallet-connect-service/index.js +50 -36
  41. package/cjs/utils/environment.js +32 -2
  42. package/cjs/utils/index.js +33 -5
  43. package/cjs/utils/registry.js +25 -0
  44. package/cjs/utils/translate.js +11 -0
  45. package/constants/i18n.d.ts +2 -1
  46. package/constants/i18n.js +8 -1
  47. package/koni/api/dotsama/transfer.js +6 -2
  48. package/koni/api/nft/acala_nft/index.js +0 -2
  49. package/koni/api/nft/bit.country/index.d.ts +1 -0
  50. package/koni/api/nft/bit.country/index.js +50 -19
  51. package/koni/api/nft/config.d.ts +2 -1
  52. package/koni/api/nft/config.js +2 -1
  53. package/koni/api/nft/evm_nft/index.js +0 -4
  54. package/koni/api/nft/index.d.ts +1 -1
  55. package/koni/api/nft/index.js +2 -3
  56. package/koni/api/nft/karura_nft/index.js +0 -2
  57. package/koni/api/nft/nft.d.ts +0 -1
  58. package/koni/api/nft/rmrk_nft/index.js +0 -4
  59. package/koni/api/nft/statemine_nft/index.js +0 -2
  60. package/koni/api/nft/unique_nft/index.js +0 -5
  61. package/koni/api/nft/wasm_nft/index.js +0 -4
  62. package/koni/api/staking/bonding/amplitude.js +6 -6
  63. package/koni/api/staking/bonding/astar.js +6 -6
  64. package/koni/api/staking/bonding/paraChain.js +5 -5
  65. package/koni/api/staking/bonding/relayChain.js +24 -14
  66. package/koni/api/staking/bonding/utils.js +1 -7
  67. package/koni/api/xcm/xTokens.js +1 -1
  68. package/koni/background/cron.d.ts +0 -5
  69. package/koni/background/cron.js +4 -39
  70. package/koni/background/handlers/Extension.d.ts +4 -0
  71. package/koni/background/handlers/Extension.js +97 -32
  72. package/koni/background/handlers/State.d.ts +8 -7
  73. package/koni/background/handlers/State.js +72 -84
  74. package/koni/background/subscription.d.ts +1 -4
  75. package/koni/background/subscription.js +9 -88
  76. package/package.json +22 -6
  77. package/packageInfo.js +1 -1
  78. package/services/chain-service/constants.d.ts +2 -0
  79. package/services/chain-service/constants.js +8 -5
  80. package/services/chain-service/handler/SubstrateApi.js +8 -0
  81. package/services/chain-service/handler/manta/MantaPrivateHandler.d.ts +1 -1
  82. package/services/chain-service/handler/manta/MantaPrivateHandler.js +1 -1
  83. package/services/chain-service/handler/manta/manta-extension-sdk-empty.d.ts +4 -0
  84. package/services/chain-service/handler/manta/manta-extension-sdk-empty.js +5 -0
  85. package/services/chain-service/index.d.ts +2 -1
  86. package/services/chain-service/index.js +11 -6
  87. package/services/request-service/handler/PopupHandler.js +1 -1
  88. package/services/request-service/helper/index.d.ts +0 -2
  89. package/services/request-service/helper/index.js +0 -23
  90. package/services/request-service/types.d.ts +0 -1
  91. package/services/setting-service/constants.d.ts +6 -1
  92. package/services/setting-service/constants.js +10 -5
  93. package/services/storage-service/DatabaseService.d.ts +1 -0
  94. package/services/storage-service/DatabaseService.js +3 -0
  95. package/services/storage-service/db-stores/Metadata.js +1 -1
  96. package/services/storage-service/db-stores/Nft.d.ts +1 -0
  97. package/services/storage-service/db-stores/Nft.js +3 -0
  98. package/services/storage-service/db-stores/NominatorMetadata.js +3 -2
  99. package/services/wallet-connect-service/constants.d.ts +2 -1
  100. package/services/wallet-connect-service/constants.js +5 -3
  101. package/services/wallet-connect-service/index.d.ts +0 -1
  102. package/services/wallet-connect-service/index.js +50 -36
  103. package/utils/environment.d.ts +4 -1
  104. package/utils/environment.js +28 -1
  105. package/utils/index.d.ts +3 -0
  106. package/utils/index.js +6 -2
  107. package/utils/registry.d.ts +4 -0
  108. package/utils/registry.js +18 -0
  109. package/utils/translate.d.ts +1 -0
  110. package/utils/translate.js +4 -0
@@ -238,14 +238,14 @@ async function subscribeRelayChainNominatorMetadata(chainInfo, address, substrat
238
238
  }
239
239
  }
240
240
  ledger.unlocking.forEach(unlockingChunk => {
241
- const isClaimable = unlockingChunk.era - parseInt(currentEra) <= 0;
242
- const remainingEra = unlockingChunk.era - (parseInt(currentEra) + 1);
241
+ const isClaimable = unlockingChunk.era - parseInt(currentEra) < 0;
242
+ const remainingEra = unlockingChunk.era - parseInt(currentEra);
243
243
  const waitingTime = remainingEra * _constants._STAKING_ERA_LENGTH_MAP[chain];
244
244
  unstakingList.push({
245
245
  chain,
246
246
  status: isClaimable ? _KoniTypes.UnstakingStatus.CLAIMABLE : _KoniTypes.UnstakingStatus.UNLOCKING,
247
247
  claimable: unlockingChunk.value.toString(),
248
- waitingTime: waitingTime > 0 ? waitingTime : 0
248
+ waitingTime: waitingTime
249
249
  });
250
250
  });
251
251
  return {
@@ -337,14 +337,14 @@ async function getRelayChainNominatorMetadata(chainInfo, address, substrateApi)
337
337
  }
338
338
  }
339
339
  ledger.unlocking.forEach(unlockingChunk => {
340
- const isClaimable = unlockingChunk.era - parseInt(currentEra) <= 0;
341
- const remainingEra = unlockingChunk.era - (parseInt(currentEra) + 1);
340
+ const isClaimable = unlockingChunk.era - parseInt(currentEra) < 0;
341
+ const remainingEra = unlockingChunk.era - parseInt(currentEra);
342
342
  const waitingTime = remainingEra * _constants._STAKING_ERA_LENGTH_MAP[chain];
343
343
  unstakingList.push({
344
344
  chain,
345
345
  status: isClaimable ? _KoniTypes.UnstakingStatus.CLAIMABLE : _KoniTypes.UnstakingStatus.UNLOCKING,
346
346
  claimable: unlockingChunk.value.toString(),
347
- waitingTime: waitingTime > 0 ? waitingTime : 0
347
+ waitingTime: waitingTime
348
348
  });
349
349
  });
350
350
  return {
@@ -395,14 +395,14 @@ async function subscribeRelayChainPoolMemberMetadata(chainInfo, address, substra
395
395
  const unstakings = [];
396
396
  Object.entries(poolMemberInfo.unbondingEras).forEach(_ref => {
397
397
  let [unlockingEra, amount] = _ref;
398
- const isClaimable = parseInt(unlockingEra) - parseInt(currentEra) <= 0;
399
- const remainingEra = parseInt(unlockingEra) - (parseInt(currentEra) + 1);
398
+ const isClaimable = parseInt(unlockingEra) - parseInt(currentEra) < 0;
399
+ const remainingEra = parseInt(unlockingEra) - parseInt(currentEra);
400
400
  const waitingTime = remainingEra * _constants._STAKING_ERA_LENGTH_MAP[chainInfo.slug];
401
401
  unstakings.push({
402
402
  chain: chainInfo.slug,
403
403
  status: isClaimable ? _KoniTypes.UnstakingStatus.CLAIMABLE : _KoniTypes.UnstakingStatus.UNLOCKING,
404
404
  claimable: amount.toString(),
405
- waitingTime: waitingTime > 0 ? waitingTime : 0
405
+ waitingTime: waitingTime
406
406
  });
407
407
  });
408
408
  const bnActiveStake = new _util.BN(poolMemberInfo.points.toString());
@@ -473,14 +473,14 @@ async function getRelayChainPoolMemberMetadata(chainInfo, address, substrateApi)
473
473
  const unstakings = [];
474
474
  Object.entries(poolMemberInfo.unbondingEras).forEach(_ref2 => {
475
475
  let [unlockingEra, amount] = _ref2;
476
- const isClaimable = parseInt(unlockingEra) - parseInt(currentEra) <= 0;
477
- const remainingEra = parseInt(unlockingEra) - (parseInt(currentEra) + 1);
476
+ const isClaimable = parseInt(unlockingEra) - parseInt(currentEra) < 0;
477
+ const remainingEra = parseInt(unlockingEra) - parseInt(currentEra);
478
478
  const waitingTime = remainingEra * _constants._STAKING_ERA_LENGTH_MAP[chainInfo.slug];
479
479
  unstakings.push({
480
480
  chain: chainInfo.slug,
481
481
  status: isClaimable ? _KoniTypes.UnstakingStatus.CLAIMABLE : _KoniTypes.UnstakingStatus.UNLOCKING,
482
482
  claimable: amount.toString(),
483
- waitingTime: waitingTime > 0 ? waitingTime : 0
483
+ waitingTime: waitingTime
484
484
  });
485
485
  });
486
486
  const bnActiveStake = new _util.BN(poolMemberInfo.points.toString());
@@ -615,17 +615,27 @@ async function getRelayBondingExtrinsic(substrateApi, amount, targetValidators,
615
615
  const binaryAmount = new _util.BN(amount);
616
616
  let bondTx;
617
617
  let nominateTx;
618
+ const _params = chainApi.api.tx.staking.bond.toJSON();
619
+ const paramsCount = _params.args.length;
618
620
  const validatorParamList = targetValidators.map(validator => {
619
621
  return validator.address;
620
622
  });
621
623
  if (!nominatorMetadata) {
622
- bondTx = chainApi.api.tx.staking.bond(address, binaryAmount, bondDest);
624
+ if (paramsCount === 2) {
625
+ bondTx = chainApi.api.tx.staking.bond(binaryAmount, bondDest);
626
+ } else {
627
+ bondTx = chainApi.api.tx.staking.bond(address, binaryAmount, bondDest);
628
+ }
623
629
  nominateTx = chainApi.api.tx.staking.nominate(validatorParamList);
624
630
  return chainApi.api.tx.utility.batchAll([bondTx, nominateTx]);
625
631
  }
626
632
  if (!nominatorMetadata.isBondedBefore) {
627
633
  // first time
628
- bondTx = chainApi.api.tx.staking.bond(nominatorMetadata.address, binaryAmount, bondDest);
634
+ if (paramsCount === 2) {
635
+ bondTx = chainApi.api.tx.staking.bond(binaryAmount, bondDest);
636
+ } else {
637
+ bondTx = chainApi.api.tx.staking.bond(nominatorMetadata.address, binaryAmount, bondDest);
638
+ }
629
639
  nominateTx = chainApi.api.tx.staking.nominate(validatorParamList);
630
640
  return chainApi.api.tx.utility.batchAll([bondTx, nominateTx]);
631
641
  } else {
@@ -218,13 +218,7 @@ function getStakingAvailableActionsByNominator(nominatorMetadata, unclaimedRewar
218
218
  }
219
219
  if (nominatorMetadata.unstakings.length > 0) {
220
220
  result.push(StakingAction.CANCEL_UNSTAKE);
221
- let hasClaimable = false;
222
- for (const unstaking of nominatorMetadata.unstakings) {
223
- if (unstaking.status === _KoniTypes.UnstakingStatus.CLAIMABLE) {
224
- hasClaimable = true;
225
- break;
226
- }
227
- }
221
+ const hasClaimable = nominatorMetadata.unstakings.some(unstaking => unstaking.status === _KoniTypes.UnstakingStatus.CLAIMABLE);
228
222
  if (hasClaimable) {
229
223
  result.push(StakingAction.WITHDRAW);
230
224
  }
@@ -25,6 +25,6 @@ function getCurrencyId(tokenInfo) {
25
25
  }
26
26
  function getExtrinsicByXtokensPallet(tokenInfo, originChainInfo, destinationChainInfo, recipientAddress, value, api) {
27
27
  const weightParam = ['pioneer'].includes(originChainInfo.slug) ? _utils.FOUR_INSTRUCTIONS_WEIGHT : (0, _utils.getDestWeight)();
28
- const destVersion = ['moonbeam', 'moonriver', 'bifrost_dot', 'interlay', 'hydradx_main'].includes(originChainInfo.slug) ? 'V3' : undefined;
28
+ const destVersion = ['moonbeam', 'moonriver', 'bifrost_dot', 'interlay', 'hydradx_main', 'acala'].includes(originChainInfo.slug) ? 'V3' : undefined;
29
29
  return api.tx.xTokens.transfer(getCurrencyId(tokenInfo), value, (0, _utils.getDestMultilocation)(destinationChainInfo, recipientAddress, destVersion), weightParam);
30
30
  }
@@ -72,7 +72,6 @@ class KoniCron {
72
72
  const serviceInfo = this.state.getServiceInfo();
73
73
  const commonReload = eventTypes.some(eventType => commonReloadEvents.includes(eventType));
74
74
  const chainUpdated = eventTypes.includes('chain.updateState');
75
- const stakingSubmitted = eventTypes.includes('transaction.submitStaking');
76
75
  const reloadMantaPay = eventTypes.includes('mantaPay.submitTransaction') || eventTypes.includes('mantaPay.enable');
77
76
  const updatedChains = [];
78
77
  if (chainUpdated) {
@@ -83,7 +82,7 @@ class KoniCron {
83
82
  }
84
83
  });
85
84
  }
86
- if (!commonReload && !chainUpdated && !stakingSubmitted && !reloadMantaPay) {
85
+ if (!commonReload && !chainUpdated && !reloadMantaPay) {
87
86
  return;
88
87
  }
89
88
  const address = (_serviceInfo$currentA = serviceInfo.currentAccountInfo) === null || _serviceInfo$currentA === void 0 ? void 0 : _serviceInfo$currentA.address;
@@ -92,7 +91,6 @@ class KoniCron {
92
91
  }
93
92
  const chainInfoMap = serviceInfo.chainInfoMap;
94
93
  const needUpdateNft = this.needUpdateNft(chainInfoMap, updatedChains);
95
- const needUpdateStaking = this.needUpdateStaking(chainInfoMap, updatedChains);
96
94
 
97
95
  // MantaPay
98
96
  reloadMantaPay && this.removeCron('syncMantaPay');
@@ -101,19 +99,10 @@ class KoniCron {
101
99
  (commonReload || needUpdateNft) && this.resetNft(address);
102
100
  (commonReload || needUpdateNft) && this.removeCron('refreshNft');
103
101
 
104
- // Staking
105
- (commonReload || needUpdateStaking || stakingSubmitted) && this.resetStakingReward();
106
- (commonReload || needUpdateStaking || stakingSubmitted) && this.removeCron('refreshStakingReward');
107
- (commonReload || needUpdateStaking || stakingSubmitted) && this.removeCron('refreshPoolingStakingReward');
108
- needUpdateStaking && this.removeCron('updateChainStakingMetadata');
109
-
110
102
  // Chains
111
103
  if (this.checkNetworkAvailable(serviceInfo)) {
112
104
  // only add cron job if there's at least 1 active network
113
105
  (commonReload || needUpdateNft) && this.addCron('refreshNft', this.refreshNft(address, serviceInfo.chainApiMap, this.state.getSmartContractNfts(), this.state.getActiveChainInfoMap()), _constants.CRON_REFRESH_NFT_INTERVAL);
114
- (commonReload || needUpdateStaking || stakingSubmitted) && this.addCron('refreshStakingReward', this.refreshStakingReward(address), _constants.CRON_REFRESH_STAKING_REWARD_INTERVAL);
115
- (commonReload || needUpdateStaking || stakingSubmitted) && this.addCron('refreshPoolingStakingReward', this.refreshStakingRewardFastInterval(address), _constants.CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL);
116
- needUpdateStaking && this.addCron('updateChainStakingMetadata', this.updateChainStakingMetadata(serviceInfo.chainInfoMap, serviceInfo.chainStateMap, serviceInfo.chainApiMap.substrate), _constants.CRON_REFRESH_CHAIN_STAKING_METADATA);
117
106
  reloadMantaPay && this.addCron('syncMantaPay', this.syncMantaPay, _constants.CRON_SYNC_MANTA_PAY);
118
107
  } else {
119
108
  this.setStakingRewardReady();
@@ -128,7 +117,6 @@ class KoniCron {
128
117
  this.addCron('refreshNft', this.refreshNft(currentAccountInfo.address, this.state.getApiMap(), this.state.getSmartContractNfts(), this.state.getActiveChainInfoMap()), _constants.CRON_REFRESH_NFT_INTERVAL);
129
118
  this.addCron('refreshStakingReward', this.refreshStakingReward(currentAccountInfo.address), _constants.CRON_REFRESH_STAKING_REWARD_INTERVAL);
130
119
  this.addCron('refreshPoolingStakingReward', this.refreshStakingRewardFastInterval(currentAccountInfo.address), _constants.CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL);
131
- this.addCron('updateChainStakingMetadata', this.updateChainStakingMetadata(this.state.getChainInfoMap(), this.state.getChainStateMap(), this.state.getSubstrateApiMap()), _constants.CRON_REFRESH_CHAIN_STAKING_METADATA);
132
120
  this.addCron('syncMantaPay', this.syncMantaPay, _constants.CRON_SYNC_MANTA_PAY);
133
121
  } else {
134
122
  this.setStakingRewardReady();
@@ -166,9 +154,6 @@ class KoniCron {
166
154
  resetNft = newAddress => {
167
155
  this.state.resetNft(newAddress);
168
156
  };
169
- resetStakingReward = () => {
170
- this.state.resetStakingReward();
171
- };
172
157
  refreshStakingReward = address => {
173
158
  return () => {
174
159
  this.subscriptions.subscribeStakingReward(address).catch(this.logger.error);
@@ -185,16 +170,6 @@ class KoniCron {
185
170
  checkNetworkAvailable = serviceInfo => {
186
171
  return Object.keys(serviceInfo.chainApiMap.substrate).length > 0 || Object.keys(serviceInfo.chainApiMap.evm).length > 0;
187
172
  };
188
- updateChainStakingMetadata = (chainInfoMap, chainStateMap, substrateApiMap) => {
189
- return () => {
190
- this.subscriptions.fetchChainStakingMetadata(chainInfoMap, chainStateMap, substrateApiMap).catch(this.logger.error);
191
- };
192
- };
193
- updateNominatorMetadata = (address, chainInfoMap, chainStateMap, substrateApiMap) => {
194
- return () => {
195
- this.subscriptions.fetchNominatorMetadata(address, chainInfoMap, chainStateMap, substrateApiMap).catch(this.logger.error);
196
- };
197
- };
198
173
  async reloadNft() {
199
174
  const address = this.state.keyringService.currentAccount.address;
200
175
  const serviceInfo = this.state.getServiceInfo();
@@ -206,11 +181,7 @@ class KoniCron {
206
181
  }
207
182
  async reloadStaking() {
208
183
  const address = this.state.keyringService.currentAccount.address;
209
- this.resetStakingReward();
210
- this.removeCron('refreshStakingReward');
211
- this.removeCron('refreshPoolingStakingReward');
212
- this.addCron('refreshStakingReward', this.refreshStakingReward(address), _constants.CRON_REFRESH_STAKING_REWARD_INTERVAL);
213
- this.addCron('refreshPoolingStakingReward', this.refreshStakingRewardFastInterval(address), _constants.CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL);
184
+ console.log('reload staking', address);
214
185
  await (0, _utils2.waitTimeout)(1800);
215
186
  return true;
216
187
  }
@@ -223,11 +194,5 @@ class KoniCron {
223
194
  }
224
195
  return false;
225
196
  }
226
- needUpdateStaking(chainInfoMap, updatedChains) {
227
- if (updatedChains && updatedChains.length > 0) {
228
- return updatedChains.some(updatedChain => (0, _utils._isChainSupportSubstrateStaking)(chainInfoMap[updatedChain]));
229
- }
230
- return false;
231
- }
232
197
  }
233
198
  exports.KoniCron = KoniCron;