@subwallet/extension-base 1.1.40-1 → 1.1.42-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 (101) hide show
  1. package/background/KoniTypes.d.ts +3 -1
  2. package/cjs/constants/index.js +1 -1
  3. package/cjs/koni/api/dotsama/transfer.js +1 -1
  4. package/cjs/koni/api/nft/bit.country/index.js +2 -0
  5. package/cjs/koni/api/nft/config.js +3 -1
  6. package/cjs/koni/api/tokens/evm/transfer.js +4 -4
  7. package/cjs/koni/background/handlers/Extension.js +32 -17
  8. package/cjs/koni/background/handlers/State.js +42 -10
  9. package/cjs/packageInfo.js +1 -1
  10. package/cjs/page/SubWalleEvmProvider.js +5 -9
  11. package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +58 -0
  12. package/cjs/services/chain-service/constants.js +11 -7
  13. package/cjs/services/chain-service/handler/chain-spec/goldberg.js +75 -8
  14. package/cjs/services/chain-service/index.js +88 -79
  15. package/cjs/services/chain-service/utils.js +11 -6
  16. package/cjs/services/earning-service/constants/chains.js +10 -5
  17. package/cjs/services/earning-service/handlers/liquid-staking/acala.js +9 -3
  18. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +8 -1
  19. package/cjs/services/earning-service/handlers/liquid-staking/parallel.js +6 -1
  20. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +25 -17
  21. package/cjs/services/earning-service/handlers/native-staking/amplitude.js +4 -0
  22. package/cjs/services/earning-service/handlers/native-staking/astar.js +6 -2
  23. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +144 -45
  24. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +14 -16
  25. package/cjs/services/earning-service/handlers/nomination-pool/index.js +9 -11
  26. package/cjs/services/earning-service/handlers/special.js +2 -0
  27. package/cjs/services/earning-service/service.js +51 -18
  28. package/cjs/services/fee-service/service.js +70 -0
  29. package/cjs/services/fee-service/utils/index.js +209 -0
  30. package/cjs/services/migration-service/scripts/DeleteChainStaking.js +23 -0
  31. package/cjs/services/migration-service/scripts/databases/MigrateAssetSetting.js +50 -0
  32. package/cjs/services/migration-service/scripts/index.js +6 -1
  33. package/cjs/services/transaction-service/index.js +37 -37
  34. package/cjs/types/fee/index.js +1 -0
  35. package/cjs/types/index.js +11 -0
  36. package/cjs/utils/eth.js +2 -105
  37. package/cjs/utils/index.js +12 -0
  38. package/cjs/utils/reportError.js +31 -0
  39. package/constants/index.d.ts +1 -1
  40. package/constants/index.js +1 -1
  41. package/koni/api/dotsama/transfer.js +1 -1
  42. package/koni/api/nft/bit.country/index.js +3 -1
  43. package/koni/api/nft/config.d.ts +1 -0
  44. package/koni/api/nft/config.js +1 -0
  45. package/koni/api/tokens/evm/transfer.js +1 -1
  46. package/koni/background/handlers/Extension.d.ts +1 -0
  47. package/koni/background/handlers/Extension.js +18 -3
  48. package/koni/background/handlers/State.d.ts +4 -1
  49. package/koni/background/handlers/State.js +33 -2
  50. package/package.json +36 -6
  51. package/packageInfo.js +1 -1
  52. package/page/SubWalleEvmProvider.d.ts +0 -1
  53. package/page/SubWalleEvmProvider.js +5 -9
  54. package/services/balance-service/helpers/subscribe/substrate/index.js +59 -1
  55. package/services/chain-service/constants.d.ts +2 -0
  56. package/services/chain-service/constants.js +11 -7
  57. package/services/chain-service/handler/chain-spec/goldberg.d.ts +70 -1
  58. package/services/chain-service/handler/chain-spec/goldberg.js +75 -8
  59. package/services/chain-service/index.d.ts +8 -4
  60. package/services/chain-service/index.js +74 -67
  61. package/services/chain-service/types.d.ts +4 -0
  62. package/services/chain-service/utils.d.ts +1 -0
  63. package/services/chain-service/utils.js +10 -6
  64. package/services/earning-service/constants/chains.d.ts +3 -0
  65. package/services/earning-service/constants/chains.js +7 -4
  66. package/services/earning-service/handlers/liquid-staking/acala.js +9 -3
  67. package/services/earning-service/handlers/liquid-staking/bifrost.js +8 -1
  68. package/services/earning-service/handlers/liquid-staking/parallel.d.ts +1 -1
  69. package/services/earning-service/handlers/liquid-staking/parallel.js +6 -1
  70. package/services/earning-service/handlers/liquid-staking/stella-swap.js +25 -17
  71. package/services/earning-service/handlers/native-staking/amplitude.js +4 -0
  72. package/services/earning-service/handlers/native-staking/astar.js +6 -2
  73. package/services/earning-service/handlers/native-staking/para-chain.js +144 -45
  74. package/services/earning-service/handlers/native-staking/relay-chain.js +15 -17
  75. package/services/earning-service/handlers/nomination-pool/index.js +10 -12
  76. package/services/earning-service/handlers/special.d.ts +1 -0
  77. package/services/earning-service/handlers/special.js +2 -0
  78. package/services/earning-service/service.d.ts +4 -1
  79. package/services/earning-service/service.js +52 -19
  80. package/services/fee-service/service.d.ts +12 -0
  81. package/services/fee-service/service.js +63 -0
  82. package/services/fee-service/utils/index.d.ts +8 -0
  83. package/services/fee-service/utils/index.js +193 -0
  84. package/services/migration-service/scripts/DeleteChainStaking.d.ts +4 -0
  85. package/services/migration-service/scripts/DeleteChainStaking.js +15 -0
  86. package/services/migration-service/scripts/databases/MigrateAssetSetting.d.ts +4 -0
  87. package/services/migration-service/scripts/databases/MigrateAssetSetting.js +42 -0
  88. package/services/migration-service/scripts/index.js +5 -1
  89. package/services/transaction-service/index.js +2 -2
  90. package/types/fee/index.d.ts +49 -0
  91. package/types/fee/index.js +1 -0
  92. package/types/index.d.ts +1 -0
  93. package/types/index.js +1 -0
  94. package/types/yield/info/account/unstake.d.ts +2 -0
  95. package/types/yield/info/pallet.d.ts +4 -0
  96. package/utils/eth.d.ts +0 -15
  97. package/utils/eth.js +0 -101
  98. package/utils/index.d.ts +1 -0
  99. package/utils/index.js +1 -0
  100. package/utils/reportError.d.ts +1 -0
  101. package/utils/reportError.js +23 -0
