@subwallet/extension-base 1.1.8-0 → 1.1.10-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 (106) hide show
  1. package/background/KoniTypes.d.ts +13 -1
  2. package/background/KoniTypes.js +5 -0
  3. package/background/errors/BalanceError.js +7 -5
  4. package/background/errors/EvmProviderError.js +10 -8
  5. package/background/errors/ProviderError.js +5 -4
  6. package/background/errors/TransactionError.js +22 -17
  7. package/background/handlers/Extension.js +18 -18
  8. package/background/handlers/State.js +5 -5
  9. package/background/handlers/Tabs.js +1 -1
  10. package/background/warnings/TransactionWarning.js +4 -2
  11. package/cjs/background/KoniTypes.js +7 -1
  12. package/cjs/background/errors/BalanceError.js +7 -5
  13. package/cjs/background/errors/EvmProviderError.js +10 -8
  14. package/cjs/background/errors/ProviderError.js +5 -4
  15. package/cjs/background/errors/TransactionError.js +22 -17
  16. package/cjs/background/handlers/Extension.js +18 -18
  17. package/cjs/background/handlers/State.js +5 -5
  18. package/cjs/background/handlers/Tabs.js +1 -1
  19. package/cjs/background/warnings/TransactionWarning.js +4 -2
  20. package/cjs/constants/i18n.js +4 -1
  21. package/cjs/constants/index.js +12 -0
  22. package/cjs/constants/storage.js +11 -0
  23. package/cjs/koni/api/dotsama/domain.js +3 -1
  24. package/cjs/koni/api/dotsama/parseTransaction.js +2 -1
  25. package/cjs/koni/api/nft/acala_nft/index.js +1 -1
  26. package/cjs/koni/api/nft/karura_nft/index.js +1 -1
  27. package/cjs/koni/api/nft/nft.js +3 -0
  28. package/cjs/koni/api/nft/wasm_nft/index.js +25 -7
  29. package/cjs/koni/api/staking/bonding/paraChain.js +10 -6
  30. package/cjs/koni/api/staking/bonding/relayChain.js +16 -7
  31. package/cjs/koni/api/staking/bonding/utils.js +80 -7
  32. package/cjs/koni/api/tokens/wasm/index.js +14 -0
  33. package/cjs/koni/background/cron.js +1 -1
  34. package/cjs/koni/background/handlers/Extension.js +206 -170
  35. package/cjs/koni/background/handlers/State.js +19 -14
  36. package/cjs/koni/background/handlers/Tabs.js +15 -14
  37. package/cjs/packageInfo.js +1 -1
  38. package/cjs/services/balance-service/index.js +12 -3
  39. package/cjs/services/chain-service/helper/index.js +8 -2
  40. package/cjs/services/request-service/handler/AuthRequestHandler.js +4 -4
  41. package/cjs/services/request-service/handler/EvmRequestHandler.js +11 -10
  42. package/cjs/services/setting-service/SettingService.js +20 -7
  43. package/cjs/services/setting-service/constants.js +5 -1
  44. package/cjs/services/setting-service/i18n/Backend.js +42 -0
  45. package/cjs/services/setting-service/i18n/cache.js +12 -0
  46. package/cjs/services/setting-service/i18n/extend.js +16 -0
  47. package/cjs/services/setting-service/i18n/i18n.js +29 -0
  48. package/cjs/services/transaction-service/index.js +25 -16
  49. package/cjs/services/wallet-connect-service/handler/PolkadotRequestHandler.js +0 -1
  50. package/cjs/services/wallet-connect-service/index.js +18 -10
  51. package/cjs/utils/eth/parseTransaction/base.js +1 -1
  52. package/cjs/utils/eth/parseTransaction/index.js +2 -1
  53. package/cjs/utils/index.js +2 -1
  54. package/constants/i18n.js +4 -1
  55. package/constants/index.d.ts +1 -0
  56. package/constants/index.js +2 -1
  57. package/constants/storage.d.ts +1 -0
  58. package/constants/storage.js +4 -0
  59. package/koni/api/dotsama/domain.d.ts +1 -0
  60. package/koni/api/dotsama/domain.js +1 -0
  61. package/koni/api/dotsama/parseTransaction.js +2 -1
  62. package/koni/api/nft/acala_nft/index.js +1 -1
  63. package/koni/api/nft/karura_nft/index.js +1 -1
  64. package/koni/api/nft/nft.js +3 -0
  65. package/koni/api/nft/wasm_nft/index.js +26 -8
  66. package/koni/api/staking/bonding/paraChain.js +11 -7
  67. package/koni/api/staking/bonding/relayChain.js +17 -8
  68. package/koni/api/staking/bonding/utils.d.ts +4 -0
  69. package/koni/api/staking/bonding/utils.js +70 -2
  70. package/koni/api/tokens/wasm/index.d.ts +2 -0
  71. package/koni/api/tokens/wasm/index.js +13 -1
  72. package/koni/background/cron.js +1 -1
  73. package/koni/background/handlers/Extension.d.ts +1 -0
  74. package/koni/background/handlers/Extension.js +85 -50
  75. package/koni/background/handlers/State.js +19 -14
  76. package/koni/background/handlers/Tabs.js +15 -14
  77. package/package.json +34 -12
  78. package/packageInfo.js +1 -1
  79. package/services/balance-service/index.js +12 -3
  80. package/services/chain-service/helper/azero_domain_registry_abi.json +5428 -0
  81. package/services/chain-service/helper/index.d.ts +2 -0
  82. package/services/chain-service/helper/index.js +5 -1
  83. package/services/chain-service/helper/pink_psp34_abi.json +2758 -0
  84. package/services/request-service/handler/AuthRequestHandler.js +4 -4
  85. package/services/request-service/handler/EvmRequestHandler.js +11 -10
  86. package/services/setting-service/SettingService.d.ts +1 -0
  87. package/services/setting-service/SettingService.js +17 -5
  88. package/services/setting-service/constants.d.ts +2 -1
  89. package/services/setting-service/constants.js +4 -1
  90. package/services/setting-service/i18n/Backend.d.ts +9 -0
  91. package/services/setting-service/i18n/Backend.js +34 -0
  92. package/services/setting-service/i18n/cache.d.ts +2 -0
  93. package/services/setting-service/i18n/cache.js +5 -0
  94. package/services/setting-service/i18n/extend.d.ts +2 -0
  95. package/services/setting-service/i18n/extend.js +8 -0
  96. package/services/setting-service/i18n/i18n.d.ts +2 -0
  97. package/services/setting-service/i18n/i18n.js +21 -0
  98. package/services/transaction-service/index.js +25 -16
  99. package/services/wallet-connect-service/handler/PolkadotRequestHandler.js +0 -1
  100. package/services/wallet-connect-service/index.js +18 -10
  101. package/utils/eth/parseTransaction/base.js +1 -1
  102. package/utils/eth/parseTransaction/index.js +2 -1
  103. package/utils/index.js +2 -1
  104. package/cjs/utils/keyring.js +0 -57
  105. package/utils/keyring.d.ts +0 -4
  106. package/utils/keyring.js +0 -49
