@subwallet/extension-base 1.1.68-2 → 1.2.2-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 (168) hide show
  1. package/background/KoniTypes.d.ts +3 -1
  2. package/background/handlers/State.d.ts +1 -78
  3. package/background/handlers/State.js +1 -428
  4. package/background/types.d.ts +1 -0
  5. package/cjs/background/handlers/State.js +1 -456
  6. package/cjs/constants/storage.js +3 -1
  7. package/cjs/koni/api/dotsama/crowdloan.js +1 -2
  8. package/cjs/koni/api/nft/acala_nft/index.js +1 -3
  9. package/cjs/koni/api/nft/assethub_nft/index.js +1 -3
  10. package/cjs/koni/api/nft/assethub_unique/index.js +1 -3
  11. package/cjs/koni/api/nft/bit.country/index.js +4 -6
  12. package/cjs/koni/api/nft/config.js +1 -8
  13. package/cjs/koni/api/nft/evm_nft/index.js +1 -3
  14. package/cjs/koni/api/nft/karura_nft/index.js +1 -3
  15. package/cjs/koni/api/nft/ordinal_nft/index.js +4 -3
  16. package/cjs/koni/api/nft/rmrk_nft/index.js +4 -6
  17. package/cjs/koni/api/nft/unique_network_nft/index.js +1 -3
  18. package/cjs/koni/api/nft/unique_nft/uniqueNftV2.js +1 -3
  19. package/cjs/koni/api/nft/vara_nft/index.js +1 -3
  20. package/cjs/koni/api/nft/wasm_nft/index.js +10 -17
  21. package/cjs/koni/api/staking/bonding/astar.js +2 -4
  22. package/cjs/koni/api/staking/subsquidStaking.js +9 -12
  23. package/cjs/koni/api/subquery/subquery.js +1 -3
  24. package/cjs/koni/background/handlers/Extension.js +39 -15
  25. package/cjs/koni/background/handlers/Mobile.js +7 -4
  26. package/cjs/koni/background/handlers/State.js +68 -12
  27. package/cjs/koni/background/handlers/Tabs.js +7 -3
  28. package/cjs/koni/background/handlers/index.js +71 -71
  29. package/cjs/koni/background/subscription.js +7 -6
  30. package/cjs/packageInfo.js +1 -1
  31. package/cjs/services/campaign-service/helpers.js +3 -1
  32. package/cjs/services/chain-service/index.js +36 -27
  33. package/cjs/services/chain-service/utils/patch.js +1 -3
  34. package/cjs/services/earning-service/handlers/liquid-staking/acala.js +1 -2
  35. package/cjs/services/earning-service/handlers/liquid-staking/bifrost-manta.js +2 -3
  36. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +2 -3
  37. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +1 -2
  38. package/cjs/services/earning-service/handlers/native-staking/astar.js +3 -4
  39. package/cjs/services/event-service/index.js +0 -1
  40. package/cjs/services/history-service/subsquid-multi-chain-history.js +1 -3
  41. package/cjs/services/keyring-service/index.js +22 -0
  42. package/cjs/services/migration-service/scripts/MigrateRemoveGenesisHash.js +28 -0
  43. package/cjs/services/migration-service/scripts/index.js +3 -1
  44. package/cjs/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +16 -21
  45. package/cjs/services/notification-service/NotificationService.js +3 -1
  46. package/cjs/services/price-service/coingecko.js +6 -7
  47. package/cjs/services/price-service/index.js +7 -3
  48. package/cjs/services/request-service/handler/PopupHandler.js +14 -15
  49. package/cjs/services/setting-service/SettingService.js +4 -1
  50. package/cjs/services/setting-service/constants.js +1 -1
  51. package/cjs/services/setting-service/i18n/i18n.js +2 -4
  52. package/cjs/services/storage-service/DatabaseService.js +1 -1
  53. package/cjs/services/storage-service/databases/index.js +14 -1
  54. package/cjs/services/storage-service/db-stores/KeyValue.js +13 -0
  55. package/cjs/services/subscan-service/index.js +11 -3
  56. package/cjs/services/transaction-service/index.js +3 -3
  57. package/cjs/services/wallet-connect-service/constants.js +2 -2
  58. package/cjs/services/wallet-connect-service/helpers.js +1 -4
  59. package/cjs/services/wallet-connect-service/index.js +50 -33
  60. package/cjs/storage/index.js +120 -23
  61. package/cjs/types/common/index.js +16 -0
  62. package/cjs/types/common/storage.js +1 -0
  63. package/cjs/types/index.js +11 -0
  64. package/cjs/utils/environment.js +1 -1
  65. package/cjs/utils/eth/parseTransaction/index.js +8 -10
  66. package/cjs/utils/fetch.js +55 -0
  67. package/cjs/utils/fetchStaticCache.js +2 -4
  68. package/cjs/utils/fetchStaticData.js +7 -4
  69. package/cjs/utils/index.js +24 -0
  70. package/cjs/utils/reportError.js +1 -3
  71. package/constants/storage.d.ts +1 -0
  72. package/constants/storage.js +1 -0
  73. package/koni/api/dotsama/crowdloan.js +2 -3
  74. package/koni/api/nft/acala_nft/index.js +0 -1
  75. package/koni/api/nft/assethub_nft/index.js +0 -1
  76. package/koni/api/nft/assethub_unique/index.js +0 -1
  77. package/koni/api/nft/bit.country/index.js +0 -1
  78. package/koni/api/nft/config.js +1 -7
  79. package/koni/api/nft/evm_nft/index.js +0 -1
  80. package/koni/api/nft/karura_nft/index.js +0 -1
  81. package/koni/api/nft/ordinal_nft/index.d.ts +2 -0
  82. package/koni/api/nft/ordinal_nft/index.js +4 -3
  83. package/koni/api/nft/rmrk_nft/index.js +0 -1
  84. package/koni/api/nft/unique_network_nft/index.js +0 -1
  85. package/koni/api/nft/unique_nft/uniqueNftV2.js +0 -1
  86. package/koni/api/nft/vara_nft/index.js +0 -1
  87. package/koni/api/nft/wasm_nft/index.js +4 -10
  88. package/koni/api/staking/bonding/astar.js +0 -1
  89. package/koni/api/staking/subsquidStaking.js +10 -12
  90. package/koni/api/subquery/subquery.js +0 -1
  91. package/koni/background/handlers/Extension.d.ts +4 -0
  92. package/koni/background/handlers/Extension.js +29 -8
  93. package/koni/background/handlers/Mobile.js +9 -6
  94. package/koni/background/handlers/State.d.ts +6 -1
  95. package/koni/background/handlers/State.js +68 -12
  96. package/koni/background/handlers/Tabs.js +7 -3
  97. package/koni/background/handlers/index.d.ts +13 -7
  98. package/koni/background/handlers/index.js +67 -62
  99. package/koni/background/subscription.js +2 -1
  100. package/package.json +35 -28
  101. package/packageInfo.js +1 -1
  102. package/services/campaign-service/helpers.js +3 -1
  103. package/services/chain-service/index.js +36 -28
  104. package/services/chain-service/utils/patch.js +0 -1
  105. package/services/earning-service/handlers/liquid-staking/acala.js +0 -1
  106. package/services/earning-service/handlers/liquid-staking/bifrost-manta.js +0 -1
  107. package/services/earning-service/handlers/liquid-staking/bifrost.js +0 -1
  108. package/services/earning-service/handlers/liquid-staking/stella-swap.js +0 -1
  109. package/services/earning-service/handlers/native-staking/astar.js +0 -1
  110. package/services/event-service/index.js +0 -1
  111. package/services/history-service/subsquid-multi-chain-history.js +0 -1
  112. package/services/keyring-service/index.d.ts +1 -0
  113. package/services/keyring-service/index.js +19 -0
  114. package/services/migration-service/scripts/MigrateRemoveGenesisHash.d.ts +4 -0
  115. package/services/migration-service/scripts/MigrateRemoveGenesisHash.js +20 -0
  116. package/services/migration-service/scripts/index.js +3 -1
  117. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +17 -21
  118. package/services/notification-service/NotificationService.js +3 -1
  119. package/services/price-service/coingecko.js +6 -6
  120. package/services/price-service/index.js +7 -3
  121. package/services/request-service/handler/PopupHandler.d.ts +1 -1
  122. package/services/request-service/handler/PopupHandler.js +14 -15
  123. package/services/setting-service/SettingService.d.ts +1 -0
  124. package/services/setting-service/SettingService.js +4 -1
  125. package/services/setting-service/constants.js +2 -2
  126. package/services/setting-service/i18n/i18n.js +2 -4
  127. package/services/storage-service/DatabaseService.js +1 -1
  128. package/services/storage-service/databases/index.d.ts +8 -0
  129. package/services/storage-service/databases/index.js +13 -1
  130. package/services/storage-service/db-stores/KeyValue.d.ts +4 -0
  131. package/services/storage-service/db-stores/KeyValue.js +5 -0
  132. package/services/subscan-service/index.d.ts +2 -0
  133. package/services/subscan-service/index.js +10 -1
  134. package/services/transaction-service/index.js +4 -4
  135. package/services/wallet-connect-service/constants.js +3 -3
  136. package/services/wallet-connect-service/helpers.js +1 -4
  137. package/services/wallet-connect-service/index.d.ts +2 -0
  138. package/services/wallet-connect-service/index.js +42 -31
  139. package/storage/index.d.ts +19 -9
  140. package/storage/index.js +115 -23
  141. package/types/common/index.d.ts +1 -0
  142. package/types/common/index.js +4 -0
  143. package/types/common/storage.d.ts +4 -0
  144. package/types/common/storage.js +1 -0
  145. package/types/index.d.ts +1 -0
  146. package/types/index.js +1 -0
  147. package/utils/environment.js +1 -1
  148. package/utils/eth/parseTransaction/index.js +8 -10
  149. package/utils/fetch.d.ts +8 -0
  150. package/utils/fetch.js +44 -0
  151. package/utils/fetchStaticCache.js +2 -3
  152. package/utils/fetchStaticData.d.ts +1 -1
  153. package/utils/fetchStaticData.js +7 -4
  154. package/utils/index.d.ts +2 -0
  155. package/utils/index.js +2 -0
  156. package/utils/reportError.js +0 -1
  157. package/background/handlers/Extension.d.ts +0 -55
  158. package/background/handlers/Extension.js +0 -601
  159. package/background/handlers/Tabs.d.ts +0 -24
  160. package/background/handlers/Tabs.js +0 -194
  161. package/background/handlers/index.d.ts +0 -3
  162. package/background/handlers/index.js +0 -45
  163. package/cjs/background/handlers/Extension.js +0 -642
  164. package/cjs/background/handlers/Tabs.js +0 -222
  165. package/cjs/background/handlers/index.js +0 -54
  166. package/cjs/koni/background/events.js +0 -14
  167. package/koni/background/events.d.ts +0 -1
  168. package/koni/background/events.js +0 -7
