@subwallet/extension-base 1.0.13-0 → 1.1.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 (67) hide show
  1. package/background/KoniTypes.d.ts +37 -0
  2. package/background/KoniTypes.js +8 -1
  3. package/background/handlers/Extension.js +17 -2
  4. package/background/types.d.ts +6 -1
  5. package/cjs/background/KoniTypes.js +10 -2
  6. package/cjs/background/handlers/Extension.js +22 -6
  7. package/cjs/constants/index.js +7 -1
  8. package/cjs/defaults.js +1 -1
  9. package/cjs/koni/api/dotsama/balance.js +5 -0
  10. package/cjs/koni/api/dotsama/transfer.js +6 -0
  11. package/cjs/koni/background/cron.js +12 -1
  12. package/cjs/koni/background/handlers/Extension.js +324 -147
  13. package/cjs/koni/background/handlers/State.js +222 -50
  14. package/cjs/koni/background/subscription.js +3 -0
  15. package/cjs/packageInfo.js +1 -1
  16. package/cjs/services/chain-service/constants.js +10 -4
  17. package/cjs/services/chain-service/handler/SubstrateApi.js +2 -1
  18. package/cjs/services/chain-service/handler/SubstrateChainHandler.js +3 -1
  19. package/cjs/services/chain-service/handler/manta/MantaPrivateHandler.js +147 -0
  20. package/cjs/services/chain-service/index.js +54 -5
  21. package/cjs/services/chain-service/utils.js +6 -1
  22. package/cjs/services/event-service/types.js +3 -1
  23. package/cjs/services/storage-service/DatabaseService.js +31 -1
  24. package/cjs/services/storage-service/databases/index.js +3 -0
  25. package/cjs/services/storage-service/db-stores/MantaPay.js +40 -0
  26. package/cjs/utils/index.js +12 -0
  27. package/cjs/utils/lazy.js +52 -0
  28. package/constants/index.d.ts +2 -0
  29. package/constants/index.js +2 -0
  30. package/defaults.d.ts +1 -1
  31. package/defaults.js +1 -1
  32. package/koni/api/dotsama/balance.js +6 -1
  33. package/koni/api/dotsama/transfer.js +7 -1
  34. package/koni/background/cron.d.ts +1 -0
  35. package/koni/background/cron.js +13 -2
  36. package/koni/background/handlers/Extension.d.ts +5 -0
  37. package/koni/background/handlers/Extension.js +186 -11
  38. package/koni/background/handlers/State.d.ts +15 -3
  39. package/koni/background/handlers/State.js +224 -49
  40. package/koni/background/subscription.js +3 -0
  41. package/package.json +22 -5
  42. package/packageInfo.js +1 -1
  43. package/services/chain-service/constants.d.ts +3 -0
  44. package/services/chain-service/constants.js +5 -2
  45. package/services/chain-service/handler/SubstrateApi.d.ts +1 -1
  46. package/services/chain-service/handler/SubstrateApi.js +2 -1
  47. package/services/chain-service/handler/SubstrateChainHandler.d.ts +1 -1
  48. package/services/chain-service/handler/SubstrateChainHandler.js +3 -1
  49. package/services/chain-service/handler/manta/MantaPrivateHandler.d.ts +30 -0
  50. package/services/chain-service/handler/manta/MantaPrivateHandler.js +140 -0
  51. package/services/chain-service/handler/types.d.ts +2 -0
  52. package/services/chain-service/index.d.ts +7 -3
  53. package/services/chain-service/index.js +56 -7
  54. package/services/chain-service/utils.d.ts +1 -0
  55. package/services/chain-service/utils.js +5 -1
  56. package/services/event-service/types.d.ts +3 -0
  57. package/services/event-service/types.js +3 -1
  58. package/services/storage-service/DatabaseService.d.ts +10 -1
  59. package/services/storage-service/DatabaseService.js +31 -1
  60. package/services/storage-service/databases/index.d.ts +2 -0
  61. package/services/storage-service/databases/index.js +3 -0
  62. package/services/storage-service/db-stores/MantaPay.d.ts +9 -0
  63. package/services/storage-service/db-stores/MantaPay.js +32 -0
  64. package/utils/index.d.ts +1 -0
  65. package/utils/index.js +2 -1
  66. package/utils/lazy.d.ts +2 -0
  67. package/utils/lazy.js +43 -0
