@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,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.uniqueStringArray = void 0;
7
+ // Copyright 2019-2022 @subwallet/extension-base authors & contributors
8
+ // SPDX-License-Identifier: Apache-2.0
9
+
10
+ const uniqueStringArray = array => {
11
+ const map = {};
12
+ array.forEach(v => {
13
+ map[v] = v;
14
+ });
15
+ return Object.keys(map);
16
+ };
17
+ exports.uniqueStringArray = uniqueStringArray;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RuntimeInfo = void 0;
7
+ var _KoniTypes = require("../background/KoniTypes");
8
+ // Copyright 2019-2022 @polkadot/extension authors & contributors
9
+ // SPDX-License-Identifier: Apache-2.0
10
+
11
+ function detectRuntimeEnvironment() {
12
+ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
13
+ // Web environment
14
+ return {
15
+ environment: _KoniTypes.RuntimeEnvironment.Web,
16
+ version: navigator.userAgent,
17
+ host: window.location.host,
18
+ protocol: window.location.protocol
19
+ };
20
+ } else if (typeof self !== 'undefined' && typeof importScripts !== 'undefined') {
21
+ // Service Worker environment
22
+ return {
23
+ environment: _KoniTypes.RuntimeEnvironment.ServiceWorker,
24
+ version: navigator.userAgent,
25
+ host: self.location.host,
26
+ protocol: window.location.protocol
27
+ };
28
+ } else if (typeof process !== 'undefined' && process.versions && process.versions.node) {
29
+ // Node.js environment
30
+ return {
31
+ environment: _KoniTypes.RuntimeEnvironment.Node,
32
+ version: process.versions.node
33
+ };
34
+ } else if (typeof chrome !== 'undefined' && typeof chrome.runtime !== 'undefined') {
35
+ // Extension environment (Chrome)
36
+ return {
37
+ environment: _KoniTypes.RuntimeEnvironment.ExtensionChrome,
38
+ version: chrome.runtime.getManifest().version,
39
+ host: window.location.host,
40
+ protocol: window.location.protocol
41
+ };
42
+ } else if (typeof browser !== 'undefined' && typeof browser.runtime !== 'undefined') {
43
+ // Extension environment (Firefox)
44
+ return {
45
+ environment: _KoniTypes.RuntimeEnvironment.ExtensionFirefox,
46
+ version: browser.runtime.getManifest().version,
47
+ host: window.location.host,
48
+ protocol: window.location.protocol
49
+ };
50
+ // @ts-ignore
51
+ } else if (typeof WorkerGlobalScope !== 'undefined') {
52
+ // Web Worker environment
53
+ return {
54
+ environment: _KoniTypes.RuntimeEnvironment.WebWorker,
55
+ version: ''
56
+ };
57
+ } else {
58
+ // Unknown environment
59
+ return {
60
+ environment: _KoniTypes.RuntimeEnvironment.Unknown,
61
+ version: ''
62
+ };
63
+ }
64
+ }
65
+ const RuntimeInfo = detectRuntimeEnvironment();
66
+ exports.RuntimeInfo = RuntimeInfo;
@@ -3,6 +3,40 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ var _exportNames = {
7
+ notDef: true,
8
+ isDef: true,
9
+ nonEmptyArr: true,
10
+ isEmptyArray: true,
11
+ isAccountAll: true,
12
+ reformatAddress: true,
13
+ filterAddressByNetworkKey: true,
14
+ categoryAddresses: true,
15
+ categoryNetworks: true,
16
+ convertToEvmAddress: true,
17
+ isUrl: true,
18
+ inJestTest: true,
19
+ parseIpfsLink: true,
20
+ hexToStr: true,
21
+ utf16ToString: true,
22
+ hexToUTF16: true,
23
+ isValidSubstrateAddress: true,
24
+ toUnit: true,
25
+ sumBN: true,
26
+ convertFundStatus: true,
27
+ isAddressesEqual: true,
28
+ isValidProvider: true,
29
+ getCurrentProvider: true,
30
+ getNftProvider: true,
31
+ mergeNetworkProviders: true,
32
+ filterAndSortingAccountByAuthType: true,
33
+ parseRawNumber: true,
34
+ isSameAddress: true,
35
+ getDomainFromUrl: true,
36
+ waitTimeout: true,
37
+ stripUrl: true,
38
+ canDerive: true
39
+ };
6
40
  Object.defineProperty(exports, "canDerive", {
7
41
  enumerable: true,
8
42
  get: function () {
@@ -29,6 +63,7 @@ exports.mergeNetworkProviders = mergeNetworkProviders;
29
63
  exports.parseIpfsLink = exports.notDef = exports.nonEmptyArr = void 0;
30
64
  exports.parseRawNumber = parseRawNumber;
31
65
  exports.reformatAddress = reformatAddress;
66
+ exports.stripUrl = void 0;
32
67
  exports.sumBN = sumBN;
33
68
  exports.toUnit = void 0;
34
69
  exports.utf16ToString = utf16ToString;
@@ -38,6 +73,42 @@ var _constants = require("@subwallet/extension-base/constants");
38
73
  var _util = require("@polkadot/util");
39
74
  var _utilCrypto = require("@polkadot/util-crypto");
40
75
  var _canDerive = require("./canDerive");
76
+ var _array = require("./array");
77
+ Object.keys(_array).forEach(function (key) {
78
+ if (key === "default" || key === "__esModule") return;
79
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
80
+ if (key in exports && exports[key] === _array[key]) return;
81
+ Object.defineProperty(exports, key, {
82
+ enumerable: true,
83
+ get: function () {
84
+ return _array[key];
85
+ }
86
+ });
87
+ });
88
+ var _environment = require("./environment");
89
+ Object.keys(_environment).forEach(function (key) {
90
+ if (key === "default" || key === "__esModule") return;
91
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
92
+ if (key in exports && exports[key] === _environment[key]) return;
93
+ Object.defineProperty(exports, key, {
94
+ enumerable: true,
95
+ get: function () {
96
+ return _environment[key];
97
+ }
98
+ });
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
+ });
41
112
  // Copyright 2019-2022 @subwallet/extension-base authors & contributors
42
113
  // SPDX-License-Identifier: Apache-2.0
43
114
 
@@ -329,4 +400,10 @@ function getDomainFromUrl(url) {
329
400
  }
330
401
  async function waitTimeout(ms) {
331
402
  return new Promise(resolve => setTimeout(resolve, ms));
332
- }
403
+ }
404
+ const stripUrl = url => {
405
+ (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:`);
406
+ const parts = url.split('/');
407
+ return parts[2];
408
+ };
409
+ exports.stripUrl = stripUrl;
@@ -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,
@@ -1,6 +1,7 @@
1
1
  // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
+ import { RuntimeInfo } from '@subwallet/extension-base/utils';
4
5
  export const SINGULAR_V1_ENDPOINT = 'https://singular.rmrk-api.xyz/api/account-rmrk1/';
5
6
  export const SINGULAR_V2_ENDPOINT = 'https://singular.rmrk-api.xyz/api/account/';
6
7
  export const KANARIA_ENDPOINT = 'https://kanaria.rmrk.app/api/rmrk2/';
@@ -68,9 +69,6 @@ export let SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME;
68
69
  const RANDOM_IPFS_GATEWAY_SETTING = [{
69
70
  provider: IPFS_IO_GATEWAY,
70
71
  weight: 0 // Not stable
71
- }, {
72
- provider: NFT_STORAGE_GATEWAY,
73
- weight: 50
74
72
  }, {
75
73
  provider: CF_IPFS_GATEWAY,
76
74
  weight: 4
@@ -89,13 +87,20 @@ const RANDOM_IPFS_GATEWAY_SETTING = [{
89
87
  }, {
90
88
  provider: IPFS_GATEWAY_CLOUD,
91
89
  weight: 0 // Deceptive site warning
92
- }, {
93
- provider: IPFS_FLEEK,
94
- weight: 4
95
90
  }, {
96
91
  provider: IPFS_TELOS_MIAMI,
97
92
  weight: 0
98
93
  }];
94
+ if (!RuntimeInfo.protocol || RuntimeInfo.protocol && !RuntimeInfo.protocol.startsWith('http')) {
95
+ RANDOM_IPFS_GATEWAY_SETTING.push({
96
+ provider: NFT_STORAGE_GATEWAY,
97
+ weight: 50
98
+ });
99
+ RANDOM_IPFS_GATEWAY_SETTING.push({
100
+ provider: IPFS_FLEEK,
101
+ weight: 4
102
+ });
103
+ }
99
104
  const RANDOM_IPFS_GATEWAY_TOTAL_WEIGHT = RANDOM_IPFS_GATEWAY_SETTING.reduce((value, item) => value + item.weight, 0);
100
105
  export function getRandomIpfsGateway() {
101
106
  const weighedItems = [];
@@ -5,7 +5,7 @@ import { getBeneficiary, getDestinationChainLocation, getDestWeight, getTokenLoc
5
5
  import { _isNativeToken, _isSubstrateRelayChain } from '@subwallet/extension-base/services/chain-service/utils';
6
6
  export function getExtrinsicByPolkadotXcmPallet(tokenInfo, originChainInfo, destinationChainInfo, recipientAddress, value, api) {
7
7
  const weightParam = getDestWeight();
8
- const version = ['statemint', 'statemine', 'shiden'].includes(originChainInfo.slug) ? 'V3' : 'V1';
8
+ const version = ['statemint', 'statemine', 'shiden', 'astar'].includes(originChainInfo.slug) ? 'V3' : 'V1';
9
9
  const beneficiary = getBeneficiary(destinationChainInfo, recipientAddress, version);
10
10
  const destination = getDestinationChainLocation(originChainInfo, destinationChainInfo, version);
11
11
  let assetLocation = getTokenLocation(tokenInfo, value, version);
@@ -18,7 +18,7 @@ function getCurrencyId(tokenInfo) {
18
18
  return _getTokenOnChainInfo(tokenInfo) || _getTokenOnChainAssetId(tokenInfo);
19
19
  }
20
20
  export function getExtrinsicByXtokensPallet(tokenInfo, originChainInfo, destinationChainInfo, recipientAddress, value, api) {
21
- const weightParam = ['pioneer', 'hydradx_main'].includes(originChainInfo.slug) ? FOUR_INSTRUCTIONS_WEIGHT : getDestWeight();
22
- const destVersion = ['moonbeam', 'moonriver', 'bifrost_dot'].includes(originChainInfo.slug) ? 'V3' : undefined;
21
+ const weightParam = ['pioneer'].includes(originChainInfo.slug) ? FOUR_INSTRUCTIONS_WEIGHT : getDestWeight();
22
+ const destVersion = ['moonbeam', 'moonriver', 'bifrost_dot', 'interlay', 'hydradx_main'].includes(originChainInfo.slug) ? 'V3' : undefined;
23
23
  return api.tx.xTokens.transfer(getCurrencyId(tokenInfo), value, getDestMultilocation(destinationChainInfo, recipientAddress, destVersion), weightParam);
24
24
  }
@@ -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);
@@ -188,5 +188,16 @@ export default class KoniExtension {
188
188
  private reloadCron;
189
189
  private getLogoMap;
190
190
  private passPhishingPage;
191
+ private connectWalletConnect;
192
+ private connectWCSubscribe;
193
+ private approveWalletConnectSession;
194
+ private rejectWalletConnectSession;
195
+ private subscribeWalletConnectSessions;
196
+ private disconnectWalletConnectSession;
197
+ private enableMantaPay;
198
+ private initSyncMantaPay;
199
+ private disableMantaPay;
200
+ private subscribeMantaPayConfig;
201
+ private subscribeMantaPaySyncState;
191
202
  handle<TMessageType extends MessageTypes>(id: string, type: TMessageType, request: RequestTypes[TMessageType], port: chrome.runtime.Port): Promise<ResponseType<TMessageType>>;
192
203
  }