@@ -28,6 +28,7 @@ var _utils = require("@subwallet/extension-base/koni/api/staking/bonding/utils")
28
28
  var _constants = require("@subwallet/extension-base/services/chain-service/constants");
29
29
  var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
30
30
  var _utils3 = require("@subwallet/extension-base/utils");
31
+ var _i18next = require("i18next");
31
32
  var _util = require("@polkadot/util");
32
33
  var _utilCrypto = require("@polkadot/util-crypto");
33
34
  // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
@@ -42,7 +43,11 @@ function validateRelayUnbondingCondition(amount, chainStakingMetadata, nominator
42
43
  errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.INVALID_ACTIVE_STAKE));
43
44
  }
44
45
  if (nominatorMetadata.unstakings.length > chainStakingMetadata.maxWithdrawalRequestPerValidator) {
45
- errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.EXCEED_MAX_UNSTAKING));
46
+ errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.EXCEED_MAX_UNSTAKING, (0, _i18next.t)('You cannot unstake more than {{number}} times', {
47
+ replace: {
48
+ number: chainStakingMetadata.maxWithdrawalRequestPerValidator
49
+ }
50
+ })));
46
51
  }
47
52
  return errors;
48
53
  }
@@ -52,6 +57,8 @@ function validatePoolBondingCondition(chainInfo, amount, selectedPool, address,
52
57
  const errors = [];
53
58
  let bnTotalStake = new _util.BN(amount);
54
59
  const bnMinStake = new _util.BN(chainStakingMetadata.minJoinNominationPool || '0');
60
+ const minStakeErrorMessage = (0, _utils.getMinStakeErrorMessage)(chainInfo, bnMinStake);
61
+ const existUnstakeErrorMessage = (0, _utils.getExistUnstakeErrorMessage)(chainInfo.slug, true);
55
62
  if (selectedPool.state !== 'Open') {
56
63
  errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.INACTIVE_NOMINATION_POOL));
