@0xsequence/provider 0.36.5 → 0.36.6

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.
@@ -796,6 +796,25 @@ class WalletRequestHandler {
796
796
  response.result = gasPrice.toHexString();
797
797
  break;
798
798
  }
799
+
800
+ case 'wallet_switchEthereumChain':
801
+ {
802
+ const [switchParams] = request.params;
803
+
804
+ if (!switchParams.chainId || switchParams.chainId.length === 0) {
805
+ throw new Error('invalid chainId');
806
+ }
807
+
808
+ const _chainId = ethers.ethers.BigNumber.from(switchParams.chainId);
809
+
810
+ const ok = await _this.setDefaultNetwork(_chainId.toString(), true);
811
+
812
+ if (!ok) {
813
+ throw new Error(`unable to set chainId ${_chainId}`);
814
+ }
815
+
816
+ response.result = null; // success
817
+ }
799
818
  // smart wallet method
800
819
 
801
820
  case 'sequence_getWalletContext':
@@ -807,16 +826,16 @@ class WalletRequestHandler {
807
826
 
808
827
  case 'sequence_getWalletConfig':
809
828
  {
810
- const [_chainId] = request.params;
811
- response.result = await signer.getWalletConfig(_chainId);
829
+ const [_chainId2] = request.params;
830
+ response.result = await signer.getWalletConfig(_chainId2);
812
831
  break;
813
832
  }
814
833
  // smart wallet method
815
834
 
816
835
  case 'sequence_getWalletState':
817
836
  {
818
- const [_chainId2] = request.params;
819
- response.result = await signer.getWalletState(_chainId2);
837
+ const [_chainId3] = request.params;
838
+ response.result = await signer.getWalletState(_chainId3);
820
839
  break;
821
840
  }
822
841
  // smart wallet method
@@ -2431,7 +2450,11 @@ class MuxMessageProvider {
2431
2450
  this.provider = this.messageProviders[0];
2432
2451
  this.provider.register();
2433
2452
  return;
2434
- }
2453
+ } // REVIEW/NOTE: ........ this method does not work for the chrome-extension. The issue becomes
2454
+ // when the browser quits or restarts, the "open" event is never triggered. Perhaps the code here is fine,
2455
+ // or maybe its not. What should happen is when a dapp makes a request, it will call openWallet
2456
+ // below, in which case one of the events will register. So perhaps this is fine.
2457
+
2435
2458
 