@@ -32,7 +32,6 @@ var _PopupHandler = require("@subwallet/extension-base/services/request-service/
32
32
  var _SettingService = _interopRequireDefault(require("@subwallet/extension-base/services/setting-service/SettingService"));
33
33
  var _DatabaseService = _interopRequireDefault(require("@subwallet/extension-base/services/storage-service/DatabaseService"));
34
34
  var _subscanService = require("@subwallet/extension-base/services/subscan-service");
35
- var _subscanChainMap = require("@subwallet/extension-base/services/subscan-service/subscan-chain-map");
36
35
  var _swapService = require("@subwallet/extension-base/services/swap-service");
37
36
  var _transactionService = _interopRequireDefault(require("@subwallet/extension-base/services/transaction-service"));
38
37
  var _walletConnectService = _interopRequireDefault(require("@subwallet/extension-base/services/wallet-connect-service"));
@@ -101,7 +100,7 @@ class KoniState {
101
100
  this.keyringService = new _keyringService.KeyringService(this.eventService);
102
101
  this.notificationService = new _NotificationService.default();
103
102
  this.chainService = new _chainService.ChainService(this.dbService, this.eventService);
104
- this.subscanService = new _subscanService.SubscanService(_subscanChainMap.SUBSCAN_API_CHAIN_MAP);
103
+ this.subscanService = _subscanService.SubscanService.getInstance();
105
104
  this.settingService = new _SettingService.default();
106
105
  this.requestService = new _requestService.default(this.chainService, this.settingService, this.keyringService);
107
106
  this.priceService = new _priceService.PriceService(this.dbService, this.eventService, this.chainService);
@@ -121,7 +120,7 @@ class KoniState {
121
120
  this.logger = (0, _util.logger)('State');
122
121
 
123
122
  // Init state
124
- if (_utils3.TARGET_ENV !== 'mobile') {
123
+ if (_utils3.targetIsWeb) {
125
124
  this.init().catch(console.error);
126
125
  }
127
126
  }
@@ -1366,15 +1365,57 @@ class KoniState {
1366
1365
  async completeConfirmation(request) {
1367
1366
  return await this.requestService.completeConfirmation(request);
1368
1367
  }
1369
- onHandleRemindExportAccount() {
1370
- const remindStatus = _storage.SWStorage.instance.getItem(_constants.REMIND_EXPORT_ACCOUNT);
1368
+ async onMV3Update() {
1369
+ const migrationStatus = await _storage.SWStorage.instance.getItem('mv3_migration');
1370
+ if (!migrationStatus || migrationStatus !== 'done') {
1371
+ // Open migration tab
1372
+ const url = `${chrome.runtime.getURL('index.html')}#/mv3-migration`;
1373
+ await (0, _PopupHandler.openPopup)(url);
1374
+
1375
+ // migrateMV3LocalStorage will be called when user open migration tab with data from localStorage on frontend
1376
+ }
1377
+ }
1378
+
1379
+ async migrateMV3LocalStorage(data) {
1380
+ try {
1381
+ const parsedData = JSON.parse(data);
1382
+ parsedData.mv3_migration = 'done';
1383
+ await _storage.SWStorage.instance.setMap(parsedData);
1384
+
1385
+ // Reload some services use SWStorage
1386
+ // wallet connect
1387
+ this.walletConnectService.initClient().catch(console.error);
1388
+ return true;
1389
+ } catch (e) {
1390
+ console.error(e);
1391
+ return false;
1392
+ }
1393
+ }
1394
+ async onMV3Install() {
1395
+ await _storage.SWStorage.instance.setItem('mv3_migration', 'done');
1396
+
1397
+ // Open expand page
1398
+ const url = `${chrome.runtime.getURL('index.html')}#/welcome`;
1399
+ (0, _helpers.withErrorLog)(() => chrome.tabs.create({
1400
+ url
1401
+ }));
1402
+ }
1403
+ onInstallOrUpdate(details) {
1404
+ // Open mv3 migration window
1405
+ if (details.reason === 'install') {
1406
+ this.onMV3Install().catch(console.error);
1407
+ } else if (details.reason === 'update') {
1408
+ this.onMV3Update().catch(console.error);
1409
+ }
1410
+ }
1411
+ async onHandleRemindExportAccount() {
1412
+ const remindStatus = await _storage.SWStorage.instance.getItem(_constants.REMIND_EXPORT_ACCOUNT);
1371
1413
  if (!remindStatus || !remindStatus.includes('done')) {
1372
1414
  const handleRemind = account => {
1373
1415
  if (account.address !== '') {
1374
1416
  // Open remind tab
1375
1417
  const url = `${chrome.runtime.getURL('index.html')}#/remind-export-account`;
1376
- (0, _PopupHandler.openPopup)(url);
1377
- subscription.unsubscribe();
1418
+ (0, _PopupHandler.openPopup)(url).then(_util.noop).catch(console.error).finally(() => subscription.unsubscribe());
1378
1419
  } else {
1379
1420
  setTimeout(() => {
1380
1421
  subscription.unsubscribe();
@@ -1384,8 +1425,22 @@ class KoniState {
1384
1425
  const subscription = this.keyringService.currentAccountSubject.subscribe(handleRemind);
1385
1426
  }
1386
1427
  }
1428
+ async setStorageFromWS(_ref10) {
1429
+ let {
1430
+ key,
1431
+ value
1432
+ } = _ref10;
1433
+ try {
1434
+ const jsonData = JSON.stringify(value);
1435
+ await _storage.SWStorage.instance.setItem(key, jsonData);
1436
+ return true;
1437
+ } catch (e) {
1438
+ console.error(e);
1439
+ return false;
1440
+ }
1441
+ }
1387
1442
  onCheckToRemindUser() {
1388
- this.onHandleRemindExportAccount();
1443
+ this.onHandleRemindExportAccount().catch(console.error);
1389
1444
  }
1390
1445
  onInstall() {
1391
1446
  // const singleModes = Object.values(_PREDEFINED_SINGLE_MODES);
@@ -1472,7 +1527,6 @@ class KoniState {
1472
1527
  this.waitSleeping = null;
1473
1528
  }
1474
1529
  async _start() {
1475
- let isWakeup = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
1476
1530
  // Wait sleep finish before start to avoid conflict
1477
1531
  this.generalStatus === _types.ServiceStatus.STOPPING && this.waitSleeping && (await this.waitSleeping);
1478
1532
 
@@ -1486,6 +1540,7 @@ class KoniState {
1486
1540
  await this.waitStarting;
1487
1541
  return;
1488
1542
  }
1543
+ const isWakeup = this.generalStatus === _types.ServiceStatus.STOPPED;
1489
1544
  const starting = (0, _promise.createPromiseHandler)();
1490
1545
  this.generalStatus = _types.ServiceStatus.STARTING;
1491
1546
  this.waitStarting = starting.promise;
@@ -1505,7 +1560,7 @@ class KoniState {
1505
1560
  this.generalStatus = _types.ServiceStatus.STARTED;
1506
1561
  }
1507
1562
  async wakeup() {
1508
- await this._start(true);
1563
+ await this._start();
1509
1564
  }
1510
1565
  cancelSubscription(id) {
1511
1566
  if ((0, _subscriptions.isSubscriptionRunning)(id)) {
@@ -1594,6 +1649,7 @@ class KoniState {
1594
1649
  await this.dbService.resetWallet(resetAll);
1595
1650
  this.accountRefStore.set('refList', []);
1596
1651
  if (resetAll) {
1652
+ await this.priceService.setPriceCurrency(DEFAULT_CURRENCY);
1597
1653
  this.settingService.resetWallet();
1598
1654
  await this.priceService.setPriceCurrency(DEFAULT_CURRENCY);
1599
1655
  }
@@ -1761,12 +1817,12 @@ class KoniState {
1761
1817
  specVersion: parseInt((metadata === null || metadata === void 0 ? void 0 : metadata.specVersion) || '0')
1762
1818
  };
1763
1819
  }
1764
- getCrowdloanContributions(_ref10) {
1820
+ getCrowdloanContributions(_ref11) {
1765
1821
  let {
1766
1822
  address,
1767
1823
  page,
1768
1824
  relayChain
1769
- } = _ref10;
1825
+ } = _ref11;
1770
1826
  return this.subscanService.getCrowdloanContributions(relayChain, address, page);
1771
1827
  }
1772
1828
  }
@@ -217,7 +217,7 @@ class KoniTabs {
217
217
  redirectPhishingLanding(phishingWebsite) {
218
218
  const nonFragment = phishingWebsite.split('#')[0];
219
219
  const encodedWebsite = encodeURIComponent(nonFragment);
220
- const url = `${chrome.extension.getURL('index.html')}#${_defaults.PHISHING_PAGE_REDIRECT}/${encodedWebsite}`;
220
+ const url = `${chrome.runtime.getURL('index.html')}#${_defaults.PHISHING_PAGE_REDIRECT}/${encodedWebsite}`;
221
221
  chrome.tabs.query({
222
222
  url: nonFragment
223
223
  }, tabs => {
@@ -978,6 +978,12 @@ class KoniTabs {
978
978
  if (type === 'pub(phishing.redirectIfDenied)') {
979
979
  return this.redirectIfPhishing(url);
980
980
  }
981
+ if (type === 'pub(ping)') {
982
+ return Promise.resolve(true);
983
+ }
984
+
985
+ // Wait for account ready and chain ready
986
+ await Promise.all([this.#koniState.eventService.waitAccountReady, this.#koniState.eventService.waitChainReady]);
981
987
  if (type !== 'pub(authorize.tabV2)' && !this.isEvmPublicRequest(type, request)) {
982
988
  await this.#koniState.ensureUrlAuthorizedV2(url).catch(e => {
983
989
  if (type.startsWith('evm')) {
@@ -997,8 +1003,6 @@ class KoniTabs {
997
1003
  return this.metadataList(url);
998
1004
  case 'pub(metadata.provide)':
999
1005
  return this.metadataProvide(url, request);
1000
- case 'pub(ping)':
1001
- return Promise.resolve(true);
1002
1006
  case 'pub(rpc.listProviders)':
1003
1007
  return this.rpcListProviders();
1004
1008
  case 'pub(rpc.send)':
@@ -4,10 +4,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = handlers;
8
- exports.tabs = exports.state = exports.nftHandler = exports.mobile = exports.extension = void 0;
7
+ exports.SWHandler = void 0;
9
8
  var _defaults = require("@subwallet/extension-base/defaults");
10
- var _nft = require("@subwallet/extension-base/koni/api/nft");
11
9
  var _Extension = _interopRequireDefault(require("@subwallet/extension-base/koni/background/handlers/Extension"));
12
10
  var _Mobile = _interopRequireDefault(require("@subwallet/extension-base/koni/background/handlers/Mobile"));
13
11
  var _State = _interopRequireDefault(require("@subwallet/extension-base/koni/background/handlers/State"));
@@ -16,78 +14,80 @@ var _util = require("@polkadot/util");
16
14
  // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
17
15
  // SPDX-License-Identifier: Apache-2.0
18
16
 
19
- // import Migration from '@subwallet/extension-base/koni/migration';
20
-
21
- const state = new _State.default();
22
- exports.state = state;
23
- const extension = new _Extension.default(state);
24
- exports.extension = extension;
25
- const tabs = new _Tabs.default(state);
26
- exports.tabs = tabs;
27
- const mobile = new _Mobile.default(state);
28
- exports.mobile = mobile;
29
- const nftHandler = new _nft.NftHandler();
30
-
31
- // Migration
32
- // async function makeSureStateReady () {
33
- // const poll = (resolve: (value: unknown) => void) => {
34
- // if (state.isReady()) {
35
- // resolve(true);
36
- // } else {
37
- // console.log('Waiting for State is ready...');
38
- // setTimeout(() => poll(resolve), 400);
39
- // }
40
- // };
41
- //
42
- // return new Promise(poll);
43
- // }
44
-
45
- // makeSureStateReady().then(() => {
46
- // const migration = new Migration(state);
47
- //
48
- // migration.run().catch((err) => console.warn(err));
49
- // }).catch((e) => console.warn(e));
50
- exports.nftHandler = nftHandler;
51
- function handlers(_ref, port) {
52
- let {
53
- id,
54
- message,
55
- request
56
- } = _ref;
57
- let extensionPortName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _defaults.PORT_EXTENSION;
58
- const isMobile = port.name === _defaults.PORT_MOBILE;
59
- const isExtension = port.name === extensionPortName;
60
- const sender = port.sender;
61
- const from = isExtension ? 'extension' : sender.url || sender.tab && sender.tab.url || '<unknown>';
62
- const source = `${from}: ${id}: ${message}`;
63
-
64
- // console.log(` [in] ${source}`); // :: ${JSON.stringify(request)}`);
65
-
66
- const promise = isMobile ? mobile.handle(id, message, request, port) : isExtension ? extension.handle(id, message, request, port) : tabs.handle(id, message, request, from, port);
67
- promise.then(response => {
68
- // console.log(`[out] ${source}`); // :: ${JSON.stringify(response)}`);
69
-
70
- // between the start and the end of the promise, the user may have closed
71
- // the tab, in which case port will be undefined
72
- (0, _util.assert)(port, 'Port has been disconnected');
73
- port.postMessage({
17
+ class SWHandler {
18
+ get state() {
19
+ if (!this._state) {
20
+ this._state = new _State.default();
21
+ }
22
+ return this._state;
23
+ }
24
+ get extensionHandler() {
25
+ if (!this._extensionHandler) {
26
+ this._extensionHandler = new _Extension.default(this.state);
27
+ }
28
+ return this._extensionHandler;
29
+ }
30
+ get tabHandler() {
31
+ if (!this._tabsHandler) {
32
+ this._tabsHandler = new _Tabs.default(this.state);
33
+ }
34
+ return this._tabsHandler;
35
+ }
36
+ get mobileHandler() {
37
+ if (!this._mobileHandler) {
38
+ this._mobileHandler = new _Mobile.default(this.state);
39
+ }
40
+ return this._mobileHandler;
41
+ }
42
+ handle(_ref, port) {
43
+ let {
74
44
  id,
75
- response,
76
- sender: 'BACKGROUND'
77
- });
78
- }).catch(error => {
79
- console.error(error);
80
- console.log(`[err] ${source}:: ${error.message}`);
45
+ message,
46
+ request
47
+ } = _ref;
48
+ const isMobile = port.name === _defaults.PORT_MOBILE;
49
+ const isExtension = port.name === _defaults.PORT_EXTENSION;
50
+ const sender = port.sender;
51
+ // console.debug('Handle', message);
52
+
53
+ const from = isExtension ? 'extension' : (sender === null || sender === void 0 ? void 0 : sender.url) || (sender === null || sender === void 0 ? void 0 : sender.tab) && (sender === null || sender === void 0 ? void 0 : sender.tab.url) || '<unknown>';
54
+ const source = `${from}: ${id}: ${message}`;
55
+ const promise = isMobile ? this.mobileHandler.handle(id, message, request, port) : isExtension ? this.extensionHandler.handle(id, message, request, port) : this.tabHandler.handle(id, message, request, from, port);
56
+ promise.then(response => {
57
+ // console.log(`[out] ${source}`); // :: ${JSON.stringify(response)}`);
81
58
 
82
- // only send message back to port if it's still connected
83
- if (port) {
59
+ // between the start and the end of the promise, the user may have closed
60
+ // the tab, in which case port will be undefined
61
+ (0, _util.assert)(port, 'Port has been disconnected');
84
62
  port.postMessage({
85
- error: error.message,
86
- errorCode: error.code,
87
- errorData: error.data,
88
63
  id,
64
+ response,
89
65
  sender: 'BACKGROUND'
90
66
  });
67
+ }).catch(error => {
68
+ console.error(error);
69
+ console.log(`[err] ${source}:: ${error.message}`);
70
+
71
+ // only send message back to port if it's still connected
72
+ if (port) {
73
+ port.postMessage({
74
+ error: error.message,
75
+ errorCode: error.code,
76
+ errorData: error.data,
77
+ id,
78
+ sender: 'BACKGROUND'
79
+ });
80
+ }
81
+ });
82
+ }
83
+
84
+ // Singleton
85
+
86
+ static get instance() {
87
+ if (!SWHandler._instance) {
88
+ SWHandler._instance = new SWHandler();
91
89
  }
92
- });
93
- }
90
+ return SWHandler._instance;
91
+ }
92
+ }
93
+ exports.SWHandler = SWHandler;
@@ -5,13 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.KoniSubscription = void 0;
7
7
  var _crowdloan = require("@subwallet/extension-base/koni/api/dotsama/crowdloan");
8
- var _handlers = require("@subwallet/extension-base/koni/background/handlers");
8
+ var _nft = require("@subwallet/extension-base/koni/api/nft");
9
9
  var _types = require("@subwallet/extension-base/services/event-service/types");
10
10
  var _utils = require("@subwallet/extension-base/utils");
11
11
  var _util = require("@polkadot/util");
12
12
  // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
13
13
  // SPDX-License-Identifier: Apache-2.0
14
14
 
15
+ const nftHandler = new _nft.NftHandler();
15
16
  class KoniSubscription {
16
17
  subscriptionMap = {
17
18
  crowdloan: undefined,
@@ -105,11 +106,11 @@ class KoniSubscription {
105
106
  }
106
107
  initNftSubscription(addresses, substrateApiMap, evmApiMap, smartContractNfts, chainInfoMap) {
107
108
  var _this = this;
108
- _handlers.nftHandler.setChainInfoMap(chainInfoMap);
109
- _handlers.nftHandler.setDotSamaApiMap(substrateApiMap);
110
- _handlers.nftHandler.setWeb3ApiMap(evmApiMap);
111
- _handlers.nftHandler.setAddresses(addresses);
112
- _handlers.nftHandler.handleNfts(smartContractNfts, function () {
109
+ nftHandler.setChainInfoMap(chainInfoMap);
110
+ nftHandler.setDotSamaApiMap(substrateApiMap);
111
+ nftHandler.setWeb3ApiMap(evmApiMap);
112
+ nftHandler.setAddresses(addresses);
113
+ nftHandler.handleNfts(smartContractNfts, function () {
113
114
  return _this.state.updateNftData(...arguments);
114
115
  }, function () {
115
116
  return _this.state.setNftCollection(...arguments);
@@ -13,6 +13,6 @@ const packageInfo = {
13
13
  name: '@subwallet/extension-base',
14
14
  path: typeof __dirname === 'string' ? __dirname : 'auto',
15
15
  type: 'cjs',
16
- version: '1.1.68-2'
16
+ version: '1.2.2-0'
17
17
  };
18
18
  exports.packageInfo = packageInfo;
@@ -27,7 +27,9 @@ const runCampaign = (notificationService, campaign) => {
27
27
  if (metadata) {
28
28
  const url = metadata.url;
29
29
  if (url) {
30
- window.open(url);
30
+ chrome.tabs.create({
31
+ url
32
+ }).catch(console.error);
31
33
  }
32
34
  }
33
35
  break;
@@ -497,6 +497,7 @@ class ChainService {
497
497
  needUpdateChainApiList,
498
498
  storedChainInfoList
499
499
  } = (0, _utils.updateLatestChainInfo)(this.dataMap, latestChainInfo);
500
+ console.log('here', needUpdateChainApiList, storedChainInfoList);
500
501
  this.dbService.bulkUpdateChainStore(storedChainInfoList).catch(console.error);
501
502
  this.updateChainSubscription();
502
503
  needUpdateChainApiList.forEach(chainInfo => {
@@ -601,6 +602,12 @@ class ChainService {
601
602
  visible: true
602
603
  });
603
604
  }
605
+ } else {
606
+ if (originChain === 'avail_mainnet') {
607
+ await this.updateAssetSetting(assetSlug, {
608
+ visible: true
609
+ });
610
+ }
604
611
  }
605
612
  }
606
613
  }
@@ -666,22 +673,18 @@ class ChainService {
666
673
  this.updateChainConnectionStatus(slug, status);
667
674
  };
668
675
  if (chainInfo.substrateInfo !== null && chainInfo.substrateInfo !== undefined) {
669
- if (_constants._MANTA_ZK_CHAIN_GROUP.includes(chainInfo.slug) && _utils2.MODULE_SUPPORT.MANTA_ZK && this.mantaChainHandler) {
670
- var _this$mantaChainHandl;
671
- const apiPromise = await ((_this$mantaChainHandl = this.mantaChainHandler) === null || _this$mantaChainHandl === void 0 ? void 0 : _this$mantaChainHandl.initMantaPay(endpoint, chainInfo.slug));
672
- const chainApi = await this.substrateChainHandler.initApi(chainInfo.slug, endpoint, {
673
- providerName,
674
- externalApiPromise: apiPromise,
675
- onUpdateStatus
676
- });
677
- this.substrateChainHandler.setSubstrateApi(chainInfo.slug, chainApi);
678
- } else {
679
- const chainApi = await this.substrateChainHandler.initApi(chainInfo.slug, endpoint, {
680
- providerName,
681
- onUpdateStatus
682
- });
683
- this.substrateChainHandler.setSubstrateApi(chainInfo.slug, chainApi);
684
- }
676
+ // if (_MANTA_ZK_CHAIN_GROUP.includes(chainInfo.slug) && MODULE_SUPPORT.MANTA_ZK && this.mantaChainHandler) {
677
+ // const apiPromise = await this.mantaChainHandler?.initMantaPay(endpoint, chainInfo.slug);
678
+ // const chainApi = await this.substrateChainHandler.initApi(chainInfo.slug, endpoint, { providerName, externalApiPromise: apiPromise, onUpdateStatus });
679
+ //
680
+ // this.substrateChainHandler.setSubstrateApi(chainInfo.slug, chainApi);
681
+ // } else {
682
+ const chainApi = await this.substrateChainHandler.initApi(chainInfo.slug, endpoint, {
683
+ providerName,
684
+ onUpdateStatus
685
+ });
686
+ this.substrateChainHandler.setSubstrateApi(chainInfo.slug, chainApi);
687
+ // }
685
688
  }
686
689
 
687
690
  /**
@@ -1029,17 +1032,9 @@ class ChainService {
1029
1032
  const storedAssetRegistry = await this.dbService.getAllAssetStore();
1030
1033
  const latestAssetRegistry = filterAssetInfoMap(this.getChainInfoMap(), _chainList.ChainAssetMap);
1031
1034
  const availableChains = Object.values(this.dataMap.chainInfoMap).filter(info => info.chainStatus === _types._ChainStatus.ACTIVE).map(chainInfo => chainInfo.slug);
1032
-
1033
- // Fill out zk assets from latestAssetRegistry if not supported
1034
- if (!_utils2.MODULE_SUPPORT.MANTA_ZK) {
1035
- Object.keys(latestAssetRegistry).forEach(slug => {
1036
- if ((0, _utils._isMantaZkAsset)(latestAssetRegistry[slug])) {
1037
- delete latestAssetRegistry[slug];
1038
- }
1039
- });
1040
- }
1035
+ let finalAssetRegistry = {};
1041
1036
  if (storedAssetRegistry.length === 0) {
1042
- this.dataMap.assetRegistry = latestAssetRegistry;
1037
+ finalAssetRegistry = latestAssetRegistry;
1043
1038
  } else {
1044
1039
  const mergedAssetRegistry = latestAssetRegistry;
1045
1040
  const parsedStoredAssetRegistry = {};
@@ -1081,9 +1076,23 @@ class ChainService {
1081
1076
  deprecatedAssets.push(storedAssetInfo.slug);
1082
1077
  }
1083
1078
  }
1084
- this.dataMap.assetRegistry = mergedAssetRegistry;
1079
+ finalAssetRegistry = mergedAssetRegistry;
1085
1080
  await this.dbService.removeFromAssetStore(deprecatedAssets);
1086
1081
  }
1082
+
1083
+ // Fill out zk assets from finalAssetRegistry if not supported
1084
+ if (!_utils2.MODULE_SUPPORT.MANTA_ZK) {
1085
+ const zkAssets = [];
1086
+ Object.entries(finalAssetRegistry).forEach(_ref14 => {
1087
+ let [slug, assets] = _ref14;
1088
+ if ((0, _utils._isMantaZkAsset)(assets)) {
1089
+ zkAssets.push(slug);
1090
+ delete finalAssetRegistry[slug];
1091
+ }
1092
+ });
1093
+ await this.dbService.removeFromAssetStore(zkAssets);
1094
+ }
1095
+ this.dataMap.assetRegistry = finalAssetRegistry;
1087
1096
  }
1088
1097
  updateChainStateMapSubscription() {
1089
1098
  this.chainStateMapSubject.next(this.getChainStateMap());
@@ -1,11 +1,9 @@
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
  });
7
6
  exports.fetchPatchData = fetchPatchData;
8
- var _crossFetch = _interopRequireDefault(require("cross-fetch"));
9
7
  // Copyright 2019-2022 @subwallet/extension-base
10
8
  // SPDX-License-Identifier: Apache-2.0
11
9
 
@@ -15,7 +13,7 @@ const fetchDomain = PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'https://chai
15
13
  const ChainListVersion = '0.2.62';
16
14
  async function fetchPatchData(slug) {
17
15
  try {
18
- const fetchPromise = (0, _crossFetch.default)(`${fetchDomain}/patch/${ChainListVersion}/${slug}`);
16
+ const fetchPromise = fetch(`${fetchDomain}/patch/${ChainListVersion}/${slug}`);
19
17
  const timeout = new Promise(resolve => {
20
18
  const id = setTimeout(() => {
21
19
  clearTimeout(id);
@@ -9,7 +9,6 @@ var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
9
9
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
10
10
  var _constants = require("@subwallet/extension-base/services/earning-service/constants");
11
11
  var _types = require("@subwallet/extension-base/types");
12
- var _crossFetch = _interopRequireDefault(require("cross-fetch"));
13
12
  var _util = require("@polkadot/util");
14
13
  var _base = _interopRequireDefault(require("./base"));
15
14
  // Copyright 2019-2022 @subwallet/extension-base
@@ -50,7 +49,7 @@ class AcalaLiquidStakingPoolHandler extends _base.default {
50
49
  async getPoolStat() {
51
50
  const substrateApi = await this.substrateApi.isReady;
52
51
  const stakingMetaPromise = new Promise(function (resolve) {
53
- (0, _crossFetch.default)(GRAPHQL_API, {
52
+ fetch(GRAPHQL_API, {
54
53
  method: 'POST',
55
54
  headers: {
56
55
  'Content-Type': 'application/json'
@@ -8,7 +8,6 @@ exports.default = void 0;
8
8
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
9
9
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
10
10
  var _types = require("@subwallet/extension-base/types");
11
- var _crossFetch = _interopRequireDefault(require("cross-fetch"));
12
11
  var _bifrost = _interopRequireDefault(require("./bifrost"));
13
12
  // Copyright 2019-2022 @subwallet/extension-base
14
13
  // SPDX-License-Identifier: Apache-2.0
@@ -38,14 +37,14 @@ class BifrostMantaLiquidStakingPoolHandler extends _bifrost.default {
38
37
  async getPoolStat() {
39
38
  const substrateApi = await this.substrateApi.isReady;
40
39
  const stakingMetaPromise = new Promise(function (resolve) {
41
- (0, _crossFetch.default)(STATS_URL, {
40
+ fetch(STATS_URL, {
42
41
  method: 'GET'
43
42
  }).then(res => {
44
43
  resolve(res.json());
45
44
  }).catch(console.error);
46
45
  });
47
46
  const exchangeRatePromise = new Promise(function (resolve) {
48
- (0, _crossFetch.default)(RATIO_URL, {
47
+ fetch(RATIO_URL, {
49
48
  method: 'GET'
50
49
  }).then(resp => {
51
50
  resolve(resp.json());
@@ -12,7 +12,6 @@ var _constants2 = require("@subwallet/extension-base/services/earning-service/co
12
12
  var _types = require("@subwallet/extension-base/types");
13
13
  var _utils2 = require("@subwallet/extension-base/utils");
14
14
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
15
- var _crossFetch = _interopRequireDefault(require("cross-fetch"));
16
15
  var _util = require("@polkadot/util");
17
16
  var _base = _interopRequireDefault(require("./base"));
18
17
  // Copyright 2019-2022 @subwallet/extension-base
@@ -53,14 +52,14 @@ class BifrostLiquidStakingPoolHandler extends _base.default {
53
52
  async getPoolStat() {
54
53
  const substrateApi = await this.substrateApi.isReady;
55
54
  const stakingMetaPromise = new Promise(function (resolve) {
56
- (0, _crossFetch.default)(STATS_URL, {
55
+ fetch(STATS_URL, {
57
56
  method: 'GET'
58
57
  }).then(res => {
59
58
  resolve(res.json());
60
59
  }).catch(console.error);
61
60
  });
62
61
  const exchangeRatePromise = new Promise(function (resolve) {
63
- (0, _crossFetch.default)(BIFROST_GRAPHQL_ENDPOINT, {
62
+ fetch(BIFROST_GRAPHQL_ENDPOINT, {
64
63
  method: 'POST',
65
64
  headers: {
66
65
  'Content-Type': 'application/json'
@@ -11,7 +11,6 @@ var _web = require("@subwallet/extension-base/koni/api/tokens/evm/web3");
11
11
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
12
12
  var _utils2 = require("@subwallet/extension-base/services/fee-service/utils");
13
13
  var _types = require("@subwallet/extension-base/types");
14
- var _crossFetch = _interopRequireDefault(require("cross-fetch"));
15
14
  var _util = require("@polkadot/util");
16
15
  var _constants = require("../../constants");
17
16
  var _base = _interopRequireDefault(require("./base"));
@@ -63,7 +62,7 @@ class StellaSwapLiquidStakingPoolHandler extends _base.default {
63
62
  const derivativeTokenInfo = this.state.getAssetBySlug(derivativeTokenSlug);
64
63
  const stakingContract = getStellaswapLiquidStakingContract(this.chain, (0, _utils._getContractAddressOfToken)(derivativeTokenInfo), evmApi);
65
64
  const aprPromise = new Promise(function (resolve) {
66
- (0, _crossFetch.default)(APR_STATS_URL, {
65
+ fetch(APR_STATS_URL, {
67
66
  method: 'GET'
68
67
  }).then(res => {
69
68
  resolve(res.json());
@@ -12,7 +12,6 @@ var _utils = require("@subwallet/extension-base/koni/api/staking/bonding/utils")
12
12
  var _constants = require("@subwallet/extension-base/services/chain-service/constants");
13
13
  var _types = require("@subwallet/extension-base/types");
14
14
  var _utils2 = require("@subwallet/extension-base/utils");
15
- var _crossFetch = _interopRequireDefault(require("cross-fetch"));
16
15
  var _util = require("@polkadot/util");
17
16
  var _utilCrypto = require("@polkadot/util-crypto");
18
17
  var _basePara = _interopRequireDefault(require("./base-para"));
@@ -76,7 +75,7 @@ class AstarNativeStakingPoolHandler extends _basePara.default {
76
75
  }
77
76
  await defaultCallback();
78
77
  const apyPromise = new Promise(resolve => {
79
- (0, _crossFetch.default)(`https://api.astar.network/api/v1/${this.chain}/dapps-staking/apy`, {
78
+ fetch(`https://api.astar.network/api/v1/${this.chain}/dapps-staking/apy`, {
80
79
  method: 'GET'
81
80
  }).then(resp => {
82
81
  resolve(resp.json());
@@ -159,7 +158,7 @@ class AstarNativeStakingPoolHandler extends _basePara.default {
159
158
  const nominationList = [];
160
159
  const unstakingList = [];
161
160
  const allDappsReq = new Promise(resolve => {
162
- (0, _crossFetch.default)(`https://api.astar.network/api/v1/${chainInfo.slug}/dapps-staking/dapps`, {
161
+ fetch(`https://api.astar.network/api/v1/${chainInfo.slug}/dapps-staking/dapps`, {
163
162
  method: 'GET'
164
163
  }).then(resp => {
165
164
  resolve(resp.json());
@@ -306,7 +305,7 @@ class AstarNativeStakingPoolHandler extends _basePara.default {
306
305
  const allDappsInfo = [];
307
306
  const maxStakerPerContract = (0, _utils2.parseRawNumber)(rawMaxStakerPerContract);
308
307
  const allDappsReq = new Promise(resolve => {
309
- (0, _crossFetch.default)(`https://api.astar.network/api/v1/${this.chain}/dapps-staking/dapps`, {
308
+ fetch(`https://api.astar.network/api/v1/${this.chain}/dapps-staking/dapps`, {
310
309
  method: 'GET'
311
310
  }).then(resp => {
312
311
  resolve(resp.json());
@@ -39,7 +39,6 @@ class EventService extends _eventemitter.default {
39
39
  generateWaitPromise(eventType) {
40
40
  return new Promise(resolve => {
41
41
  this.once(eventType, isReady => {
42
- console.log('===LOG generateWaitPromise eventType', eventType);
43
42
  resolve(isReady);
44
43
  });
45
44
  });