@subwallet/extension-base 1.0.12-0 → 1.0.13-1

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 (124) hide show
  1. package/background/KoniTypes.d.ts +89 -0
  2. package/background/KoniTypes.js +18 -19
  3. package/background/handlers/Extension.js +17 -2
  4. package/background/handlers/State.d.ts +0 -1
  5. package/background/handlers/State.js +4 -8
  6. package/background/types.d.ts +6 -1
  7. package/cjs/background/KoniTypes.js +21 -11
  8. package/cjs/background/handlers/Extension.js +22 -6
  9. package/cjs/background/handlers/State.js +4 -8
  10. package/cjs/constants/index.js +7 -1
  11. package/cjs/defaults.js +1 -1
  12. package/cjs/koni/api/dotsama/balance.js +5 -0
  13. package/cjs/koni/api/dotsama/transfer.js +6 -0
  14. package/cjs/koni/api/nft/config.js +11 -6
  15. package/cjs/koni/api/xcm/polkadotXcm.js +1 -1
  16. package/cjs/koni/api/xcm/xTokens.js +2 -2
  17. package/cjs/koni/background/cron.js +12 -1
  18. package/cjs/koni/background/handlers/Extension.js +457 -131
  19. package/cjs/koni/background/handlers/State.js +236 -53
  20. package/cjs/koni/background/handlers/Tabs.js +61 -9
  21. package/cjs/koni/background/subscription.js +3 -0
  22. package/cjs/packageInfo.js +1 -1
  23. package/cjs/page/Metadata.js +3 -0
  24. package/cjs/services/chain-service/constants.js +10 -4
  25. package/cjs/services/chain-service/handler/SubstrateApi.js +2 -1
  26. package/cjs/services/chain-service/handler/SubstrateChainHandler.js +3 -1
  27. package/cjs/services/chain-service/handler/manta/MantaPrivateHandler.js +147 -0
  28. package/cjs/services/chain-service/index.js +54 -5
  29. package/cjs/services/chain-service/utils.js +32 -0
  30. package/cjs/services/event-service/types.js +3 -1
  31. package/cjs/services/request-service/handler/AuthRequestHandler.js +4 -9
  32. package/cjs/services/request-service/handler/SubstrateRequestHandler.js +2 -2
  33. package/cjs/services/request-service/handler/WalletConnectRequestHandler.js +71 -0
  34. package/cjs/services/request-service/index.js +24 -6
  35. package/cjs/services/storage-service/DatabaseService.js +31 -1
  36. package/cjs/services/storage-service/databases/index.js +3 -0
  37. package/cjs/services/storage-service/db-stores/MantaPay.js +40 -0
  38. package/cjs/services/transaction-service/helpers/index.js +3 -2
  39. package/cjs/services/transaction-service/index.js +2 -1
  40. package/cjs/services/wallet-connect-service/constants.js +38 -0
  41. package/cjs/services/wallet-connect-service/handler/Eip155RequestHandler.js +113 -0
  42. package/cjs/services/wallet-connect-service/handler/PolkadotRequestHandler.js +123 -0
  43. package/cjs/services/wallet-connect-service/helpers.js +81 -0
  44. package/cjs/services/wallet-connect-service/index.js +273 -0
  45. package/cjs/services/wallet-connect-service/types.js +27 -0
  46. package/cjs/utils/array.js +17 -0
  47. package/cjs/utils/environment.js +66 -0
  48. package/cjs/utils/index.js +78 -1
  49. package/cjs/utils/lazy.js +52 -0
  50. package/constants/index.d.ts +2 -0
  51. package/constants/index.js +2 -0
  52. package/defaults.d.ts +1 -1
  53. package/defaults.js +1 -1
  54. package/koni/api/dotsama/balance.js +6 -1
  55. package/koni/api/dotsama/transfer.js +7 -1
  56. package/koni/api/nft/config.js +11 -6
  57. package/koni/api/xcm/polkadotXcm.js +1 -1
  58. package/koni/api/xcm/xTokens.js +2 -2
  59. package/koni/background/cron.d.ts +1 -0
  60. package/koni/background/cron.js +13 -2
  61. package/koni/background/handlers/Extension.d.ts +11 -0
  62. package/koni/background/handlers/Extension.js +329 -12
  63. package/koni/background/handlers/State.d.ts +17 -3
  64. package/koni/background/handlers/State.js +238 -52
  65. package/koni/background/handlers/Tabs.d.ts +2 -0
  66. package/koni/background/handlers/Tabs.js +58 -7
  67. package/koni/background/subscription.js +3 -0
  68. package/package.json +72 -6
  69. package/packageInfo.js +1 -1
  70. package/page/Metadata.d.ts +2 -0
  71. package/page/Metadata.js +3 -0
  72. package/services/chain-service/constants.d.ts +3 -0
  73. package/services/chain-service/constants.js +5 -2
  74. package/services/chain-service/handler/SubstrateApi.d.ts +1 -1
  75. package/services/chain-service/handler/SubstrateApi.js +2 -1
  76. package/services/chain-service/handler/SubstrateChainHandler.d.ts +1 -1
  77. package/services/chain-service/handler/SubstrateChainHandler.js +3 -1
  78. package/services/chain-service/handler/manta/MantaPrivateHandler.d.ts +30 -0
  79. package/services/chain-service/handler/manta/MantaPrivateHandler.js +140 -0
  80. package/services/chain-service/handler/types.d.ts +2 -0
  81. package/services/chain-service/index.d.ts +7 -3
  82. package/services/chain-service/index.js +56 -7
  83. package/services/chain-service/utils.d.ts +3 -0
  84. package/services/chain-service/utils.js +28 -0
  85. package/services/event-service/types.d.ts +3 -0
  86. package/services/event-service/types.js +3 -1
  87. package/services/request-service/handler/AuthRequestHandler.d.ts +0 -1
  88. package/services/request-service/handler/AuthRequestHandler.js +5 -10
  89. package/services/request-service/handler/SubstrateRequestHandler.d.ts +1 -1
  90. package/services/request-service/handler/SubstrateRequestHandler.js +2 -2
  91. package/services/request-service/handler/WalletConnectRequestHandler.d.ts +15 -0
  92. package/services/request-service/handler/WalletConnectRequestHandler.js +62 -0
  93. package/services/request-service/index.d.ts +7 -2
  94. package/services/request-service/index.js +24 -6
  95. package/services/storage-service/DatabaseService.d.ts +10 -1
  96. package/services/storage-service/DatabaseService.js +31 -1
  97. package/services/storage-service/databases/index.d.ts +2 -0
  98. package/services/storage-service/databases/index.js +3 -0
  99. package/services/storage-service/db-stores/MantaPay.d.ts +9 -0
  100. package/services/storage-service/db-stores/MantaPay.js +32 -0
  101. package/services/transaction-service/helpers/index.d.ts +1 -1
  102. package/services/transaction-service/helpers/index.js +2 -2
  103. package/services/transaction-service/index.js +2 -1
  104. package/services/transaction-service/types.d.ts +2 -1
  105. package/services/wallet-connect-service/constants.d.ts +11 -0
  106. package/services/wallet-connect-service/constants.js +23 -0
  107. package/services/wallet-connect-service/handler/Eip155RequestHandler.d.ts +8 -0
  108. package/services/wallet-connect-service/handler/Eip155RequestHandler.js +106 -0
  109. package/services/wallet-connect-service/handler/PolkadotRequestHandler.d.ts +8 -0
  110. package/services/wallet-connect-service/handler/PolkadotRequestHandler.js +114 -0
  111. package/services/wallet-connect-service/helpers.d.ts +12 -0
  112. package/services/wallet-connect-service/helpers.js +67 -0
  113. package/services/wallet-connect-service/index.d.ts +20 -0
  114. package/services/wallet-connect-service/index.js +265 -0
  115. package/services/wallet-connect-service/types.d.ts +46 -0
  116. package/services/wallet-connect-service/types.js +20 -0
  117. package/utils/array.d.ts +1 -0
  118. package/utils/array.js +10 -0
  119. package/utils/environment.d.ts +2 -0
  120. package/utils/environment.js +59 -0
  121. package/utils/index.d.ts +4 -0
  122. package/utils/index.js +10 -2
  123. package/utils/lazy.d.ts +2 -0
  124. package/utils/lazy.js +43 -0
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.MantaPrivateHandler = void 0;
7
+ var _mantaExtensionSdk = require("manta-extension-sdk");
8
+ var _rxjs = require("rxjs");
9
+ // Copyright 2019-2022 @subwallet/extension-base authors & contributors
10
+ // SPDX-License-Identifier: Apache-2.0
11
+
12
+ class MantaPrivateHandler {
13
+ _privateWallet = undefined;
14
+ syncStateSubject = new _rxjs.Subject();
15
+ constructor(dbService) {
16
+ this.dbService = dbService;
17
+ this.syncState = {
18
+ isSyncing: false,
19
+ progress: 0
20
+ };
21
+ this.syncStateSubject.next(this.syncState);
22
+ }
23
+ setCurrentAddress(address) {
24
+ this.currentAddress = address;
25
+ }
26
+ getSyncState() {
27
+ return this.syncState;
28
+ }
29
+ get privateWallet() {
30
+ return this._privateWallet;
31
+ }
32
+ subscribeSyncState() {
33
+ return this.syncStateSubject;
34
+ }
35
+ async updateMantaPayConfig(address, chain, changes) {
36
+ await this.dbService.updateMantaPayData(`config_${chain}_${address}`, changes);
37
+ }
38
+ async saveMantaPayConfig(config) {
39
+ await this.dbService.setMantaPayData({
40
+ key: `config_${config.chain}_${config.address}`,
41
+ ...config
42
+ });
43
+ }
44
+ async getMantaPayConfig(address, chain) {
45
+ return this.dbService.getMantaPayData(`config_${chain}_${address}`);
46
+ }
47
+ async getMantaPayFirstConfig(chain) {
48
+ return this.dbService.getMantaPayFirstConfig(chain);
49
+ }
50
+ async deleteMantaPayConfig(address, chain) {
51
+ return this.dbService.deleteMantaPayConfig(`config_${chain}_${address}`);
52
+ }
53
+ async saveMantaAuthContext(context) {
54
+ await this.dbService.setMantaPayData({
55
+ key: `authContext_${context.chain}_${context.address}`,
56
+ ...context
57
+ });
58
+ }
59
+ async getMantaAuthContext(address, chain) {
60
+ return this.dbService.getMantaPayData(`authContext_${chain}_${address}`);
61
+ }
62
+ async deleteMantaAuthContext(address, chain) {
63
+ return this.dbService.deleteMantaPayConfig(`authContext_${chain}_${address}`);
64
+ }
65
+ async saveLedgerState(palletName, network, data) {
66
+ try {
67
+ const suffix = this.currentAddress ? `_${this.currentAddress}` : '';
68
+ await this.dbService.setMantaPayData({
69
+ key: `storage_state_${palletName}_${network}${suffix}`,
70
+ ...data
71
+ });
72
+ } catch (e) {
73
+ console.error('manta-pay', e);
74
+ return false;
75
+ }
76
+ return true;
77
+ }
78
+ async getLedgerState(palletName, network) {
79
+ let result;
80
+ try {
81
+ const suffix = this.currentAddress ? `_${this.currentAddress}` : '';
82
+
83
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
84
+ result = await this.dbService.getMantaPayData(`storage_state_${palletName}_${network}${suffix}`);
85
+ } catch (e) {
86
+ console.error(e);
87
+ }
88
+
89
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
90
+ return result || null;
91
+ }
92
+ async initMantaPay(providerUrl, network) {
93
+ const networkParam = network.charAt(0).toUpperCase() + network.slice(1); // Manta || Calamari || Dolphin
94
+
95
+ const baseWallet = await _mantaExtensionSdk.BaseWallet.init({
96
+ apiEndpoint: providerUrl,
97
+ loggingEnabled: false,
98
+ provingFilePath: './manta-pay/proving',
99
+ parametersFilePath: './manta-pay/parameters',
100
+ saveStorageStateToLocal: this.saveLedgerState.bind(this),
101
+ getStorageStateFromLocal: this.getLedgerState.bind(this)
102
+ });
103
+ this._privateWallet = _mantaExtensionSdk.MantaPayWallet.init(networkParam, baseWallet);
104
+ return this._privateWallet.api;
105
+ }
106
+ async getCurrentLedgerState() {
107
+ var _this$_privateWallet;
108
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
109
+ const ledgerState = await this.getLedgerState('mantaPay', 'Calamari');
110
+ if (!ledgerState) {
111
+ return 0;
112
+ }
113
+
114
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
115
+ return await ((_this$_privateWallet = this._privateWallet) === null || _this$_privateWallet === void 0 ? void 0 : _this$_privateWallet.getLedgerCurrentCount(ledgerState.checkpoint));
116
+ }
117
+ setSyncState(data) {
118
+ this.syncState = data;
119
+ this.syncStateSubject.next(this.syncState);
120
+ }
121
+ async subscribeSyncProgress() {
122
+ var _this$_privateWallet2;
123
+ const ledgerTotalCount = await ((_this$_privateWallet2 = this._privateWallet) === null || _this$_privateWallet2 === void 0 ? void 0 : _this$_privateWallet2.getLedgerTotalCount());
124
+ const interval = setInterval(() => {
125
+ this.getCurrentLedgerState().then(currentCount => {
126
+ const progress = Math.floor(currentCount / ledgerTotalCount * 100);
127
+ if (progress === 100) {
128
+ this.syncState = {
129
+ isSyncing: false,
130
+ progress
131
+ };
132
+ clearInterval(interval);
133
+ } else {
134
+ this.syncState = {
135
+ isSyncing: true,
136
+ progress
137
+ };
138
+ }
139
+ this.syncStateSubject.next(this.syncState);
140
+ }).catch(console.error);
141
+ }, 1000);
142
+ return () => {
143
+ interval && clearInterval(interval);
144
+ };
145
+ }
146
+ }
147
+ exports.MantaPrivateHandler = MantaPrivateHandler;
@@ -9,6 +9,7 @@ var _chainList = require("@subwallet/chain-list");
9
9
  var _types = require("@subwallet/chain-list/types");