@@ -40,11 +40,15 @@ class EarningService {
40
40
  yieldPositionSubject = new _rxjs.BehaviorSubject({});
41
41
  yieldPositionListSubject = new _rxjs.BehaviorSubject([]); // virtual list of yieldPositionSubject with filter values
42
42
 
43
+ useOnlineCacheOnly = true;
43
44
  constructor(state) {
44
45
  this.state = state;
45
46
  this.dbService = state.dbService;
46
47
  this.eventService = state.eventService;
47
48
  }
49
+ disableOnlineCacheOnly() {
50
+ this.useOnlineCacheOnly = false;
51
+ }
48
52
  async initHandlers() {
49
53
  await this.eventService.waitChainReady;
50
54
  const chains = [];
@@ -132,6 +136,7 @@ class EarningService {
132
136
  }
133
137
  handleActions() {
134
138
  this.eventService.onLazy((events, eventTypes) => {
139
+ let delayReload = false;
135
140
  (async () => {
136
141
  const removedAddresses = [];
137
142
  const removeChains = [];
@@ -145,6 +150,13 @@ class EarningService {
145
150
  removeChains.push(event.data[0]);
146
151
  }
147
152
  }
153
+ if (event.type === 'transaction.done') {
154
+ const transactionData = event.data[0];
155
+ const notRequireReloadTypes = [_KoniTypes.ExtrinsicType.TRANSFER_BALANCE, _KoniTypes.ExtrinsicType.TRANSFER_TOKEN, _KoniTypes.ExtrinsicType.TRANSFER_XCM, _KoniTypes.ExtrinsicType.SEND_NFT, _KoniTypes.ExtrinsicType.CROWDLOAN];
156
+ if (notRequireReloadTypes.indexOf(transactionData.extrinsicType) === -1) {
157
+ delayReload = true;
158
+ }
159
+ }
148
160
  });
149
161
  if (removeChains.length || removedAddresses.length) {
150
162
  await this.removeYieldPositions(removeChains, removedAddresses);
@@ -153,8 +165,16 @@ class EarningService {
153
165
  // Account changed or chain changed (active or inactive)
154
166
  // Chain changed (active or inactive)
155
167
  // Todo: Optimize performance of chain active or inactive in the future
156
- if (eventTypes.includes('account.updateCurrent') || eventTypes.includes('account.remove') || eventTypes.includes('chain.updateState')) {
157
- await this.reloadEarning();
168
+ if (eventTypes.includes('account.updateCurrent') || eventTypes.includes('account.remove') || eventTypes.includes('chain.updateState') || delayReload) {
169
+ if (delayReload) {
170
+ this.delayReloadTimeout = setTimeout(() => {
171
+ this.reloadEarning().catch(console.error); // Timeout is removed inside reloadEarning > runUnsubscribePoolsPosition
172
+ }, 3000);
173
+ } else {
174
+ this.delayReloadTimeout && clearTimeout(this.delayReloadTimeout);
175
+ this.delayReloadTimeout = undefined;
176
+ await this.reloadEarning();
177
+ }
158
178
  }
159
179
  })().catch(console.error);
160
180
  });
@@ -248,20 +268,25 @@ class EarningService {
248
268
  }
249
269
  async getYieldPool(slug) {
250
270
  await this.eventService.waitEarningReady;
251
- return this.yieldPoolInfoSubject.getValue()[slug];
271
+ const poolInfoMap = this.yieldPoolInfoSubject.getValue();
272
+ return poolInfoMap[slug];
252
273
  }
253
- async subscribePoolsInfo(callback) {
274
+ async subscribePoolsInfo(onlineData, callback) {
254
275
  let cancel = false;
255
276
  await this.eventService.waitChainReady;
256
277
  const unsubList = [];
257
278
  for (const handler of Object.values(this.handlers)) {
258
- handler.subscribePoolInfo(callback).then(unsub => {
259
- if (!cancel) {
260
- unsubList.push(unsub);
261
- } else {
262
- unsub();
263
- }
264
- }).catch(console.error);
279
+ // Force subscribe onchain data
280
+ const forceSubscribe = handler.type === _types2.YieldPoolType.LIQUID_STAKING || handler.type === _types2.YieldPoolType.LENDING;
281
+ if (!this.useOnlineCacheOnly || forceSubscribe) {
282
+ handler.subscribePoolInfo(callback).then(unsub => {
283
+ if (!cancel) {
284
+ unsubList.push(unsub);
285
+ } else {
286
+ unsub();
287
+ }
288
+ }).catch(console.error);
289
+ }
265
290
  }
266
291
  return () => {
267
292
  cancel = true;
@@ -313,19 +338,20 @@ class EarningService {
313
338
  Object.values(onlineData).forEach(item => {
314
339
  this.updateYieldPoolInfo(item);
315
340
  });
341
+ return onlineData;
316
342
  }
317
343
  async runSubscribePoolsInfo() {
318
344
  await this.eventService.waitChainReady;
319
345
  this.runUnsubscribePoolsInfo();
320
346
 
321
347
  // Fetching online data
322
- this.fetchingPoolsInfoOnline().catch(console.error);
348
+ const onlineData = await this.fetchingPoolsInfoOnline();
323
349
  const interval = setInterval(() => {
324
350
  this.fetchingPoolsInfoOnline().catch(console.error);
325
351
  }, _constants.CRON_REFRESH_CHAIN_STAKING_METADATA);
326
352
 
327
353
  // Fetching from chains
328
- this.subscribePoolsInfo(data => {
354
+ this.subscribePoolsInfo(onlineData, data => {
329
355
  data.lastUpdated = Date.now();
330
356
  this.updateYieldPoolInfo(data);
331
357
  }).then(rs => {
@@ -470,6 +496,10 @@ class EarningService {
470
496
  (_this$yieldPositionUn = this.yieldPositionUnsub) === null || _this$yieldPositionUn === void 0 ? void 0 : _this$yieldPositionUn.call(this);
471
497
  (0, _utils2.removeLazy)('persistYieldPositionInfo');
472
498
  this.yieldPositionPersistQueue = [];
499
+
500
+ // Remove delay reload
501
+ this.delayReloadTimeout && clearTimeout(this.delayReloadTimeout);
502
+ this.delayReloadTimeout = undefined;
473
503
  }
474
504
 
475
505
  /* Pools' position methods */
@@ -618,13 +648,16 @@ class EarningService {
618
648
  * @return {Promise<YieldPoolTarget[]>} List of pool's target
619
649
  * */
620
650
  async getPoolTargets(slug) {
621
- await this.eventService.waitChainReady;
651
+ let targets = [];
652
+ if (this.useOnlineCacheOnly) {
653
+ targets = await (0, _fetchStaticCache.fetchStaticCache)(`earning/targets/${slug}.json`, []);
654
+ }
622
655
  const handler = this.getPoolHandler(slug);
623
- if (handler) {
624
- return await handler.getPoolTargets();
625
- } else {
626
- return [];
656
+ if (!targets.length && handler) {
657
+ await this.eventService.waitChainReady;
658
+ targets = await handler.getPoolTargets();
627
659
  }
660
+ return targets;
628
661
  }
629
662
 
630
663
  /* Get pool's targets */
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _utils = require("@subwallet/extension-base/services/chain-service/utils");
8
+ var _utils2 = require("@subwallet/extension-base/services/fee-service/utils");
9
+ var _rxjs = require("rxjs");
10
+ // Copyright 2019-2022 @subwallet/extension-base
11
+ // SPDX-License-Identifier: Apache-2.0
12
+
13
+ class FeeService {
14
+ evmFeeSubject = new _rxjs.BehaviorSubject({});
15
+ constructor(state) {
16
+ this.state = state;
17
+ this.useInfura = true;
18
+ }
19
+ changeMode(useInfura) {
20
+ this.useInfura = useInfura;
21
+ }
22
+ async updateFees() {
23
+ await this.state.eventService.waitChainReady;
24
+ const activeNetworks = this.state.activeNetworks;
25
+ const chains = Object.values(activeNetworks).filter(chainInfo => (0, _utils._isChainEvmCompatible)(chainInfo)).map(chainInfo => chainInfo.slug);
26
+ const promises = [];
27
+ for (const chain of chains) {
28
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises,no-async-promise-executor
29
+ const promise = new Promise(async resolve => {
30
+ const api = this.state.getEvmApi(chain);
31
+ const result = await (0, _utils2.calculateGasFeeParams)(api, chain, this.useInfura);
32
+ this.updateChainFee(chain, result);
33
+ resolve();
34
+ });
35
+ promises.push(promise);
36
+ }
37
+ await Promise.all(promises);
38
+ }
39
+ updateChainFee(chain, info) {
40
+ const rs = Object.assign({}, this.evmFeeSubject.getValue());
41
+ rs[chain] = info;
42
+ this.evmFeeSubject.next(rs);
43
+ }
44
+ subscribeFees(callback) {
45
+ let cancel = false;
46
+
47
+ // eslint-disable-next-line prefer-const
48
+
49
+ const fetchData = () => {
50
+ this.updateFees().finally(() => {
51
+ if (!cancel) {
52
+ callback(this.evmFeeSubject.getValue());
53
+ }
54
+ });
55
+ };
56
+ fetchData();
57
+ const interval = setInterval(() => {
58
+ if (cancel) {
59
+ clearInterval(interval);
60
+ } else {
61
+ fetchData();
62
+ }
63
+ }, 30 * 1000);
64
+ return () => {
65
+ cancel = true;
66
+ clearInterval(interval);
67
+ };
68
+ }
69
+ }
70
+ exports.default = FeeService;
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.recalculateGasPrice = exports.parseInfuraFee = exports.fetchSubWalletFeeData = exports.fetchOnlineFeeData = exports.fetchInfuraFeeData = exports.calculateGasFeeParams = void 0;
8
+ var _constants = require("@subwallet/extension-base/constants");
9
+ var _utils = require("@subwallet/extension-base/utils");
10
+ var _bignumber = _interopRequireDefault(require("bignumber.js"));
11
+ // Copyright 2019-2022 @subwallet/extension-base
12
+ // SPDX-License-Identifier: Apache-2.0
13
+
14
+ const INFURA_API_KEY = process.env.INFURA_API_KEY || '';
15
+ const INFURA_API_KEY_SECRET = process.env.INFURA_API_KEY_SECRET || '';
16
+ const INFURA_AUTH = 'Basic ' + Buffer.from(INFURA_API_KEY + ':' + INFURA_API_KEY_SECRET).toString('base64');
17
+ const parseInfuraFee = info => {
18
+ const base = new _bignumber.default(info.estimatedBaseFee).multipliedBy(_utils.BN_WEI);
19
+ const low = new _bignumber.default(info.low.suggestedMaxPriorityFeePerGas).multipliedBy(_utils.BN_WEI);
20
+ const busyNetwork = base.gt(_utils.BN_ZERO) ? low.dividedBy(base).gte(0.3) : false;
21
+ const data = !busyNetwork ? info.low : info.medium;
22
+ return {
23
+ busyNetwork,
24
+ gasPrice: undefined,
25
+ baseGasFee: base,
26
+ maxFeePerGas: new _bignumber.default(data.suggestedMaxFeePerGas).multipliedBy(_utils.BN_WEI).integerValue(_bignumber.default.ROUND_UP),
27
+ maxPriorityFeePerGas: new _bignumber.default(data.suggestedMaxPriorityFeePerGas).multipliedBy(_utils.BN_WEI).integerValue(_bignumber.default.ROUND_UP)
28
+ };
29
+ };
30
+ exports.parseInfuraFee = parseInfuraFee;
31
+ const fetchInfuraFeeData = async (chainId, infuraAuth) => {
32
+ return await new Promise(resolve => {
33
+ const baseUrl = 'https://gas.api.infura.io/networks/{{chainId}}/suggestedGasFees';
34
+ const url = baseUrl.replaceAll('{{chainId}}', chainId.toString());
35
+ fetch(url, {
36
+ method: 'GET',
37
+ headers: {
38
+ Authorization: infuraAuth || INFURA_AUTH
39
+ }
40
+ }).then(rs => {
41
+ return rs.json();
42
+ }).then(info => {
43
+ resolve(parseInfuraFee(info));
44
+ }).catch(e => {
45
+ console.warn(e);
46
+ resolve(null);
47
+ });
48
+ });
49
+ };
50
+ exports.fetchInfuraFeeData = fetchInfuraFeeData;
51
+ const fetchSubWalletFeeData = async (chainId, networkKey) => {
52
+ return await new Promise(resolve => {
53
+ const baseUrl = 'https://api-cache.subwallet.app/sw-evm-gas/{{chain}}';
54
+ const url = baseUrl.replaceAll('{{chain}}', networkKey);
55
+ fetch(url, {
56
+ method: 'GET'
57
+ }).then(rs => {
58
+ return rs.json();
59
+ }).then(info => {
60
+ if (info.gasPrice !== undefined) {
61
+ resolve(info);
62
+ } else {
63
+ resolve({
64
+ busyNetwork: info.busyNetwork,
65
+ gasPrice: info.gasPrice,
66
+ baseGasFee: new _bignumber.default(info.baseGasFee),
67
+ maxFeePerGas: new _bignumber.default(info.maxFeePerGas),
68
+ maxPriorityFeePerGas: new _bignumber.default(info.maxPriorityFeePerGas)
69
+ });
70
+ }
71
+ }).catch(e => {
72
+ console.warn(e);
73
+ resolve(null);
74
+ });
75
+ });
76
+ };
77
+ exports.fetchSubWalletFeeData = fetchSubWalletFeeData;
78
+ const fetchOnlineFeeData = async function (chainId, networkKey) {
79
+ let useInfura = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
80
+ return await new Promise(resolve => {
81
+ const fetchFunction = useInfura ? fetchInfuraFeeData : fetchSubWalletFeeData;
82
+ fetchFunction(chainId, networkKey).then(info => {
83
+ resolve(info);
84
+ }).catch(e => {
85
+ console.warn(e);
86
+ resolve(null);
87
+ });
88
+ });
89
+ };
90
+ exports.fetchOnlineFeeData = fetchOnlineFeeData;
91
+ const recalculateGasPrice = (_price, chain) => {
92
+ const needMulti = _constants.NETWORK_MULTI_GAS_FEE.includes(chain) || _constants.NETWORK_MULTI_GAS_FEE.includes('*');
93
+ return needMulti ? new _bignumber.default(_price).multipliedBy(_constants.GAS_PRICE_RATIO).toFixed(0) : _price;
94
+ };
95
+ exports.recalculateGasPrice = recalculateGasPrice;
96
+ const calculateGasFeeParams = async function (web3, networkKey) {
97
+ let useOnline = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
98
+ let useInfura = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
99
+ if (useOnline) {
100
+ try {
101
+ const chainId = await web3.api.eth.getChainId();
102
+ const onlineData = await fetchOnlineFeeData(chainId, networkKey, useInfura);
103
+ if (onlineData) {
104
+ return onlineData;
105
+ }
106
+ } catch (e) {}
107
+ }
108
+ try {
109
+ const numBlock = 20;
110
+ const rewardPercent = [];
111
+ for (let i = 0; i <= 100; i = i + 5) {
112
+ rewardPercent.push(i);
113
+ }
114
+ const history = await web3.api.eth.getFeeHistory(numBlock, 'latest', rewardPercent);
115
+ const baseGasFee = new _bignumber.default(history.baseFeePerGas[history.baseFeePerGas.length - 1]); // Last element is latest
116
+
117
+ const blocksBusy = history.reward.reduce((previous, rewards, currentIndex) => {
118
+ const [firstPriority] = rewards;
119
+ const base = history.baseFeePerGas[currentIndex];
120
+ const priorityBN = new _bignumber.default(firstPriority);
121
+ const baseBN = new _bignumber.default(base);
122
+
123
+ /*
124
+ * True if priority >= 0.3 * base
125
+ * */
126
+ const blockIsBusy = baseBN.gt(_utils.BN_ZERO) ? priorityBN.dividedBy(baseBN).gte(0.3) ? 1 : 0 : 0; // Special for bsc, base fee = 0
127
+
128
+ return previous + blockIsBusy;
129
+ }, 0);
130
+ const busyNetwork = blocksBusy >= numBlock / 2; // True, if half of block is busy
131
+
132
+ const maxPriorityFeePerGas = history.reward.reduce((previous, rewards) => {
133
+ let firstBN = _utils.BN_ZERO;
134
+ let firstIndex = 0;
135
+
136
+ /* Get first priority which greater than 0 */
137
+ for (let i = 0; i < rewards.length; i++) {
138
+ firstIndex = i;
139
+ const current = rewards[i];
140
+ const currentBN = new _bignumber.default(current);
141
+ if (currentBN.gt(_utils.BN_ZERO)) {
142
+ firstBN = currentBN;
143
+ break;
144
+ }
145
+ }
146
+ let secondBN = firstBN;
147
+
148
+ /* Get second priority which greater than first priority */
149
+ for (let i = firstIndex; i < rewards.length; i++) {
150
+ const current = rewards[i];
151
+ const currentBN = new _bignumber.default(current);
152
+ if (currentBN.gt(firstBN)) {
153
+ secondBN = currentBN;
154
+ break;
155
+ }
156
+ }
157
+ let current;
158
+ if (busyNetwork) {
159
+ current = secondBN.dividedBy(2).gte(firstBN) ? firstBN : secondBN; // second too larger than first (> 2 times), use first else use second
160
+ } else {
161
+ current = firstBN;
162
+ }
163
+ if (busyNetwork) {
164
+ /* Get max value */
165
+ return current.gte(previous) ? current : previous; // get max priority
166
+ } else {
167
+ /* Get min value which greater than 0 */
168
+ if (previous.eq(_utils.BN_ZERO)) {
169
+ return current; // get min priority
170
+ } else if (current.eq(_utils.BN_ZERO)) {
171
+ return previous;
172
+ }
173
+ return current.lte(previous) ? current : previous; // get min priority
174
+ }
175
+ }, _utils.BN_ZERO);
176
+ if (maxPriorityFeePerGas.eq(_utils.BN_ZERO)) {
177
+ const _price = await web3.api.eth.getGasPrice();
178
+ const gasPrice = recalculateGasPrice(_price, networkKey);
179
+ return {
180
+ gasPrice,
181
+ maxFeePerGas: undefined,
182
+ maxPriorityFeePerGas: undefined,
183
+ baseGasFee: undefined,
184
+ busyNetwork: false
185
+ };
186
+ }
187
+
188
+ /* Max gas = (base + priority) * 1.5 (if not busy or 2 when busy); */
189
+ const maxFeePerGas = baseGasFee.plus(maxPriorityFeePerGas).multipliedBy(busyNetwork ? 2 : 1.5).decimalPlaces(0);
190
+ return {
191
+ gasPrice: undefined,
192
+ maxFeePerGas,
193
+ maxPriorityFeePerGas,
194
+ baseGasFee,
195
+ busyNetwork
196
+ };
197
+ } catch (e) {
198
+ const _price = await web3.api.eth.getGasPrice();
199
+ const gasPrice = recalculateGasPrice(_price, networkKey);
200
+ return {
201
+ gasPrice,
202
+ maxFeePerGas: undefined,
203
+ maxPriorityFeePerGas: undefined,
204
+ baseGasFee: undefined,
205
+ busyNetwork: false
206
+ };
207
+ }
208
+ };
209
+ exports.calculateGasFeeParams = calculateGasFeeParams;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _Base = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/Base"));
9
+ // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
10
+ // SPDX-License-Identifier: Apache-2.0
11
+
12
+ class DeleteChainStaking extends _Base.default {
13
+ async run() {
14
+ try {
15
+ await this.state.dbService.stores.yieldPoolInfo.table.where({
16
+ slug: 'CAPS___native_staking___ternoa_alphanet'
17
+ }).delete();
18
+ } catch (e) {
19
+ console.error(e);
20
+ }
21
+ }
22
+ }
23
+ exports.default = DeleteChainStaking;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _Base = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/Base"));
9
+ // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
10
+ // SPDX-License-Identifier: Apache-2.0
11
+
12
+ class MigrateAssetSetting extends _Base.default {
13
+ async run() {
14
+ try {
15
+ const oldSlugs = ['ethereum-ERC20-WFTM-0x4E15361FD6b4BB609Fa63C81A2be19d873717870', 'moonbeam-ERC20-CSG-0x2Dfc76901bB2ac2A5fA5fc479590A490BBB10a5F', 'astar-LOCAL-aUSD', 'astarEvm-ERC20-aUSD-0xfFFFFfFF00000000000000010000000000000001',
16
+ //
17
+ 'moonriver-LOCAL-xcaUSD',
18
+ //
19
+ 'moonriver-LOCAL-xckBTC', 'bifrost-LOCAL-aUSD', 'calamari-LOCAL-AUSD', 'shiden-LOCAL-aUSD', 'shidenEvm-ERC20-aUSD-0xfFFfFFfF00000000000000010000000000000000',
20
+ //
21
+ 'ethereum_goerli-NATIVE-GoerliETH', 'binance_test-NATIVE-BNB',
22
+ //
23
+ 'pangolin-LOCAL-CKTON',
24
+ //
25
+ 'zeta_test-NATIVE-aZETA' //
26
+ ];
27
+
28
+ const newSlugs = ['ethereum-ERC20-FTM-0x4E15361FD6b4BB609Fa63C81A2be19d873717870', 'moonbeam-ERC20-CGS-0x2Dfc76901bB2ac2A5fA5fc479590A490BBB10a5F', 'astar-LOCAL-aSEED', 'astarEvm-ERC20-aSEED-0xfFFFFfFF00000000000000010000000000000001', 'moonriver-LOCAL-xcaSeed', 'moonriver-LOCAL-xcKBTC', 'bifrost-LOCAL-KUSD', 'calamari-LOCAL-AUSD', 'shiden-LOCAL-aSEED', 'shidenEvm-ERC20-aSEED-0xfFFfFFfF00000000000000010000000000000000', 'ethereum_goerli-NATIVE-ETH', 'binance_test-NATIVE-tBNB', 'pangolin-LOCAL-PKTON', 'zeta_test-NATIVE-ZETA'];
29
+ const assetSetting = await this.state.chainService.getAssetSettings();
30
+ const migratedAssetSetting = {};
31
+ for (let i = 0; i < oldSlugs.length; i++) {
32
+ const slug = oldSlugs[i];
33
+ if (Object.keys(assetSetting).includes(slug)) {
34
+ const isVisible = assetSetting[slug].visible;
35
+ const newSlug = newSlugs[i];
36
+ migratedAssetSetting[newSlug] = {
37
+ visible: isVisible
38
+ };
39
+ }
40
+ }
41
+ this.state.chainService.setAssetSettings({
42
+ ...assetSetting,
43
+ ...migratedAssetSetting
44
+ });
45
+ } catch (e) {
46
+ console.error(e);
47
+ }
48
+ }
49
+ }
50
+ exports.default = MigrateAssetSetting;
@@ -13,6 +13,7 @@ var _MigrateProvidersV1M1P = _interopRequireDefault(require("./providers/Migrate
13
13
  var _MigratePolygonUSDCProvider = _interopRequireDefault(require("./tokens/MigratePolygonUSDCProvider"));
14
14
  var _AutoEnableChainsTokens = _interopRequireDefault(require("./AutoEnableChainsTokens"));
15
15
  var _DeleteChain = _interopRequireDefault(require("./DeleteChain"));
16
+ var _DeleteChainStaking = _interopRequireDefault(require("./DeleteChainStaking"));
16
17
  var _EnableVaraChain = _interopRequireDefault(require("./EnableVaraChain"));
17
18
  var _MigrateAuthUrls = _interopRequireDefault(require("./MigrateAuthUrls"));
18
19
  var _MigrateAutoLock = _interopRequireDefault(require("./MigrateAutoLock"));
@@ -27,6 +28,8 @@ var _MigrateWalletReference = _interopRequireDefault(require("./MigrateWalletRef
27
28
  // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
28
29
  // SPDX-License-Identifier: Apache-2.0
29
30
 
31
+ // import MigrateAssetSetting from './databases/MigrateAssetSetting';
32
+
30
33
  const EVERYTIME = '__everytime__';
31
34
  exports.EVERYTIME = EVERYTIME;
32
35
  var _default = {
@@ -49,7 +52,9 @@ var _default = {
49
52
  '1.1.17-03': _EnableVaraChain.default,
50
53
  '1.1.24-01': _MigrateProvidersV1M1P.default,
51
54
  '1.1.26-01': _MigratePolygonUSDCProvider.default,
52
- '1.1.28-01': _MigrateEarningVersion.default
55
+ '1.1.28-01': _MigrateEarningVersion.default,
56
+ '1.1.41-01': _DeleteChainStaking.default
57
+ // '1.1.41-02': MigrateAssetSetting
53
58
  // [`${EVERYTIME}-1`]: AutoEnableChainsTokens
54
59
  };
55
60
  exports.default = _default;