@subwallet/extension-base 1.1.3-0 → 1.1.5-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/background/KoniTypes.d.ts +14 -4
  2. package/background/types.d.ts +4 -0
  3. package/cjs/koni/api/nft/config.js +19 -16
  4. package/cjs/koni/api/nft/nft.js +1 -1
  5. package/cjs/koni/api/nft/rmrk_nft/index.js +57 -48
  6. package/cjs/koni/background/handlers/Extension.js +49 -11
  7. package/cjs/koni/background/handlers/Tabs.js +65 -31
  8. package/cjs/packageInfo.js +1 -1
  9. package/cjs/page/Accounts.js +7 -2
  10. package/cjs/page/Injected.js +5 -0
  11. package/cjs/services/chain-service/index.js +9 -0
  12. package/cjs/services/request-service/handler/AuthRequestHandler.js +4 -2
  13. package/cjs/services/request-service/handler/{WalletConnectRequestHandler.js → ConnectWCRequestHandler.js} +9 -9
  14. package/cjs/services/request-service/handler/NotSupportWCRequestHandler.js +71 -0
  15. package/cjs/services/request-service/handler/index.js +55 -0
  16. package/cjs/services/request-service/index.js +36 -22
  17. package/cjs/services/transaction-service/index.js +5 -1
  18. package/cjs/services/wallet-connect-service/helpers.js +10 -1
  19. package/cjs/services/wallet-connect-service/index.js +5 -0
  20. package/koni/api/nft/config.d.ts +3 -3
  21. package/koni/api/nft/config.js +15 -12
  22. package/koni/api/nft/nft.js +1 -1
  23. package/koni/api/nft/rmrk_nft/index.d.ts +0 -1
  24. package/koni/api/nft/rmrk_nft/index.js +58 -49
  25. package/koni/background/handlers/Extension.d.ts +4 -1
  26. package/koni/background/handlers/Extension.js +43 -7
  27. package/koni/background/handlers/Tabs.d.ts +3 -1
  28. package/koni/background/handlers/Tabs.js +44 -11
  29. package/package.json +21 -11
  30. package/packageInfo.js +1 -1
  31. package/page/Accounts.js +7 -2
  32. package/page/Injected.js +5 -0
  33. package/services/chain-service/index.js +9 -0
  34. package/services/request-service/handler/AuthRequestHandler.d.ts +3 -3
  35. package/services/request-service/handler/AuthRequestHandler.js +5 -3
  36. package/services/request-service/handler/{WalletConnectRequestHandler.d.ts → ConnectWCRequestHandler.d.ts} +1 -1
  37. package/services/request-service/handler/{WalletConnectRequestHandler.js → ConnectWCRequestHandler.js} +8 -8
  38. package/services/request-service/handler/NotSupportWCRequestHandler.d.ts +15 -0
  39. package/services/request-service/handler/NotSupportWCRequestHandler.js +62 -0
  40. package/services/request-service/handler/index.d.ts +7 -0
  41. package/services/request-service/handler/index.js +10 -0
  42. package/services/request-service/index.d.ts +11 -6
  43. package/services/request-service/index.js +31 -16
  44. package/services/transaction-service/index.js +5 -1
  45. package/services/wallet-connect-service/helpers.d.ts +2 -1
  46. package/services/wallet-connect-service/helpers.js +8 -0
  47. package/services/wallet-connect-service/index.js +6 -1
  48. package/services/wallet-connect-service/types.d.ts +5 -0
@@ -20,11 +20,16 @@ class Accounts {
20
20
  });
21
21
  }
22
22
  subscribe(cb) {
23
+ let id = null;
23
24
  sendRequest('pub(accounts.subscribeV2)', {
24
25
  accountAuthType: 'substrate'
25
- }, cb).catch(error => console.error(error));
26
+ }, cb).then(subId => {
27
+ id = subId;
28
+ }).catch(console.error);
26
29
  return () => {
27
- // FIXME we need the ability to unsubscribe
30
+ id && sendRequest('pub(accounts.unsubscribe)', {
31
+ id
32
+ }).catch(console.error);
28
33
  };
29
34
  }
30
35
  }