2436
2459
  this.messageProviders.forEach(m => {
2437
2460
  m.register();
@@ -3195,8 +3218,15 @@ class Wallet {
3195
3218
  }
3196
3219
 
3197
3220
  if ((_this$config$transpor5 = this.config.transports) != null && (_this$config$transpor6 = _this$config$transpor5.extensionTransport) != null && _this$config$transpor6.enabled) {
3198
- this.transport.extensionMessageProvider = new ExtensionMessageProvider(this.config.transports.extensionTransport.runtime);
3199
- this.transport.messageProvider.add(this.transport.extensionMessageProvider);
3221
+ this.transport.extensionMessageProvider = new ExtensionMessageProvider(this.config.transports.extensionTransport.runtime); // this.transport.extensionMessageProvider.register()
3222
+
3223
+ this.transport.messageProvider.add(this.transport.extensionMessageProvider); // NOTE/REVIEW: see note in mux-message-provider
3224
+ //
3225
+ // We don't add the extensionMessageProvider here because we don't send requests to it anyways, we seem to
3226
+ // send all requests to the WindowMessageProvider anyways. By allowing it, if browser restarts, it will break
3227
+ // the entire extension because messageProvider.provider will be undefined. So this is a hack to fix it.
3228
+ //
3229
+ // this.transport.messageProvider.add(this.transport.extensionMessageProvider)
3200
3230
  }
3201
3231
 
3202
3232
  this.transport.messageProvider.register(); // .....
@@ -796,6 +796,25 @@ class WalletRequestHandler {
796
796
  response.result = gasPrice.toHexString();
797
797
  break;
798
798
  }
799
+
800
+ case 'wallet_switchEthereumChain':
801
+ {
802
+ const [switchParams] = request.params;
803
+
804
+ if (!switchParams.chainId || switchParams.chainId.length === 0) {
805
+ throw new Error('invalid chainId');
806
+ }
807
+
808
+ const _chainId = ethers.ethers.BigNumber.from(switchParams.chainId);
809
+
810
+ const ok = await _this.setDefaultNetwork(_chainId.toString(), true);
811
+
812
+ if (!ok) {
813
+ throw new Error(`unable to set chainId ${_chainId}`);
814
+ }
815
+
816
+ response.result = null; // success
817
+ }
799
818
  // smart wallet method
800
819
 
801
820
  case 'sequence_getWalletContext':
@@ -807,16 +826,16 @@ class WalletRequestHandler {
807
826
 
808
827
  case 'sequence_getWalletConfig':
809
828
  {
810
- const [_chainId] = request.params;
811
- response.result = await signer.getWalletConfig(_chainId);
829
+ const [_chainId2] = request.params;
830
+ response.result = await signer.getWalletConfig(_chainId2);
812
831
  break;
813
832
  }
814
833
  // smart wallet method
815
834
 
816
835
  case 'sequence_getWalletState':
817
836
  {
818
- const [_chainId2] = request.params;
819
- response.result = await signer.getWalletState(_chainId2);
837
+ const [_chainId3] = request.params;
838
+ response.result = await signer.getWalletState(_chainId3);
820
839
  break;
821
840
  }
822
841
  // smart wallet method
@@ -2431,7 +2450,11 @@ class MuxMessageProvider {
2431
2450
  this.provider = this.messageProviders[0];
2432
2451
  this.provider.register();
2433
2452
  return;
2434
- }
2453
+ } // REVIEW/NOTE: ........ this method does not work for the chrome-extension. The issue becomes
2454
+ // when the browser quits or restarts, the "open" event is never triggered. Perhaps the code here is fine,
2455
+ // or maybe its not. What should happen is when a dapp makes a request, it will call openWallet
2456
+ // below, in which case one of the events will register. So perhaps this is fine.
2457
+
2435
2458
 
2436
2459
  this.messageProviders.forEach(m => {
2437
2460
  m.register();
@@ -3195,8 +3218,15 @@ class Wallet {
3195
3218
  }
3196
3219
 
3197
3220
  if ((_this$config$transpor5 = this.config.transports) != null && (_this$config$transpor6 = _this$config$transpor5.extensionTransport) != null && _this$config$transpor6.enabled) {
3198
- this.transport.extensionMessageProvider = new ExtensionMessageProvider(this.config.transports.extensionTransport.runtime);
3199
- this.transport.messageProvider.add(this.transport.extensionMessageProvider);
3221
+ this.transport.extensionMessageProvider = new ExtensionMessageProvider(this.config.transports.extensionTransport.runtime); // this.transport.extensionMessageProvider.register()
3222
+
3223
+ this.transport.messageProvider.add(this.transport.extensionMessageProvider); // NOTE/REVIEW: see note in mux-message-provider
3224
+ //
3225
+ // We don't add the extensionMessageProvider here because we don't send requests to it anyways, we seem to
3226
+ // send all requests to the WindowMessageProvider anyways. By allowing it, if browser restarts, it will break
3227
+ // the entire extension because messageProvider.provider will be undefined. So this is a hack to fix it.
3228
+ //
3229
+ // this.transport.messageProvider.add(this.transport.extensionMessageProvider)
3200
3230
  }
3201
3231
 
3202
3232
  this.transport.messageProvider.register(); // .....
@@ -792,6 +792,25 @@ class WalletRequestHandler {
792
792
  response.result = gasPrice.toHexString();
793
793
  break;
794
794
  }
795
+
796
+ case 'wallet_switchEthereumChain':
797
+ {
798
+ const [switchParams] = request.params;
799
+
800
+ if (!switchParams.chainId || switchParams.chainId.length === 0) {
801
+ throw new Error('invalid chainId');
802
+ }
803
+
804
+ const _chainId = ethers.BigNumber.from(switchParams.chainId);
805
+
806
+ const ok = await _this.setDefaultNetwork(_chainId.toString(), true);
807
+
808
+ if (!ok) {
809
+ throw new Error(`unable to set chainId ${_chainId}`);
810
+ }
811
+
812
+ response.result = null; // success
813
+ }
795
814
  // smart wallet method
796
815
 
797
816
  case 'sequence_getWalletContext':
@@ -803,16 +822,16 @@ class WalletRequestHandler {
803
822
 
804
823
  case 'sequence_getWalletConfig':
805
824
  {
806
- const [_chainId] = request.params;
807
- response.result = await signer.getWalletConfig(_chainId);
825
+ const [_chainId2] = request.params;
826
+ response.result = await signer.getWalletConfig(_chainId2);
808
827
  break;
809
828
  }
810
829
  // smart wallet method
811
830
 
812
831
  case 'sequence_getWalletState':
813
832
  {
814
- const [_chainId2] = request.params;
815
- response.result = await signer.getWalletState(_chainId2);
833
+ const [_chainId3] = request.params;
834
+ response.result = await signer.getWalletState(_chainId3);
816
835
  break;
817
836
  }
818
837
  // smart wallet method
@@ -2427,7 +2446,11 @@ class MuxMessageProvider {
2427
2446
  this.provider = this.messageProviders[0];
2428
2447
  this.provider.register();
2429
2448
  return;
2430
- }
2449
+ } // REVIEW/NOTE: ........ this method does not work for the chrome-extension. The issue becomes
2450
+ // when the browser quits or restarts, the "open" event is never triggered. Perhaps the code here is fine,
2451
+ // or maybe its not. What should happen is when a dapp makes a request, it will call openWallet
2452
+ // below, in which case one of the events will register. So perhaps this is fine.
2453
+
2431
2454
 
2432
2455
  this.messageProviders.forEach(m => {
2433
2456
  m.register();
@@ -3191,8 +3214,15 @@ class Wallet {
3191
3214
  }
3192
3215
 
3193
3216
  if ((_this$config$transpor5 = this.config.transports) != null && (_this$config$transpor6 = _this$config$transpor5.extensionTransport) != null && _this$config$transpor6.enabled) {
3194
- this.transport.extensionMessageProvider = new ExtensionMessageProvider(this.config.transports.extensionTransport.runtime);
3195
- this.transport.messageProvider.add(this.transport.extensionMessageProvider);
3217
+ this.transport.extensionMessageProvider = new ExtensionMessageProvider(this.config.transports.extensionTransport.runtime); // this.transport.extensionMessageProvider.register()
3218
+
3219
+ this.transport.messageProvider.add(this.transport.extensionMessageProvider); // NOTE/REVIEW: see note in mux-message-provider
3220
+ //
3221
+ // We don't add the extensionMessageProvider here because we don't send requests to it anyways, we seem to
3222
+ // send all requests to the WindowMessageProvider anyways. By allowing it, if browser restarts, it will break
3223
+ // the entire extension because messageProvider.provider will be undefined. So this is a hack to fix it.
3224
+ //
3225
+ // this.transport.messageProvider.add(this.transport.extensionMessageProvider)
3196
3226
  }
3197
3227
 
3198
3228
  this.transport.messageProvider.register(); // .....
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0xsequence/provider",
3
- "version": "0.36.5",
3
+ "version": "0.36.6",
4
4
  "description": "provider sub-package for Sequence",
5
5
  "repository": "https://github.com/0xsequence/sequence.js/tree/master/packages/provider",
6
6
  "source": "src/index.ts",
@@ -13,13 +13,13 @@
13
13
  "typecheck": "tsc --noEmit"
14
14
  },
15
15
  "dependencies": {
16
- "@0xsequence/abi": "^0.36.5",
17
- "@0xsequence/auth": "^0.36.5",
18
- "@0xsequence/config": "^0.36.5",
19
- "@0xsequence/network": "^0.36.5",
20
- "@0xsequence/transactions": "^0.36.5",
21
- "@0xsequence/utils": "^0.36.5",
22
- "@0xsequence/wallet": "^0.36.5",
16
+ "@0xsequence/abi": "^0.36.6",
17
+ "@0xsequence/auth": "^0.36.6",
18
+ "@0xsequence/config": "^0.36.6",
19
+ "@0xsequence/network": "^0.36.6",
20
+ "@0xsequence/transactions": "^0.36.6",
21
+ "@0xsequence/utils": "^0.36.6",
22
+ "@0xsequence/wallet": "^0.36.6",
23
23
  "@ethersproject/abstract-signer": "^5.5.0",
24
24
  "@ethersproject/hash": "^5.5.0",
25
25
  "@ethersproject/providers": "^5.5.1",
@@ -26,6 +26,10 @@ export class MuxMessageProvider implements ProviderTransport {
26
26
  return
27
27
  }
28
28
 
29
+ // REVIEW/NOTE: ........ this method does not work for the chrome-extension. The issue becomes
30
+ // when the browser quits or restarts, the "open" event is never triggered. Perhaps the code here is fine,
31
+ // or maybe its not. What should happen is when a dapp makes a request, it will call openWallet
32
+ // below, in which case one of the events will register. So perhaps this is fine.
29
33
  this.messageProviders.forEach(m => {
30
34
  m.register()
31
35
 
@@ -488,6 +488,22 @@ export class WalletRequestHandler implements ExternalProvider, JsonRpcHandler, P
488
488
  break
489
489
  }
490
490
 
491
+ case 'wallet_switchEthereumChain': {
492
+ const [switchParams] = request.params!
493
+ if (!switchParams.chainId || switchParams.chainId.length === 0) {
494
+ throw new Error('invalid chainId')
495
+ }
496
+
497
+ const chainId = ethers.BigNumber.from(switchParams.chainId)
498
+
499
+ const ok = await this.setDefaultNetwork(chainId.toString(), true)
500
+ if (!ok) {
501
+ throw new Error(`unable to set chainId ${chainId}`)
502
+ }
503
+
504
+ response.result = null // success
505
+ }
506
+
491
507
  // smart wallet method
492
508
  case 'sequence_getWalletContext': {
493
509
  response.result = await signer.getWalletContext()
package/src/wallet.ts CHANGED
@@ -141,7 +141,16 @@ export class Wallet implements WalletProvider {
141
141
  }
142
142
  if (this.config.transports?.extensionTransport?.enabled) {
143
143
  this.transport.extensionMessageProvider = new ExtensionMessageProvider(this.config.transports.extensionTransport.runtime)
144
+ // this.transport.extensionMessageProvider.register()
144
145
  this.transport.messageProvider.add(this.transport.extensionMessageProvider)
146
+
147
+ // NOTE/REVIEW: see note in mux-message-provider
148
+ //
149
+ // We don't add the extensionMessageProvider here because we don't send requests to it anyways, we seem to
150
+ // send all requests to the WindowMessageProvider anyways. By allowing it, if browser restarts, it will break
151
+ // the entire extension because messageProvider.provider will be undefined. So this is a hack to fix it.
152
+ //
153
+ // this.transport.messageProvider.add(this.transport.extensionMessageProvider)
145
154
  }
146
155
  this.transport.messageProvider.register()
147
156