@@ -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;
@@ -67,6 +68,7 @@ exports._parseAssetRefKey = _parseAssetRefKey;
67
68
  exports._parseMetadataForSmartContractAsset = _parseMetadataForSmartContractAsset;
68
69
  exports.findChainInfoByHalfGenesisHash = exports.findChainInfoByChainId = void 0;
69
70
  var _types = require("@subwallet/chain-list/types");
71
+ var _constants = require("@subwallet/extension-base/services/chain-service/constants");
70
72
  var _types2 = require("@subwallet/extension-base/services/chain-service/types");
71
73
  var _utilCrypto = require("@polkadot/util-crypto");
72
74
  // Copyright 2019-2022 @subwallet/extension-base
@@ -424,4 +426,7 @@ const findChainInfoByChainId = (chainMap, chainId) => {
424
426
  }
425
427
  return null;
426
428
  };
427
- exports.findChainInfoByChainId = findChainInfoByChainId;
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);
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;
@@ -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;
@@ -97,6 +97,18 @@ Object.keys(_environment).forEach(function (key) {
97
97
  }
98
98
  });
99
99
  });
100
+ var _lazy = require("./lazy");
101
+ Object.keys(_lazy).forEach(function (key) {
102
+ if (key === "default" || key === "__esModule") return;
103
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
104
+ if (key in exports && exports[key] === _lazy[key]) return;
105
+ Object.defineProperty(exports, key, {
106
+ enumerable: true,
107
+ get: function () {
108
+ return _lazy[key];
109
+ }
110
+ });
111
+ });
100
112
  // Copyright 2019-2022 @subwallet/extension-base authors & contributors
101
113
  // SPDX-License-Identifier: Apache-2.0
102
114
 
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.addLazy = addLazy;
7
+ exports.removeLazy = removeLazy;
8
+ // Copyright 2019-2022 @subwallet/extension-base
9
+ // SPDX-License-Identifier: Apache-2.0
10
+
11
+ const lazyMap = {};
12
+ function removeLazy(key) {
13
+ if (lazyMap[key]) {
14
+ clearTimeout(lazyMap[key].timeout);
15
+ delete lazyMap[key];
16
+ }
17
+ }
18
+
19
+ // Add or update new lazy thread
20
+ function addLazy(key, callback) {
21
+ let lazyTime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 300;
22
+ let maxLazyTime = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 3000;
23
+ const existed = lazyMap[key];
24
+ const now = new Date().getTime();
25
+ if (existed) {
26
+ clearTimeout(existed.timeout);
27
+ lazyMap[key] = {
28
+ ...existed,
29
+ callback
30
+ };
31
+
32
+ // Fire callback if last fire is too long
33
+ if (now - existed.lastFire >= maxLazyTime) {
34
+ callback();
35
+ lazyMap[key].lastFire = now;
36
+ } else {
37
+ lazyMap[key].timeout = setTimeout(() => {
38
+ // This will be fire in the last call of lazy thread
39
+ callback();
40
+ lazyMap[key].lastFire = new Date().getTime();
41
+ removeLazy(key);
42
+ }, lazyTime);
43
+ }
44
+ } else {
45
+ // Fire callback immediately in the first time
46
+ callback();
47
+ lazyMap[key] = {
48
+ callback,
49
+ lastFire: now
50
+ };
51
+ }
52
+ }
@@ -12,6 +12,8 @@ export declare const CRON_GET_API_MAP_STATUS = 10000;
12
12
  export declare const CRON_REFRESH_CHAIN_STAKING_METADATA = 900000;
13
13
  export declare const CRON_REFRESH_CHAIN_NOMINATOR_METADATA = 1800000;
14
14
  export declare const CRON_RECOVER_HISTORY_INTERVAL = 30000;
15
+ export declare const CRON_SYNC_MANTA_PAY = 300000;
16
+ export declare const MANTA_PAY_BALANCE_INTERVAL = 30000;
15
17
  export declare const ALL_ACCOUNT_KEY = "ALL";