57
64
  }
@@ -59,11 +66,11 @@ function validatePoolBondingCondition(chainInfo, amount, selectedPool, address,
59
66
  const bnCurrentActiveStake = new _util.BN(nominatorMetadata.activeStake);
60
67
  bnTotalStake = bnTotalStake.add(bnCurrentActiveStake);
61
68
  if (nominatorMetadata.unstakings.length > 0 && bnCurrentActiveStake.isZero()) {
62
- errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.EXIST_UNSTAKING_REQUEST));
69
+ errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.EXIST_UNSTAKING_REQUEST, existUnstakeErrorMessage));
63
70
  }
64
71
  }
65
72
  if (!bnTotalStake.gte(bnMinStake)) {
66
- errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.NOT_ENOUGH_MIN_STAKE));
73
+ errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.NOT_ENOUGH_MIN_STAKE, minStakeErrorMessage));
67
74
  }
68
75
  return errors;
69
76
  }
@@ -71,22 +78,24 @@ function validateRelayBondingCondition(chainInfo, amount, selectedValidators, ad
71
78
  const errors = [];
72
79
  let bnTotalStake = new _util.BN(amount);
73
80
  const bnMinStake = new _util.BN(chainStakingMetadata.minStake);
81
+ const minStakeErrorMessage = (0, _utils.getMinStakeErrorMessage)(chainInfo, bnMinStake);
82
+ const maxValidatorErrorMessage = (0, _utils.getMaxValidatorErrorMessage)(chainInfo, chainStakingMetadata.maxValidatorPerNominator);
74
83
  if (!nominatorMetadata || nominatorMetadata.status === _KoniTypes.StakingStatus.NOT_STAKING) {
75
84
  if (!bnTotalStake.gte(bnMinStake)) {
76
- errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.NOT_ENOUGH_MIN_STAKE));
85
+ errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.NOT_ENOUGH_MIN_STAKE, minStakeErrorMessage));
77
86
  }
78
87
  if (selectedValidators.length > chainStakingMetadata.maxValidatorPerNominator) {
79
- errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.EXCEED_MAX_NOMINATIONS));
88
+ errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.EXCEED_MAX_NOMINATIONS, maxValidatorErrorMessage));
80
89
  }
81
90
  return errors;
82
91
  }
83
92
  const bnCurrentActiveStake = new _util.BN(nominatorMetadata.activeStake);
84
93
  bnTotalStake = bnTotalStake.add(bnCurrentActiveStake);
85
94
  if (!bnTotalStake.gte(bnMinStake)) {
86
- errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.NOT_ENOUGH_MIN_STAKE));
95
+ errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.NOT_ENOUGH_MIN_STAKE, minStakeErrorMessage));
87
96
  }
88
97
  if (selectedValidators.length > chainStakingMetadata.maxValidatorPerNominator) {
89
- errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.EXCEED_MAX_NOMINATIONS));
98
+ errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.EXCEED_MAX_NOMINATIONS, maxValidatorErrorMessage));
90
99
  }
91
100
  return errors;
92
101
  }
@@ -13,7 +13,9 @@ exports.calculateTernoaValidatorReturn = calculateTernoaValidatorReturn;
13
13
  exports.calculateValidatorStakedReturn = calculateValidatorStakedReturn;
14
14
  exports.getBondedValidators = getBondedValidators;
15
15
  exports.getCommission = getCommission;
16
+ exports.getExistUnstakeErrorMessage = void 0;
16
17
  exports.getInflationParams = getInflationParams;
18
+ exports.getMinStakeErrorMessage = exports.getMaxValidatorErrorMessage = void 0;
17
19
  exports.getParaCurrentInflation = getParaCurrentInflation;
18
20
  exports.getStakingAvailableActionsByChain = getStakingAvailableActionsByChain;
19
21
  exports.getStakingAvailableActionsByNominator = getStakingAvailableActionsByNominator;
@@ -29,7 +31,9 @@ exports.transformPoolName = transformPoolName;
29
31
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
30
32
  var _astar = require("@subwallet/extension-base/koni/api/staking/bonding/astar");
31
33
  var _constants = require("@subwallet/extension-base/services/chain-service/constants");
32
- var _utils = require("@subwallet/extension-base/utils");
34
+ var _utils = require("@subwallet/extension-base/services/chain-service/utils");
35
+ var _utils2 = require("@subwallet/extension-base/utils");
36
+ var _i18next = require("i18next");
33
37
  var _util = require("@polkadot/util");
34
38
  // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
35
39
  // SPDX-License-Identifier: Apache-2.0