@@ -18,6 +18,11 @@ class _default {
18
18
  this.metadata = new _Metadata.default(sendRequest);
19
19
  this.provider = new _PostMessageProvider.default(sendRequest);
20
20
  this.signer = new _Signer.default(sendRequest);
21
+ setInterval(() => {
22
+ sendRequest('pub(ping)', null).catch(() => {
23
+ console.error('Extension unavailable, ping failed');
24
+ });
25
+ }, 5000 + Math.floor(Math.random() * 5000));
21
26
  }
22
27
  }
23
28
  exports.default = _default;
@@ -714,6 +714,15 @@ class ChainService {
714
714
  async initAssetRegistry(deprecatedCustomChainMap) {
715
715
  const storedAssetRegistry = await this.dbService.getAllAssetStore();
716
716
  const latestAssetRegistry = await this.fetchLatestData(_constants._CHAIN_ASSET_SRC, _chainList.ChainAssetMap);
717
+
718
+ // Fill out zk assets from latestAssetRegistry if not supported
719
+ if (!_utils2.MODULE_SUPPORT.MANTA_ZK) {
720
+ Object.keys(latestAssetRegistry).forEach(slug => {
721
+ if ((0, _utils._isMantaZkAsset)(latestAssetRegistry[slug])) {
722
+ delete latestAssetRegistry[slug];
723
+ }
724
+ });
725
+ }
717
726
  if (storedAssetRegistry.length === 0) {
718
727
  this.dataMap.assetRegistry = latestAssetRegistry;
719
728
  } else {
@@ -23,8 +23,8 @@ class AuthRequestHandler {
23
23
  authorizeStore = new _Authorize.default();
24
24
  #authRequestsV2 = {};
25
25
  authorizeCached = undefined;
26
- authorizeUrlSubject = new _rxjs.Subject();
27
- evmChainSubject = new _rxjs.Subject();
26
+ authorizeUrlSubject = new _rxjs.BehaviorSubject({});
27
+ evmChainSubject = new _rxjs.BehaviorSubject({});
28
28
  authSubjectV2 = new _rxjs.BehaviorSubject([]);
29
29
  constructor(requestService, chainService, keyringService) {
30
30
  this.keyringService = keyringService;
@@ -75,6 +75,8 @@ class AuthRequestHandler {
75
75
  } else {
76
76
  this.authorizeStore.get('authUrls', data => {
77
77
  this.authorizeCached = data || {};
78
+ this.evmChainSubject.next(this.authorizeCached);
79
+ this.authorizeUrlSubject.next(this.authorizeCached);
78
80
  update(this.authorizeCached);
79
81
  });
80
82
  }
@@ -9,15 +9,15 @@ var _rxjs = require("rxjs");
9
9
  // SPDX-License-Identifier: Apache-2.0
10
10
 
11
11
  // WC = WalletConnect
12
- class WalletConnectRequestHandler {
12
+ class ConnectWCRequestHandler {
13
13
  #requestService;
14
- #walletConnectSessionRequests = {};
14
+ #connectWCRequests = {};
15
15
  connectWCSubject = new _rxjs.BehaviorSubject([]);
16
16
  constructor(requestService) {
17
17
  this.#requestService = requestService;
18
18
  }
19
19
  get allConnectWCRequests() {
20
- return Object.values(this.#walletConnectSessionRequests)
20
+ return Object.values(this.#connectWCRequests)
21
21
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
22
22
  .map(_ref => {
23
23
  let {
@@ -29,10 +29,10 @@ class WalletConnectRequestHandler {
29
29
  });
30
30
  }
31
31
  get numConnectWCRequests() {
32
- return Object.keys(this.#walletConnectSessionRequests).length;
32
+ return Object.keys(this.#connectWCRequests).length;
33
33
  }
34
34
  getConnectWCRequest(id) {
35
- return this.#walletConnectSessionRequests[id];
35
+ return this.#connectWCRequests[id];
36
36
  }
37
37
  updateIconConnectWC(shouldClose) {
38
38
  this.connectWCSubject.next(this.allConnectWCRequests);
@@ -40,7 +40,7 @@ class WalletConnectRequestHandler {
40
40
  }
41
41
  connectWCComplete = id => {
42
42
  const complete = shouldClose => {
43
- delete this.#walletConnectSessionRequests[id];
43
+ delete this.#connectWCRequests[id];
44
44
  this.updateIconConnectWC(shouldClose);
45
45
  };
46
46
  return {
@@ -54,7 +54,7 @@ class WalletConnectRequestHandler {
54
54
  };
55
55
  addConnectWCRequest(request) {
56
56
  const id = request.id;
57
- this.#walletConnectSessionRequests[id] = {
57
+ this.#connectWCRequests[id] = {
58
58
  ...this.connectWCComplete(id),
59
59
  ...request
60
60
  };
@@ -62,10 +62,10 @@ class WalletConnectRequestHandler {
62
62
  this.#requestService.popupOpen();
63
63
  }
64
64
  resetWallet() {
65
- for (const request of Object.values(this.#walletConnectSessionRequests)) {
65
+ for (const request of Object.values(this.#connectWCRequests)) {
66
66
  request.reject(new Error('Reset wallet'));
67
67
  }
68
68
  this.connectWCSubject.next([]);
69
69
  }
70
70
  }
71
- exports.default = WalletConnectRequestHandler;
71
+ exports.default = ConnectWCRequestHandler;
@@ -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 NotSupportWCRequestHandler {
13
+ #requestService;
14
+ #notSupportWCRequests = {};
15
+ notSupportWCSubject = new _rxjs.BehaviorSubject([]);
16
+ constructor(requestService) {
17
+ this.#requestService = requestService;
18
+ }
19
+ get allNotSupportWCRequests() {
20
+ return Object.values(this.#notSupportWCRequests)
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 numNotSupportWCRequests() {
32
+ return Object.keys(this.#notSupportWCRequests).length;
33
+ }
34
+ getNotSupportWCRequest(id) {
35
+ return this.#notSupportWCRequests[id];
36
+ }
37
+ updateIconNotSupportWC(shouldClose) {
38
+ this.notSupportWCSubject.next(this.allNotSupportWCRequests);
39
+ this.#requestService.updateIconV2(shouldClose);
40
+ }
41
+ notSupportWCComplete = id => {
42
+ const complete = shouldClose => {
43
+ delete this.#notSupportWCRequests[id];
44
+ this.updateIconNotSupportWC(shouldClose);
45
+ };
46
+ return {
47
+ reject: () => {
48
+ complete(true);
49
+ },
50
+ resolve: () => {
51
+ complete(true);
52
+ }
53
+ };
54
+ };
55
+ addNotSupportWCRequest(request) {
56
+ const id = request.id;
57
+ this.#notSupportWCRequests[id] = {
58
+ ...this.notSupportWCComplete(id),
59
+ ...request
60
+ };
61
+ this.updateIconNotSupportWC();
62
+ this.#requestService.popupOpen();
63
+ }
64
+ resetWallet() {
65
+ for (const request of Object.values(this.#notSupportWCRequests)) {
66
+ request.reject(new Error('Reset wallet'));
67
+ }
68
+ this.notSupportWCSubject.next([]);
69
+ }
70
+ }
71
+ exports.default = NotSupportWCRequestHandler;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "AuthRequestHandler", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _AuthRequestHandler.default;
11
+ }
12
+ });
13
+ Object.defineProperty(exports, "ConnectWCRequestHandler", {
14
+ enumerable: true,
15
+ get: function () {
16
+ return _ConnectWCRequestHandler.default;
17
+ }
18
+ });
19
+ Object.defineProperty(exports, "EvmRequestHandler", {
20
+ enumerable: true,
21
+ get: function () {
22
+ return _EvmRequestHandler.default;
23
+ }
24
+ });
25
+ Object.defineProperty(exports, "MetadataRequestHandler", {
26
+ enumerable: true,
27
+ get: function () {
28
+ return _MetadataRequestHandler.default;
29
+ }
30
+ });
31
+ Object.defineProperty(exports, "NotSupportWCRequestHandler", {
32
+ enumerable: true,
33
+ get: function () {
34
+ return _NotSupportWCRequestHandler.default;
35
+ }
36
+ });
37
+ Object.defineProperty(exports, "PopupHandler", {
38
+ enumerable: true,
39
+ get: function () {
40
+ return _PopupHandler.default;
41
+ }
42
+ });
43
+ Object.defineProperty(exports, "SubstrateRequestHandler", {
44
+ enumerable: true,
45
+ get: function () {
46
+ return _SubstrateRequestHandler.default;
47
+ }
48
+ });
49
+ var _AuthRequestHandler = _interopRequireDefault(require("./AuthRequestHandler"));
50
+ var _ConnectWCRequestHandler = _interopRequireDefault(require("./ConnectWCRequestHandler"));
51
+ var _EvmRequestHandler = _interopRequireDefault(require("./EvmRequestHandler"));
52
+ var _MetadataRequestHandler = _interopRequireDefault(require("./MetadataRequestHandler"));
53
+ var _NotSupportWCRequestHandler = _interopRequireDefault(require("./NotSupportWCRequestHandler"));
54
+ var _PopupHandler = _interopRequireDefault(require("./PopupHandler"));
55
+ var _SubstrateRequestHandler = _interopRequireDefault(require("./SubstrateRequestHandler"));
@@ -1,16 +1,10 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.default = void 0;
8
- var _AuthRequestHandler = _interopRequireDefault(require("@subwallet/extension-base/services/request-service/handler/AuthRequestHandler"));
9
- var _EvmRequestHandler = _interopRequireDefault(require("@subwallet/extension-base/services/request-service/handler/EvmRequestHandler"));
10
- var _MetadataRequestHandler = _interopRequireDefault(require("@subwallet/extension-base/services/request-service/handler/MetadataRequestHandler"));
11
- var _PopupHandler = _interopRequireDefault(require("@subwallet/extension-base/services/request-service/handler/PopupHandler"));
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"));
7
+ var _handler = require("./handler");
14
8
  // Copyright 2019-2022 @subwallet/extension-base authors & contributors
15
9
  // SPDX-License-Identifier: Apache-2.0
16
10
 
@@ -22,19 +16,21 @@ class RequestService {
22
16
  #authRequestHandler;
23
17
  #substrateRequestHandler;
24
18
  #evmRequestHandler;
25
- #walletConnectRequestHandler;
19
+ #connectWCRequestHandler;
20
+ #notSupportWCRequestHandler;
26
21
 
27
22
  // Common
28
23
  constructor(chainService, settingService, keyringService) {
29
24
  this.keyringService = keyringService;
30
25
  this.#chainService = chainService;
31
26
  this.settingService = settingService;
32
- this.#popupHandler = new _PopupHandler.default(this);
33
- this.#metadataRequestHandler = new _MetadataRequestHandler.default(this);
34
- this.#authRequestHandler = new _AuthRequestHandler.default(this, this.#chainService, this.keyringService);
35
- this.#substrateRequestHandler = new _SubstrateRequestHandler.default(this);
36
- this.#evmRequestHandler = new _EvmRequestHandler.default(this);
37
- this.#walletConnectRequestHandler = new _WalletConnectRequestHandler.default(this);
27
+ this.#popupHandler = new _handler.PopupHandler(this);
28
+ this.#metadataRequestHandler = new _handler.MetadataRequestHandler(this);
29
+ this.#authRequestHandler = new _handler.AuthRequestHandler(this, this.#chainService, this.keyringService);
30
+ this.#substrateRequestHandler = new _handler.SubstrateRequestHandler(this);
31
+ this.#evmRequestHandler = new _handler.EvmRequestHandler(this);
32
+ this.#connectWCRequestHandler = new _handler.ConnectWCRequestHandler(this);
33
+ this.#notSupportWCRequestHandler = new _handler.NotSupportWCRequestHandler(this);
38
34
 
39
35
  // Reset icon on start service
40
36
  this.updateIconV2();
@@ -170,33 +166,51 @@ class RequestService {
170
166
  return this.#evmRequestHandler.updateConfirmation(id, type, payload, options, validator);
171
167
  }
172
168
 
173
- // Wallet Connect requests
169
+ // WalletConnect Connect requests
174
170
  getConnectWCRequest(id) {
175
- return this.#walletConnectRequestHandler.getConnectWCRequest(id);
171
+ return this.#connectWCRequestHandler.getConnectWCRequest(id);
176
172
  }
177
173
  get connectWCSubject() {
178
- return this.#walletConnectRequestHandler.connectWCSubject;
174
+ return this.#connectWCRequestHandler.connectWCSubject;
179
175
  }
180
176
  get allConnectWCRequests() {
181
- return this.#walletConnectRequestHandler.allConnectWCRequests;
177
+ return this.#connectWCRequestHandler.allConnectWCRequests;
182
178
  }
183
179
  get numConnectWCRequests() {
184
- return this.#walletConnectRequestHandler.numConnectWCRequests;
180
+ return this.#connectWCRequestHandler.numConnectWCRequests;
185
181
  }
186
182
  addConnectWCRequest(request) {
187
- return this.#walletConnectRequestHandler.addConnectWCRequest(request);
183
+ return this.#connectWCRequestHandler.addConnectWCRequest(request);
184
+ }
185
+
186
+ // WalletConnect not support requests
187
+ getNotSupportWCRequest(id) {
188
+ return this.#notSupportWCRequestHandler.getNotSupportWCRequest(id);
189
+ }
190
+ get notSupportWCSubject() {
191
+ return this.#notSupportWCRequestHandler.notSupportWCSubject;
192
+ }
193
+ get allNotSupportWCRequests() {
194
+ return this.#notSupportWCRequestHandler.allNotSupportWCRequests;
195
+ }
196
+ get numNotSupportWCRequests() {
197
+ return this.#notSupportWCRequestHandler.numNotSupportWCRequests;
198
+ }
199
+ addNotSupportWCRequest(request) {
200
+ return this.#notSupportWCRequestHandler.addNotSupportWCRequest(request);
188
201
  }
189
202
 
190
203
  // General methods
191
204
  get numRequests() {
192
- return this.numMetaRequests + this.numAuthRequests + this.numSubstrateRequests + this.numEvmRequests + this.numConnectWCRequests;
205
+ return this.numMetaRequests + this.numAuthRequests + this.numSubstrateRequests + this.numEvmRequests + this.numConnectWCRequests + this.numNotSupportWCRequests;
193
206
  }
194
207
  resetWallet() {
195
208
  this.#authRequestHandler.resetWallet();
196
209
  this.#substrateRequestHandler.resetWallet();
197
210
  this.#evmRequestHandler.resetWallet();
198
211
  this.#metadataRequestHandler.resetWallet();
199
- this.#walletConnectRequestHandler.resetWallet();
212
+ this.#connectWCRequestHandler.resetWallet();
213
+ this.#notSupportWCRequestHandler.resetWallet();
200
214
  }
201
215
  }
202
216
  exports.default = RequestService;
@@ -22,6 +22,7 @@ var _eth = require("@subwallet/extension-base/utils/eth");
22
22
  var _mergeTransactionAndSignature = require("@subwallet/extension-base/utils/eth/mergeTransactionAndSignature");
23
23
  var _parseTransaction = require("@subwallet/extension-base/utils/eth/parseTransaction");
24
24
  var _uiKeyring = _interopRequireDefault(require("@subwallet/ui-keyring"));
25
+ var _bignumber = _interopRequireDefault(require("bignumber.js"));
25
26
  var _ethereumjsUtil = require("ethereumjs-util");
26
27
  var _ethers = require("ethers");
27
28
  var _eventemitter = _interopRequireDefault(require("eventemitter3"));
@@ -120,7 +121,7 @@ class TransactionService {
120
121
  }
121
122
  } catch (e) {
122
123
  const error = e;
123
- if (error.message.includes('gas required exceeds allowance')) {
124
+ if (error.message.includes('gas required exceeds allowance') && error.message.includes('insufficient funds')) {
124
125
  validationResponse.errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.NOT_ENOUGH_BALANCE));
125
126
  }
126
127
  estimateFee.value = '0';
@@ -149,6 +150,9 @@ class TransactionService {
149
150
  const balanceNum = parseInt(balance.value);
150
151
  const edNum = parseInt(existentialDeposit);
151
152
  const transferNativeNum = parseInt(transferNative);
153
+ if (!new _bignumber.default(balance.value).gt(0)) {
154
+ validationResponse.errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.NOT_ENOUGH_BALANCE));
155
+ }
152
156
  if (transferNativeNum + feeNum > balanceNum) {
153
157
  if (!isTransferAll) {
154
158
  validationResponse.errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.NOT_ENOUGH_BALANCE));
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.parseRequestParams = exports.isWalletConnectRequest = exports.isSupportWalletConnectNamespace = exports.isSupportWalletConnectChain = exports.isProposalExpired = exports.getWCId = exports.getEip155MessageAddress = exports.convertConnectRequest = void 0;
6
+ exports.parseRequestParams = exports.isWalletConnectRequest = exports.isSupportWalletConnectNamespace = exports.isSupportWalletConnectChain = exports.isProposalExpired = exports.getWCId = exports.getEip155MessageAddress = exports.convertNotSupportRequest = exports.convertConnectRequest = void 0;
7
7
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
8
8
  var _utilCrypto = require("@polkadot/util-crypto");
9
9
  var _constants = require("./constants");
@@ -24,6 +24,15 @@ const convertConnectRequest = request => {
24
24
  };
25
25
  };
26
26
  exports.convertConnectRequest = convertConnectRequest;
27
+ const convertNotSupportRequest = (request, url) => {
28
+ return {
29
+ id: getWCId(request.id),
30
+ isInternal: false,
31
+ request: request,
32
+ url: url
33
+ };
34
+ };
35
+ exports.convertNotSupportRequest = convertNotSupportRequest;
27
36
  const parseRequestParams = params => {
28
37
  // @ts-ignore
29
38
  return params;
@@ -259,6 +259,11 @@ function _onSessionRequest2(requestEvent) {
259
259
  }
260
260
  } catch (e) {
261
261
  console.log(e);
262
+ try {
263
+ const requestSession = this.getSession(topic);
264
+ const notSupportRequest = (0, _helpers.convertNotSupportRequest)(requestEvent, requestSession.peer.metadata.url);
265
+ (0, _classPrivateFieldLooseBase2.default)(this, _requestService)[_requestService].addNotSupportWCRequest(notSupportRequest);
266
+ } catch (e) {}
262
267
  this.responseRequest({
263
268
  topic: topic,
264
269
  response: (0, _utils.formatJsonRpcError)(id, e.message)
@@ -15,12 +15,12 @@ export declare const UNIQUE_SCAN_ENDPOINT = "https://explorer-api.unique.network
15
15
  export declare const QUARTZ_SCAN_ENDPOINT = "https://hasura-quartz.unique.network/v1/graphql";
16
16
  export declare const UNIQUE_IPFS_GATEWAY = "https://ipfs.unique.network/ipfs/";
17
17
  export declare const NFT_STORAGE_GATEWAY = "https://nftstorage.link/ipfs/";
18
- export declare const IPFS_IO_GATEWAY = "https://ipfs.io/ipfs/";
18
+ export declare const IPFS_W3S_LINK = "https://w3s.link/ipfs/";
19
19
  export declare const GATEWAY_IPFS_IO = "https://gateway.ipfs.io/ipfs/";
20
20
  export declare const DWEB_LINK = "https://dweb.link/ipfs/";
21
- export declare const IPFS_GATEWAY_CLOUD = "https://ipfs-gateway.cloud/ipfs/";
21
+ export declare const IPFS_GATEWAY_4EVERLAND = "https://4everland.io/ipfs/";
22
22
  export declare const IPFS_FLEEK = "https://ipfs.fleek.co/ipfs/";
23
- export declare const IPFS_TELOS_MIAMI = "https://ipfs.telos.miami/ipfs";
23
+ export declare const IPFS_HARDBIN = "https://hardbin.com/ipfs";
24
24
  export declare enum SUPPORTED_NFT_NETWORKS {
25
25
  karura = "karura",
26
26
  acala = "acala",
@@ -19,12 +19,12 @@ export const UNIQUE_SCAN_ENDPOINT = 'https://explorer-api.unique.network/v1/grap
19
19
  export const QUARTZ_SCAN_ENDPOINT = 'https://hasura-quartz.unique.network/v1/graphql';
20
20
  export const UNIQUE_IPFS_GATEWAY = 'https://ipfs.unique.network/ipfs/';
21
21
  export const NFT_STORAGE_GATEWAY = 'https://nftstorage.link/ipfs/';
22
- export const IPFS_IO_GATEWAY = 'https://ipfs.io/ipfs/';
22
+ export const IPFS_W3S_LINK = 'https://w3s.link/ipfs/';
23
23
  export const GATEWAY_IPFS_IO = 'https://gateway.ipfs.io/ipfs/';
24
24
  export const DWEB_LINK = 'https://dweb.link/ipfs/';
25
- export const IPFS_GATEWAY_CLOUD = 'https://ipfs-gateway.cloud/ipfs/';
25
+ export const IPFS_GATEWAY_4EVERLAND = 'https://4everland.io/ipfs/';
26
26
  export const IPFS_FLEEK = 'https://ipfs.fleek.co/ipfs/';
27
- export const IPFS_TELOS_MIAMI = 'https://ipfs.telos.miami/ipfs';
27
+ export const IPFS_HARDBIN = 'https://hardbin.com/ipfs';
28
28
  export let SUPPORTED_NFT_NETWORKS;
29
29
  (function (SUPPORTED_NFT_NETWORKS) {
30
30
  SUPPORTED_NFT_NETWORKS["karura"] = "karura";
@@ -68,9 +68,6 @@ export let SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME;
68
68
  SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME["pioneer"] = "pioneer";
69
69
  })(SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME || (SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME = {}));
70
70
  const RANDOM_IPFS_GATEWAY_SETTING = [{
71
- provider: IPFS_IO_GATEWAY,
72
- weight: 0 // Not stable
73
- }, {
74
71
  provider: CF_IPFS_GATEWAY,
75
72
  weight: 4
76
73
  }, {
@@ -85,12 +82,6 @@ const RANDOM_IPFS_GATEWAY_SETTING = [{
85
82
  }, {
86
83
  provider: DWEB_LINK,
87
84
  weight: 5
88
- }, {
89
- provider: IPFS_GATEWAY_CLOUD,
90
- weight: 0 // Deceptive site warning
91
- }, {
92
- provider: IPFS_TELOS_MIAMI,
93
- weight: 0
94
85
  }];
95
86
  if (!RuntimeInfo.protocol || RuntimeInfo.protocol && !RuntimeInfo.protocol.startsWith('http')) {
96
87
  RANDOM_IPFS_GATEWAY_SETTING.push({
@@ -101,6 +92,18 @@ if (!RuntimeInfo.protocol || RuntimeInfo.protocol && !RuntimeInfo.protocol.start
101
92
  provider: IPFS_FLEEK,
102
93
  weight: 4
103
94
  });
95
+ RANDOM_IPFS_GATEWAY_SETTING.push({
96
+ provider: IPFS_HARDBIN,
97
+ weight: 1
98
+ });
99
+ RANDOM_IPFS_GATEWAY_SETTING.push({
100
+ provider: IPFS_GATEWAY_4EVERLAND,
101
+ weight: 2
102
+ });
103
+ RANDOM_IPFS_GATEWAY_SETTING.push({
104
+ provider: IPFS_W3S_LINK,
105
+ weight: 1
106
+ });
104
107
  }
105
108
  const RANDOM_IPFS_GATEWAY_TOTAL_WEIGHT = RANDOM_IPFS_GATEWAY_SETTING.reduce((value, item) => value + item.weight, 0);
106
109
  export function getRandomIpfsGateway() {
@@ -68,7 +68,7 @@ export class BaseNftApi {
68
68
  if (!input || input.length === 0) {
69
69
  return undefined;
70
70
  }
71
- if (isUrl(input)) {
71
+ if (isUrl(input) || input.includes('https://') || input.includes('http')) {
72
72
  return input;
73
73
  }
74
74
  if (input.startsWith('/ipfs/')) {
@@ -1,7 +1,6 @@
1
1
  import { BaseNftApi, HandleNftParams } from '@subwallet/extension-base/koni/api/nft/nft';
2
2
  export declare class RmrkNftApi extends BaseNftApi {
3
3
  constructor(addresses: string[], chain: string);
4
- parseUrl(input: string): string | undefined;
5
4
  private getMetadata;
6
5
  private getAllByAccount;
7
6
  handleNft(address: string, params: HandleNftParams): Promise<void>;