16
18
  export declare const ALL_NETWORK_KEY = "all";
17
19
  export declare const ALL_GENESIS_HASH: null;
@@ -15,6 +15,8 @@ export const CRON_GET_API_MAP_STATUS = 10000;
15
15
  export const CRON_REFRESH_CHAIN_STAKING_METADATA = 900000;
16
16
  export const CRON_REFRESH_CHAIN_NOMINATOR_METADATA = 1800000;
17
17
  export const CRON_RECOVER_HISTORY_INTERVAL = 30000;
18
+ export const CRON_SYNC_MANTA_PAY = 300000;
19
+ export const MANTA_PAY_BALANCE_INTERVAL = 30000;
18
20
  export const ALL_ACCOUNT_KEY = 'ALL';
19
21
  export const ALL_NETWORK_KEY = 'all';
20
22
  export const ALL_GENESIS_HASH = null;
package/defaults.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- declare const ALLOWED_PATH: readonly ["/", "/settings/security", "/accounts/connect-ledger", "/accounts/restore-json", "/accounts/new-seed-phrase"];
1
+ declare const ALLOWED_PATH: readonly ["/", "/settings/security", "/accounts/connect-ledger", "/accounts/restore-json", "/accounts/detail", "/accounts/new-seed-phrase"];
2
2
  declare const PHISHING_PAGE_REDIRECT = "/phishing-page-detected";
3
3
  declare const EXTENSION_PREFIX: string;
4
4
  declare const PORT_MOBILE: string;
package/defaults.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // Copyright 2019-2022 @polkadot/extension-base authors & contributors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
- const ALLOWED_PATH = ['/', '/settings/security', '/accounts/connect-ledger', '/accounts/restore-json', '/accounts/new-seed-phrase'];
4
+ const ALLOWED_PATH = ['/', '/settings/security', '/accounts/connect-ledger', '/accounts/restore-json', '/accounts/detail', '/accounts/new-seed-phrase'];
5
5
  const PHISHING_PAGE_REDIRECT = '/phishing-page-detected';
6
6
  const EXTENSION_PREFIX = process.env.EXTENSION_PREFIX || '';
7
7
  const PORT_MOBILE = `${EXTENSION_PREFIX}mobile`;
@@ -9,7 +9,7 @@ import { getERC20Contract } from '@subwallet/extension-base/koni/api/tokens/evm/
9
9
  import { getPSP22ContractPromise } from '@subwallet/extension-base/koni/api/tokens/wasm';
10
10
  import { getDefaultWeightV2 } from '@subwallet/extension-base/koni/api/tokens/wasm/utils';
11
11
  import { state } from '@subwallet/extension-base/koni/background/handlers';
12
- import { _BALANCE_CHAIN_GROUP, _PURE_EVM_CHAINS } from '@subwallet/extension-base/services/chain-service/constants';
12
+ import { _BALANCE_CHAIN_GROUP, _MANTA_ZK_CHAIN_GROUP, _PURE_EVM_CHAINS, _ZK_ASSET_PREFIX } from '@subwallet/extension-base/services/chain-service/constants';
13
13
  import { _checkSmartContractSupportByChain, _getChainNativeTokenSlug, _getContractAddressOfToken, _getTokenOnChainAssetId, _getTokenOnChainInfo, _isChainEvmCompatible, _isPureEvmChain, _isSubstrateRelayChain } from '@subwallet/extension-base/services/chain-service/utils';
14
14
  import { categoryAddresses, sumBN } from '@subwallet/extension-base/utils';
15
15
  import BigN from 'bignumber.js';
@@ -324,6 +324,11 @@ async function subscribeTokensAccountsPallet(addresses, chain, api, callBack, in
324
324
  }