@@ -133,8 +137,8 @@ function getCommission(commissionString) {
133
137
 
134
138
  function getParaCurrentInflation(totalStaked, inflationConfig) {
135
139
  // read more at https://hackmd.io/@sbAqOuXkRvyiZPOB3Ryn6Q/Sypr3ZJh5
136
- const expectMin = (0, _utils.parseRawNumber)(inflationConfig.expect.min);
137
- const expectMax = (0, _utils.parseRawNumber)(inflationConfig.expect.max);
140
+ const expectMin = (0, _utils2.parseRawNumber)(inflationConfig.expect.min);
141
+ const expectMax = (0, _utils2.parseRawNumber)(inflationConfig.expect.max);
138
142
  if (totalStaked < expectMin) {
139
143
  const inflationString = inflationConfig.annual.min.split('%')[0];
140
144
  return parseFloat(inflationString);
@@ -161,7 +165,7 @@ function getBondedValidators(nominations) {
161
165
  let nominationCount = 0;
162
166
  for (const nomination of nominations) {
163
167
  nominationCount += 1;
164
- bondedValidators.push((0, _utils.reformatAddress)(nomination.validatorAddress, 0));
168
+ bondedValidators.push((0, _utils2.reformatAddress)(nomination.validatorAddress, 0));
165
169
  }
166
170
  return {
167
171
  nominationCount,
@@ -171,8 +175,8 @@ function getBondedValidators(nominations) {
171
175
  function isUnstakeAll(selectedValidator, nominations, unstakeAmount) {
172
176
  let isUnstakeAll = false;
173
177
  for (const nomination of nominations) {
174
- const parsedValidatorAddress = (0, _utils.reformatAddress)(nomination.validatorAddress, 0);
175
- const parsedSelectedValidator = (0, _utils.reformatAddress)(selectedValidator, 0);
178
+ const parsedValidatorAddress = (0, _utils2.reformatAddress)(nomination.validatorAddress, 0);
179
+ const parsedSelectedValidator = (0, _utils2.reformatAddress)(selectedValidator, 0);
176
180
  if (parsedValidatorAddress === parsedSelectedValidator) {
177
181
  if (unstakeAmount === nomination.activeStake) {
178
182
  isUnstakeAll = true;
@@ -278,4 +282,73 @@ function getValidatorLabel(chain) {
278
282
  return 'Validator';
279
283
  }
280
284
  return 'Collator';
281
- }
285
+ }
286
+ const getMinStakeErrorMessage = (chainInfo, bnMinStake) => {
287
+ const tokenInfo = (0, _utils._getChainNativeTokenBasicInfo)(chainInfo);
288
+ const number = bnMinStake.div(new _util.BN(10).pow(new _util.BN(tokenInfo.decimals))).toString();
289
+ return (0, _i18next.t)('Insufficient stake. Please stake at least {{number}} {{tokenSymbol}} to get rewards', {
290
+ replace: {
291
+ tokenSymbol: tokenInfo.symbol,
292
+ number
293
+ }
294
+ });
295
+ };
296
+ exports.getMinStakeErrorMessage = getMinStakeErrorMessage;
297
+ const getMaxValidatorErrorMessage = (chainInfo, max) => {
298
+ let message = (0, _utils2.detectTranslate)('You cannot select more than {{number}} validators for this network');
299
+ const label = getValidatorLabel(chainInfo.slug);
300
+ if (max > 1) {
301
+ switch (label) {
302
+ case 'dApp':
303
+ message = (0, _utils2.detectTranslate)('You cannot select more than {{number}} dApps for this network');
304
+ break;
305
+ case 'Collator':
306
+ message = (0, _utils2.detectTranslate)('You cannot select more than {{number}} collators for this network');
307
+ break;
308
+ case 'Validator':
309
+ message = (0, _utils2.detectTranslate)('You cannot select more than {{number}} validators for this network');
310
+ break;
311
+ }
312
+ } else {
313
+ switch (label) {
314
+ case 'dApp':
315
+ message = (0, _utils2.detectTranslate)('You cannot select more than {{number}} dApp for this network');
316
+ break;
317
+ case 'Collator':
318
+ message = (0, _utils2.detectTranslate)('You cannot select more than {{number}} collator for this network');
319
+ break;
320
+ case 'Validator':
321
+ message = (0, _utils2.detectTranslate)('You cannot select more than {{number}} validator for this network');
322
+ break;
323
+ }
324
+ }
325
+ return (0, _i18next.t)(message, {
326
+ replace: {
327
+ number: max
328
+ }
329
+ });
330
+ };
331
+ exports.getMaxValidatorErrorMessage = getMaxValidatorErrorMessage;
332
+ const getExistUnstakeErrorMessage = (chain, isStakeMore) => {
333
+ const label = getValidatorLabel(chain);
334
+ if (!isStakeMore) {
335
+ switch (label) {
336
+ case 'dApp':
337
+ return (0, _i18next.t)('You can unstake from a dApp once');
338
+ case 'Collator':
339
+ return (0, _i18next.t)('You can unstake from a collator once');
340
+ case 'Validator':
341
+ return (0, _i18next.t)('You can unstake from a validator once');
342
+ }
343
+ } else {
344
+ switch (label) {
345
+ case 'dApp':
346
+ return (0, _i18next.t)('You cannot stake more for a dApp you are unstaking from');
347
+ case 'Collator':
348
+ return (0, _i18next.t)('You cannot stake more for a collator you are unstaking from');
349
+ case 'Validator':
350
+ return (0, _i18next.t)('You cannot stake more for a validator you are unstaking from');
351
+ }
352
+ }
353
+ };
354
+ exports.getExistUnstakeErrorMessage = getExistUnstakeErrorMessage;
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getPSP22ContractPromise = getPSP22ContractPromise;
7
7
  exports.getPSP34ContractPromise = getPSP34ContractPromise;
8
8
  exports.getPSP34TransferExtrinsic = getPSP34TransferExtrinsic;
9
+ exports.isAzeroDomainNft = isAzeroDomainNft;
10
+ exports.isPinkRoboNft = isPinkRoboNft;
9
11
  var _utils = require("@subwallet/extension-base/koni/api/tokens/wasm/utils");
10
12
  var _helper = require("@subwallet/extension-base/services/chain-service/helper");
11
13
  var _apiContract = require("@polkadot/api-contract");
@@ -15,7 +17,19 @@ var _apiContract = require("@polkadot/api-contract");
15
17
  function getPSP22ContractPromise(apiPromise, contractAddress) {
16
18
  return new _apiContract.ContractPromise(apiPromise, _helper._PSP22_ABI, contractAddress);
17
19
  }
20
+ function isPinkRoboNft(contractAddress) {
21
+ return ['XoywUxTTtNKPRrRN7V5KXCqz2QLMFeK7DxhpSniqZHps5Xq'].includes(contractAddress);
22
+ }
23
+ function isAzeroDomainNft(contractAddress) {
24
+ return ['5FsB91tXSEuMj6akzdPczAtmBaVKToqHmtAwSUzXh49AYzaD', '5CTQBfBC9SfdrCDBJdfLiyW2pg9z5W6C6Es8sK313BLnFgDf'].includes(contractAddress);
25
+ }
18
26
  function getPSP34ContractPromise(apiPromise, contractAddress) {
27
+ if (isPinkRoboNft(contractAddress)) {
28
+ return new _apiContract.ContractPromise(apiPromise, _helper._PINK_PSP34_ABI, contractAddress);
29
+ }
30
+ if (isAzeroDomainNft(contractAddress)) {
31
+ return new _apiContract.ContractPromise(apiPromise, _helper._AZERO_DOMAIN_REGISTRY_ABI, contractAddress);
32
+ }
19
33
  return new _apiContract.ContractPromise(apiPromise, _helper._PSP34_ABI, contractAddress);
20
34
  }
21
35
  const mustFormatNumberReg = /^-?[0-9][0-9,.]+$/;
@@ -116,7 +116,7 @@ class KoniCron {
116
116
  this.resetNft(currentAccountInfo.address);
117
117
  this.addCron('refreshNft', this.refreshNft(currentAccountInfo.address, this.state.getApiMap(), this.state.getSmartContractNfts(), this.state.getActiveChainInfoMap()), _constants.CRON_REFRESH_NFT_INTERVAL);
118
118
  this.addCron('refreshStakingReward', this.refreshStakingReward(currentAccountInfo.address), _constants.CRON_REFRESH_STAKING_REWARD_INTERVAL);
119
- this.addCron('refreshPoolingStakingReward', this.refreshStakingRewardFastInterval(currentAccountInfo.address), _constants.CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL);
119
+ this.addCron('refreshPoolingSta kingReward', this.refreshStakingRewardFastInterval(currentAccountInfo.address), _constants.CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL);
120
120
  this.addCron('syncMantaPay', this.syncMantaPay, _constants.CRON_SYNC_MANTA_PAY);
121
121
  } else {
122
122
  this.setStakingRewardReady();