10
10
  var _constants = require("@subwallet/extension-base/services/chain-service/constants");
11
11
  var _EvmChainHandler = require("@subwallet/extension-base/services/chain-service/handler/EvmChainHandler");
12
+ var _MantaPrivateHandler = require("@subwallet/extension-base/services/chain-service/handler/manta/MantaPrivateHandler");
12
13
  var _SubstrateChainHandler = require("@subwallet/extension-base/services/chain-service/handler/SubstrateChainHandler");
13
14
  var _types2 = require("@subwallet/extension-base/services/chain-service/handler/types");
14
15
  var _types3 = require("@subwallet/extension-base/services/chain-service/types");
@@ -29,6 +30,10 @@ class ChainService {
29
30
  };
30
31
  lockChainInfoMap = false; // prevent unwanted changes (edit, enable, disable) to chainInfoMap
31
32
 
33
+ get mantaPay() {
34
+ return this.mantaChainHandler;
35
+ }
36
+
32
37
  // TODO: consider BehaviorSubject
33
38
  chainInfoMapSubject = new _rxjs.Subject();
34
39
  chainStateMapSubject = new _rxjs.Subject();
@@ -42,6 +47,10 @@ class ChainService {
42
47
  constructor(dbService, eventService) {
43
48
  this.dbService = dbService;
44
49
  this.eventService = eventService;
50
+ this.substrateChainHandler = new _SubstrateChainHandler.SubstrateChainHandler();
51
+ this.evmChainHandler = new _EvmChainHandler.EvmChainHandler();
52
+ this.mantaChainHandler = new _MantaPrivateHandler.MantaPrivateHandler(dbService);
53
+ this.chainInfoMapSubject.next(this.dataMap.chainInfoMap);
45
54
  this.chainStateMapSubject.next(this.dataMap.chainStateMap);
46
55
  this.chainInfoMapSubject.next(this.dataMap.chainInfoMap);
47
56
  this.assetRegistrySubject.next(this.dataMap.assetRegistry);
@@ -225,6 +234,15 @@ class ChainService {
225
234
  getAssetBySlug(slug) {
226
235
  return this.getAssetRegistry()[slug];
227
236
  }
237
+ getMantaZkAssets(chain) {
238
+ const result = {};
239
+ Object.values(this.getAssetRegistry()).forEach(chainAsset => {
240
+ if (chainAsset.originChain === chain && (0, _utils._isAssetFungibleToken)(chainAsset) && chainAsset.symbol.startsWith(_constants._ZK_ASSET_PREFIX)) {
241
+ result[chainAsset.slug] = chainAsset;
242
+ }
243
+ });
244
+ return result;
245
+ }
228
246
  getFungibleTokensByChain(chainSlug) {
229
247
  let checkActive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
230
248
  const result = {};
@@ -415,11 +433,21 @@ class ChainService {
415
433
  }
416
434
  };
417
435
  if (chainInfo.substrateInfo !== null && chainInfo.substrateInfo !== undefined) {
418
- const chainApi = await this.substrateChainHandler.initApi(chainInfo.slug, endpoint, {
419
- providerName,
420
- onUpdateStatus
421
- });
422
- this.substrateChainHandler.setSubstrateApi(chainInfo.slug, chainApi);
436
+ if (_constants._MANTA_ZK_CHAIN_GROUP.includes(chainInfo.slug)) {
437
+ const apiPromise = await this.mantaChainHandler.initMantaPay(endpoint, chainInfo.slug);
438
+ const chainApi = await this.substrateChainHandler.initApi(chainInfo.slug, endpoint, {
439
+ providerName,
440
+ externalApiPromise: apiPromise,
441
+ onUpdateStatus
442
+ });
443
+ this.substrateChainHandler.setSubstrateApi(chainInfo.slug, chainApi);
444
+ } else {
445
+ const chainApi = await this.substrateChainHandler.initApi(chainInfo.slug, endpoint, {
446
+ providerName,
447
+ onUpdateStatus
448
+ });
449
+ this.substrateChainHandler.setSubstrateApi(chainInfo.slug, chainApi);
450
+ }
423
451
  }
424
452
  if (chainInfo.evmInfo !== null && chainInfo.evmInfo !== undefined) {
425
453
  const chainApi = await this.evmChainHandler.initApi(chainInfo.slug, endpoint, {
@@ -1179,6 +1207,27 @@ class ChainService {
1179
1207
  });
1180
1208
  this.store.set('AssetSetting', assetSettings);
1181
1209
  }
1210
+ setMantaZkAssetSettings(visible) {
1211
+ const zkAssetSettings = {};
1212
+ Object.values(this.dataMap.assetRegistry).forEach(asset => {
1213
+ if ((0, _utils._isMantaZkAsset)(asset)) {
1214
+ zkAssetSettings[asset.slug] = {
1215
+ visible
1216
+ };
1217
+ }
1218
+ });
1219
+ this.store.get('AssetSetting', storedAssetSettings => {
1220
+ const newAssetSettings = {
1221
+ ...storedAssetSettings,
1222
+ ...zkAssetSettings
1223
+ };
1224
+ this.store.set('AssetSetting', newAssetSettings);
1225
+ this.assetSettingSubject.next(newAssetSettings);
1226
+ Object.keys(zkAssetSettings).forEach(slug => {
1227
+ this.eventService.emit('asset.updateState', slug);
1228
+ });
1229
+ });
1230
+ }
1182
1231
  async getStoreAssetSettings() {
1183
1232
  return new Promise(resolve => {
1184
1233
  this.store.get('AssetSetting', resolve);
@@ -51,6 +51,7 @@ exports._isCustomProvider = _isCustomProvider;
51
51
  exports._isEqualContractAddress = _isEqualContractAddress;
52
52
  exports._isEqualSmartContractAsset = _isEqualSmartContractAsset;
53
53
  exports._isLocalToken = _isLocalToken;
54
+ exports._isMantaZkAsset = _isMantaZkAsset;
54
55
  exports._isNativeToken = _isNativeToken;
55
56
  exports._isNativeTokenBySlug = _isNativeTokenBySlug;
56
57
  exports._isPureEvmChain = _isPureEvmChain;
@@ -65,7 +66,9 @@ exports._isTokenWasmSmartContract = _isTokenWasmSmartContract;
65
66
  exports._isXcmPathSupported = _isXcmPathSupported;
66
67
  exports._parseAssetRefKey = _parseAssetRefKey;
67
68
  exports._parseMetadataForSmartContractAsset = _parseMetadataForSmartContractAsset;
69
+ exports.findChainInfoByHalfGenesisHash = exports.findChainInfoByChainId = void 0;
68
70
  var _types = require("@subwallet/chain-list/types");
71
+ var _constants = require("@subwallet/extension-base/services/chain-service/constants");
69
72
  var _types2 = require("@subwallet/extension-base/services/chain-service/types");
70
73
  var _utilCrypto = require("@polkadot/util-crypto");
71
74
  // Copyright 2019-2022 @subwallet/extension-base
@@ -397,4 +400,33 @@ function _isCustomProvider(providerKey) {
397
400
  }
398
401
  function _generateCustomProviderKey(index) {
399
402
  return `${_types2._CUSTOM_PREFIX}provider-${index}`;
403
+ }
404
+ const findChainInfoByHalfGenesisHash = (chainMap, halfGenesisHash) => {
405
+ if (!halfGenesisHash) {
406
+ return null;
407
+ }
408
+ for (const chainInfo of Object.values(chainMap)) {
409
+ var _getSubstrateGenesisH;
410
+ if (((_getSubstrateGenesisH = _getSubstrateGenesisHash(chainInfo)) === null || _getSubstrateGenesisH === void 0 ? void 0 : _getSubstrateGenesisH.toLowerCase().substring(2, 2 + 32)) === halfGenesisHash.toLowerCase()) {
411
+ return chainInfo;
412
+ }
413
+ }
414
+ return null;
415
+ };
416
+ exports.findChainInfoByHalfGenesisHash = findChainInfoByHalfGenesisHash;
417
+ const findChainInfoByChainId = (chainMap, chainId) => {
418
+ if (!chainId) {
419
+ return null;
420
+ }
421
+ for (const chainInfo of Object.values(chainMap)) {
422
+ var _chainInfo$evmInfo5;
423
+ if (((_chainInfo$evmInfo5 = chainInfo.evmInfo) === null || _chainInfo$evmInfo5 === void 0 ? void 0 : _chainInfo$evmInfo5.evmChainId) === chainId) {
424
+ return chainInfo;
425
+ }
426
+ }
427
+ return null;
428
+ };
429
+ exports.findChainInfoByChainId = findChainInfoByChainId;
430
+ function _isMantaZkAsset(chainAsset) {
431
+ return _constants._MANTA_ZK_CHAIN_GROUP.includes(chainAsset.originChain) && chainAsset.symbol.startsWith(_constants._ZK_ASSET_PREFIX);
400
432
  }
@@ -7,5 +7,7 @@ exports.COMMON_RELOAD_EVENTS = void 0;
7
7
  // Copyright 2019-2022 @subwallet/extension-base
8
8
  // SPDX-License-Identifier: Apache-2.0
9
9
 
10
- const COMMON_RELOAD_EVENTS = ['account.updateCurrent', 'asset.updateState', 'account.add', 'chain.updateState', 'account.remove', 'chain.add'];
10
+ const COMMON_RELOAD_EVENTS = ['account.updateCurrent', 'asset.updateState', 'account.add', 'chain.updateState', 'account.remove', 'chain.add', 'mantaPay.initSync',
11
+ // TODO: re-check this
12
+ 'mantaPay.enable'];
11
13
  exports.COMMON_RELOAD_EVENTS = COMMON_RELOAD_EVENTS;
@@ -31,11 +31,6 @@ class AuthRequestHandler {
31
31
  this.#requestService = requestService;
32
32
  this.#chainService = chainService;
33
33
  }
34
- stripUrl(url) {
35
- (0, _util.assert)(url && (url.startsWith('http:') || url.startsWith('https:') || url.startsWith('ipfs:') || url.startsWith('ipns:')), `Invalid url ${url}, expected to start with http: or https: or ipfs: or ipns:`);
36
- const parts = url.split('/');
37
- return parts[2];
38
- }
39
34
  getAddressList() {
40
35
  let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
41
36
  const addressList = Object.keys(this.keyringService.accounts);
@@ -172,7 +167,7 @@ class AuthRequestHandler {
172
167
  if (value) {
173
168
  authorizeList = value;
174
169
  }
175
- const existed = authorizeList[this.stripUrl(url)];
170
+ const existed = authorizeList[(0, _utils2.stripUrl)(url)];
176
171
 
177
172
  // On cancel don't save anything
178
173
  if (isCancelled) {
@@ -181,7 +176,7 @@ class AuthRequestHandler {
181
176
  cb();
182
177
  return;
183
178
  }
184
- authorizeList[this.stripUrl(url)] = {
179
+ authorizeList[(0, _utils2.stripUrl)(url)] = {
185
180
  count: 0,
186
181
  id: idStr,
187
182
  isAllowed,
@@ -222,7 +217,7 @@ class AuthRequestHandler {
222
217
  if (!authList) {
223
218
  authList = {};
224
219
  }
225
- const idStr = this.stripUrl(url);
220
+ const idStr = (0, _utils2.stripUrl)(url);
226
221
  // Do not enqueue duplicate authorization requests.
227
222
  const isDuplicate = Object.values(this.#authRequestsV2).some(request => request.idStr === idStr);
228
223
  (0, _util.assert)(!isDuplicate, `The source ${url} has a pending authorization request`);
@@ -280,7 +275,7 @@ class AuthRequestHandler {
280
275
  return this.authorizeUrlSubject;
281
276
  }
282
277
  ensureUrlAuthorizedV2(url) {
283
- const idStr = this.stripUrl(url);
278
+ const idStr = (0, _utils2.stripUrl)(url);
284
279
  return new Promise((resolve, reject) => {
285
280
  this.getAuthorize(value => {
286
281
  if (!value) {
@@ -67,8 +67,8 @@ class SubstrateRequestHandler {
67
67
  get numSubstrateRequests() {
68
68
  return Object.keys(this.#substrateRequests).length;
69
69
  }
70
- sign(url, request, account) {
71
- const id = (0, _getId.getId)();
70
+ sign(url, request, account, _id) {
71
+ const id = _id || (0, _getId.getId)();
72
72
  return new Promise((resolve, reject) => {
73
73
  this.#substrateRequests[id] = {
74
74
  ...this.signComplete(id, resolve, reject),
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _rxjs = require("rxjs");
8
+ // Copyright 2019-2022 @subwallet/extension-base authors & contributors
9
+ // SPDX-License-Identifier: Apache-2.0
10
+
11
+ // WC = WalletConnect
12
+ class WalletConnectRequestHandler {
13
+ #requestService;
14
+ #walletConnectSessionRequests = {};
15
+ connectWCSubject = new _rxjs.BehaviorSubject([]);
16
+ constructor(requestService) {
17
+ this.#requestService = requestService;
18
+ }
19
+ get allConnectWCRequests() {
20
+ return Object.values(this.#walletConnectSessionRequests)
21
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
22
+ .map(_ref => {
23
+ let {
24
+ reject,
25
+ resolve,
26
+ ...data
27
+ } = _ref;
28
+ return data;
29
+ });
30
+ }
31
+ get numConnectWCRequests() {
32
+ return Object.keys(this.#walletConnectSessionRequests).length;
33
+ }
34
+ getConnectWCRequest(id) {
35
+ return this.#walletConnectSessionRequests[id];
36
+ }
37
+ updateIconConnectWC(shouldClose) {
38
+ this.connectWCSubject.next(this.allConnectWCRequests);
39
+ this.#requestService.updateIconV2(shouldClose);
40
+ }
41
+ connectWCComplete = id => {
42
+ const complete = shouldClose => {
43
+ delete this.#walletConnectSessionRequests[id];
44
+ this.updateIconConnectWC(shouldClose);
45
+ };
46
+ return {
47
+ reject: () => {
48
+ complete(true);
49
+ },
50
+ resolve: () => {
51
+ complete(true);
52
+ }
53
+ };
54
+ };
55
+ addConnectWCRequest(request) {
56
+ const id = request.id;
57
+ this.#walletConnectSessionRequests[id] = {
58
+ ...this.connectWCComplete(id),
59
+ ...request
60
+ };
61
+ this.updateIconConnectWC();
62
+ this.#requestService.popupOpen();
63
+ }
64
+ resetWallet() {
65
+ for (const request of Object.values(this.#walletConnectSessionRequests)) {
66
+ request.reject(new Error('Reset wallet'));
67
+ }
68
+ this.connectWCSubject.next([]);
69
+ }
70
+ }
71
+ exports.default = WalletConnectRequestHandler;
@@ -10,6 +10,7 @@ var _EvmRequestHandler = _interopRequireDefault(require("@subwallet/extension-ba
10
10
  var _MetadataRequestHandler = _interopRequireDefault(require("@subwallet/extension-base/services/request-service/handler/MetadataRequestHandler"));
11
11
  var _PopupHandler = _interopRequireDefault(require("@subwallet/extension-base/services/request-service/handler/PopupHandler"));
12
12
  var _SubstrateRequestHandler = _interopRequireDefault(require("@subwallet/extension-base/services/request-service/handler/SubstrateRequestHandler"));
13
+ var _WalletConnectRequestHandler = _interopRequireDefault(require("@subwallet/extension-base/services/request-service/handler/WalletConnectRequestHandler"));
13
14
  // Copyright 2019-2022 @subwallet/extension-base authors & contributors
14
15
  // SPDX-License-Identifier: Apache-2.0
15
16
 
@@ -21,6 +22,7 @@ class RequestService {
21
22
  #authRequestHandler;
22
23
  #substrateRequestHandler;
23
24
  #evmRequestHandler;
25
+ #walletConnectRequestHandler;
24
26
 
25
27
  // Common
26
28
  constructor(chainService, settingService, keyringService) {
@@ -32,6 +34,7 @@ class RequestService {
32
34
  this.#authRequestHandler = new _AuthRequestHandler.default(this, this.#chainService, this.keyringService);
33
35
  this.#substrateRequestHandler = new _SubstrateRequestHandler.default(this);
34
36
  this.#evmRequestHandler = new _EvmRequestHandler.default(this);
37
+ this.#walletConnectRequestHandler = new _WalletConnectRequestHandler.default(this);
35
38
 
36
39
  // Reset icon on start service
37
40
  this.updateIconV2();
@@ -42,9 +45,6 @@ class RequestService {
42
45
  updateIconV2(shouldClose) {
43
46
  this.#popupHandler.updateIconV2(shouldClose);
44
47
  }
45
- stripUrl(url) {
46
- return this.#authRequestHandler.stripUrl(url);
47
- }
48
48
  getAddressList() {
49
49
  let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
50
50
  const addressList = Object.keys(this.keyringService.accounts);
@@ -136,8 +136,8 @@ class RequestService {
136
136
  get allSubstrateRequests() {
137
137
  return this.#substrateRequestHandler.allSubstrateRequests;
138
138
  }
139
- sign(url, request, account) {
140
- return this.#substrateRequestHandler.sign(url, request, account);
139
+ sign(url, request, account, id) {
140
+ return this.#substrateRequestHandler.sign(url, request, account, id);
141
141
  }
142
142
  get numSubstrateRequests() {
143
143
  return this.#substrateRequestHandler.numSubstrateRequests;
@@ -170,15 +170,33 @@ class RequestService {
170
170
  return this.#evmRequestHandler.updateConfirmation(id, type, payload, options, validator);
171
171
  }
172
172
 
173
+ // Wallet Connect requests
174
+ getConnectWCRequest(id) {
175
+ return this.#walletConnectRequestHandler.getConnectWCRequest(id);
176
+ }
177
+ get connectWCSubject() {
178
+ return this.#walletConnectRequestHandler.connectWCSubject;
179
+ }
180
+ get allConnectWCRequests() {
181
+ return this.#walletConnectRequestHandler.allConnectWCRequests;
182
+ }
183
+ get numConnectWCRequests() {
184
+ return this.#walletConnectRequestHandler.numConnectWCRequests;
185
+ }
186
+ addConnectWCRequest(request) {
187
+ return this.#walletConnectRequestHandler.addConnectWCRequest(request);
188
+ }
189
+
173
190
  // General methods
174
191
  get numRequests() {
175
- return this.numMetaRequests + this.numAuthRequests + this.numSubstrateRequests + this.numEvmRequests;
192
+ return this.numMetaRequests + this.numAuthRequests + this.numSubstrateRequests + this.numEvmRequests + this.numConnectWCRequests;
176
193
  }
177
194
  resetWallet() {
178
195
  this.#authRequestHandler.resetWallet();
179
196
  this.#substrateRequestHandler.resetWallet();
180
197
  this.#evmRequestHandler.resetWallet();
181
198
  this.#metadataRequestHandler.resetWallet();
199
+ this.#walletConnectRequestHandler.resetWallet();
182
200
  }
183
201
  }
184
202
  exports.default = RequestService;
@@ -9,6 +9,7 @@ var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
9
9
  var _databases = _interopRequireDefault(require("@subwallet/extension-base/services/storage-service/databases"));
10
10
  var _dbStores = require("@subwallet/extension-base/services/storage-service/db-stores");
11
11
  var _ChainStakingMetadata = _interopRequireDefault(require("@subwallet/extension-base/services/storage-service/db-stores/ChainStakingMetadata"));
12
+ var _MantaPay = _interopRequireDefault(require("@subwallet/extension-base/services/storage-service/db-stores/MantaPay"));
12
13
  var _NominatorMetadata = _interopRequireDefault(require("@subwallet/extension-base/services/storage-service/db-stores/NominatorMetadata"));
13
14
  var _utils = require("@subwallet/extension-base/utils");
14
15
  var _util = require("@polkadot/util");
@@ -39,7 +40,8 @@ class DatabaseService {
39
40
  asset: new _dbStores.AssetStore(this._db.asset),
40
41
  // staking
41
42
  chainStakingMetadata: new _ChainStakingMetadata.default(this._db.chainStakingMetadata),
42
- nominatorMetadata: new _NominatorMetadata.default(this._db.nominatorMetadata)
43
+ nominatorMetadata: new _NominatorMetadata.default(this._db.nominatorMetadata),
44
+ mantaPay: new _MantaPay.default(this._db.mantaPay)
43
45
  };
44
46
  }
45
47
  async updatePriceStore(priceData) {
@@ -237,5 +239,33 @@ class DatabaseService {
237
239
  });
238
240
  });
239
241
  }
242
+ async setMantaPayData(data) {
243
+ await this._db.mantaPay.put(data); // just override if exist
244
+ }
245
+
246
+ async updateMantaPayData(key, data) {
247
+ await this._db.mantaPay.update(key, data); // just override if exist
248
+ }
249
+
250
+ async getMantaPayData(key) {
251
+ return this._db.mantaPay.get({
252
+ key
253
+ });
254
+ }
255
+ async deleteMantaPayConfig(key) {
256
+ return this.stores.mantaPay.deleteRecord(key);
257
+ }
258
+ subscribeMantaPayConfig(chain, callback) {
259
+ this.stores.mantaPay.subscribeMantaPayConfig(chain).subscribe({
260
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
261
+ next: data => callback && callback(data)
262
+ });
263
+ }
264
+ async getMantaPayConfig(chain) {
265
+ return this.stores.mantaPay.getConfig(chain);
266
+ }
267
+ async getMantaPayFirstConfig(chain) {
268
+ return this.stores.mantaPay.getFirstConfig(chain);
269
+ }
240
270
  }
241
271
  exports.default = DatabaseService;
@@ -36,6 +36,9 @@ class KoniDatabase extends _dexie.default {
36
36
  this.conditionalVersion(2, {
37
37
  metadata: 'genesisHash, chain'
38
38
  });
39
+ this.conditionalVersion(3, {
40
+ mantaPay: 'key, chain'
41
+ });
39
42
  }
40
43
  conditionalVersion(version, schema, upgrade) {
41
44
  if (this.schemaVersion != null && this.schemaVersion < version) {
@@ -0,0 +1,40 @@
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 _BaseStore = _interopRequireDefault(require("@subwallet/extension-base/services/storage-service/db-stores/BaseStore"));
9
+ var _dexie = require("dexie");
10
+ // Copyright 2019-2022 @subwallet/extension-base authors & contributors
11
+ // SPDX-License-Identifier: Apache-2.0
12
+
13
+ class MantaPayStore extends _BaseStore.default {
14
+ async getAll() {
15
+ return this.table.toArray();
16
+ }
17
+ subscribeMantaPayConfig(chain) {
18
+ return (0, _dexie.liveQuery)(
19
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return
20
+ () => this.table.where({
21
+ chain
22
+ }).filter(data => (data === null || data === void 0 ? void 0 : data.key) && (data === null || data === void 0 ? void 0 : data.key.startsWith('config'))).toArray());
23
+ }
24
+ getConfig(chain) {
25
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return
26
+ return this.table.where({
27
+ chain
28
+ }).filter(data => (data === null || data === void 0 ? void 0 : data.key) && (data === null || data === void 0 ? void 0 : data.key.startsWith('config'))).toArray();
29
+ }
30
+ getFirstConfig(chain) {
31
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return
32
+ return this.table.where({
33
+ chain
34
+ }).filter(data => (data === null || data === void 0 ? void 0 : data.key) && (data === null || data === void 0 ? void 0 : data.key.startsWith('config'))).first();
35
+ }
36
+ deleteRecord(key) {
37
+ return this.table.where('key').equals(key).delete();
38
+ }
39
+ }
40
+ exports.default = MantaPayStore;
@@ -10,8 +10,9 @@ var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
10
10
 
11
11
  let transactionCount = 0;
12
12
  let validationCount = 0;
13
- const getTransactionId = (chainType, chain, isInternal) => {
14
- return `${isInternal ? 'internal' : 'external'}.${chainType}.${chain}.${Date.now()}.${++transactionCount}`;
13
+ const getTransactionId = function (chainType, chain, isInternal) {
14
+ let isWalletConnect = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
15
+ return `${isInternal ? 'internal' : !isWalletConnect ? 'external' : 'wallet-connect'}.${chainType}.${chain}.${Date.now()}.${++transactionCount}`;
15
16
  };
16
17
  exports.getTransactionId = getTransactionId;
17
18
  const getValidationId = (chainType, chain) => {
@@ -17,6 +17,7 @@ var _constants4 = require("@subwallet/extension-base/services/transaction-servic
17
17
  var _eventParser = require("@subwallet/extension-base/services/transaction-service/event-parser");
18
18
  var _helpers = require("@subwallet/extension-base/services/transaction-service/helpers");
19
19
  var _utils2 = require("@subwallet/extension-base/services/transaction-service/utils");
20
+ var _helpers2 = require("@subwallet/extension-base/services/wallet-connect-service/helpers");
20
21
  var _eth = require("@subwallet/extension-base/utils/eth");
21
22
  var _mergeTransactionAndSignature = require("@subwallet/extension-base/utils/eth/mergeTransactionAndSignature");
22
23
  var _parseTransaction = require("@subwallet/extension-base/utils/eth/parseTransaction");
@@ -177,7 +178,7 @@ class TransactionService {
177
178
  }
178
179
  fillTransactionDefaultInfo(transaction) {
179
180
  const isInternal = !transaction.url;
180
- const transactionId = (0, _helpers.getTransactionId)(transaction.chainType, transaction.chain, isInternal);
181
+ const transactionId = (0, _helpers.getTransactionId)(transaction.chainType, transaction.chain, isInternal, (0, _helpers2.isWalletConnectRequest)(transaction.id));
181
182
  return {
182
183
  ...transaction,
183
184
  createdAt: new Date().getTime(),