325
325
  async function subscribeAssetsAccountPallet(addresses, chain, api, callBack) {
326
326
  const tokenMap = state.getAssetByChainAndAsset(chain, [_AssetType.LOCAL]);
327
+ Object.values(tokenMap).forEach(token => {
328
+ if (_MANTA_ZK_CHAIN_GROUP.includes(token.originChain) && token.symbol.startsWith(_ZK_ASSET_PREFIX)) {
329
+ delete tokenMap[token.slug];
330
+ }
331
+ });
327
332
  const unsubList = await Promise.all(Object.values(tokenMap).map(async tokenInfo => {
328
333
  try {
329
334
  const assetIndex = _getTokenOnChainAssetId(tokenInfo);
@@ -3,7 +3,7 @@
3
3
 
4
4
  import { getPSP22ContractPromise } from '@subwallet/extension-base/koni/api/tokens/wasm';
5
5
  import { getWasmContractGasLimit } from '@subwallet/extension-base/koni/api/tokens/wasm/utils';
6
- import { _BALANCE_TOKEN_GROUP, _TRANSFER_CHAIN_GROUP, _TRANSFER_NOT_SUPPORTED_CHAINS } from '@subwallet/extension-base/services/chain-service/constants';
6
+ import { _BALANCE_TOKEN_GROUP, _MANTA_ZK_CHAIN_GROUP, _TRANSFER_CHAIN_GROUP, _TRANSFER_NOT_SUPPORTED_CHAINS, _ZK_ASSET_PREFIX } from '@subwallet/extension-base/services/chain-service/constants';
7
7
  import { _getContractAddressOfToken, _getTokenOnChainAssetId, _getTokenOnChainInfo, _isChainEvmCompatible, _isNativeToken, _isTokenWasmSmartContract } from '@subwallet/extension-base/services/chain-service/utils';
8
8
  import { BN } from '@polkadot/util';
9
9
  function isRefCount(accountInfo) {
@@ -34,6 +34,12 @@ export async function checkSupportTransfer(networkKey, tokenInfo, substrateApiMa
34
34
  supportTransferAll: true
35
35
  };
36
36
  }
37
+ if (tokenInfo.symbol.startsWith(_ZK_ASSET_PREFIX) && _MANTA_ZK_CHAIN_GROUP.includes(tokenInfo.originChain)) {
38
+ return {
39
+ supportTransfer: false,
40
+ supportTransferAll: false
41
+ };
42
+ }
37
43
  if (_TRANSFER_NOT_SUPPORTED_CHAINS.includes(networkKey)) {
38
44
  return {
39
45
  supportTransfer: false,
@@ -24,6 +24,7 @@ export declare class KoniCron {
24
24
  removeAllCrons: () => void;
25
25
  start: () => Promise<void>;
26
26
  stop: () => Promise<void>;
27
+ syncMantaPay: () => void;
27
28
  refreshNft: (address: string, apiMap: ApiMap, smartContractNfts: _ChainAsset[], chainInfoMap: Record<string, _ChainInfo>) => () => void;
28
29
  resetNft: (newAddress: string) => void;
29
30
  resetStakingReward: () => void;
@@ -1,7 +1,7 @@
1
1
  // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
- import { CRON_REFRESH_CHAIN_STAKING_METADATA, CRON_REFRESH_NFT_INTERVAL, CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL, CRON_REFRESH_STAKING_REWARD_INTERVAL } from '@subwallet/extension-base/constants';
4
+ import { CRON_REFRESH_CHAIN_STAKING_METADATA, CRON_REFRESH_NFT_INTERVAL, CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL, CRON_REFRESH_STAKING_REWARD_INTERVAL, CRON_SYNC_MANTA_PAY } from '@subwallet/extension-base/constants';
5
5
  import { _isChainSupportEvmNft, _isChainSupportNativeNft, _isChainSupportSubstrateStaking, _isChainSupportWasmNft } from '@subwallet/extension-base/services/chain-service/utils';
6
6
  import { waitTimeout } from '@subwallet/extension-base/utils';
7
7
  import { Subject } from 'rxjs';
@@ -62,6 +62,7 @@ export class KoniCron {
62
62
  const commonReload = eventTypes.some(eventType => commonReloadEvents.includes(eventType));
63
63
  const chainUpdated = eventTypes.includes('chain.updateState');
64
64
  const stakingSubmitted = eventTypes.includes('transaction.submitStaking');
65
+ const reloadMantaPay = eventTypes.includes('mantaPay.submitTransaction') || eventTypes.includes('mantaPay.enable');
65
66
  const updatedChains = [];
66
67
  if (chainUpdated) {
67
68
  events.forEach(event => {
@@ -71,7 +72,7 @@ export class KoniCron {
71
72
  }
72
73
  });
73
74
  }
74
- if (!commonReload && !chainUpdated && !stakingSubmitted) {
75
+ if (!commonReload && !chainUpdated && !stakingSubmitted && !reloadMantaPay) {
75
76
  return;
76
77
  }
77
78
  const address = (_serviceInfo$currentA = serviceInfo.currentAccountInfo) === null || _serviceInfo$currentA === void 0 ? void 0 : _serviceInfo$currentA.address;
@@ -82,6 +83,9 @@ export class KoniCron {
82
83
  const needUpdateNft = this.needUpdateNft(chainInfoMap, updatedChains);
83
84
  const needUpdateStaking = this.needUpdateStaking(chainInfoMap, updatedChains);
84
85
 
86
+ // MantaPay
87
+ reloadMantaPay && this.removeCron('syncMantaPay');
88
+
85
89
  // NFT
86
90
  (commonReload || needUpdateNft) && this.resetNft(address);
87
91
  (commonReload || needUpdateNft) && this.removeCron('refreshNft');
@@ -99,6 +103,7 @@ export class KoniCron {
99
103
  (commonReload || needUpdateStaking || stakingSubmitted) && this.addCron('refreshStakingReward', this.refreshStakingReward(address), CRON_REFRESH_STAKING_REWARD_INTERVAL);
100
104
  (commonReload || needUpdateStaking || stakingSubmitted) && this.addCron('refreshPoolingStakingReward', this.refreshStakingRewardFastInterval(address), CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL);
101
105
  needUpdateStaking && this.addCron('updateChainStakingMetadata', this.updateChainStakingMetadata(serviceInfo.chainInfoMap, serviceInfo.chainStateMap, serviceInfo.chainApiMap.substrate), CRON_REFRESH_CHAIN_STAKING_METADATA);
106
+ reloadMantaPay && this.addCron('syncMantaPay', this.syncMantaPay, CRON_SYNC_MANTA_PAY);
102
107
  } else {
103
108
  this.setStakingRewardReady();
104
109
  }
@@ -113,6 +118,7 @@ export class KoniCron {
113
118
  this.addCron('refreshStakingReward', this.refreshStakingReward(currentAccountInfo.address), CRON_REFRESH_STAKING_REWARD_INTERVAL);
114
119
  this.addCron('refreshPoolingStakingReward', this.refreshStakingRewardFastInterval(currentAccountInfo.address), CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL);
115
120
  this.addCron('updateChainStakingMetadata', this.updateChainStakingMetadata(this.state.getChainInfoMap(), this.state.getChainStateMap(), this.state.getSubstrateApiMap()), CRON_REFRESH_CHAIN_STAKING_METADATA);
121
+ this.addCron('syncMantaPay', this.syncMantaPay, CRON_SYNC_MANTA_PAY);
116
122
  } else {
117
123
  this.setStakingRewardReady();
118
124
  }
@@ -136,6 +142,11 @@ export class KoniCron {
136
142
  this.status = 'stopped';
137
143
  return Promise.resolve();
138
144
  };
145
+ syncMantaPay = () => {
146
+ if (this.state.isMantaPayEnabled) {
147
+ this.state.syncMantaPay().catch(console.warn);
148
+ }
149
+ };
139
150
  refreshNft = (address, apiMap, smartContractNfts, chainInfoMap) => {
140
151
  return () => {
141
152
  this.subscriptions.subscribeNft(address, apiMap.substrate, apiMap.evm, smartContractNfts, chainInfoMap);
@@ -194,5 +194,10 @@ export default class KoniExtension {
194
194
  private rejectWalletConnectSession;
195
195
  private subscribeWalletConnectSessions;
196
196
  private disconnectWalletConnectSession;
197
+ private enableMantaPay;
198
+ private initSyncMantaPay;
199
+ private disableMantaPay;
200
+ private subscribeMantaPayConfig;
201
+ private subscribeMantaPaySyncState;
197
202
  handle<TMessageType extends MessageTypes>(id: string, type: TMessageType, request: RequestTypes[TMessageType], port: chrome.runtime.Port): Promise<ResponseType<TMessageType>>;
198
203
  }