@0xsequence/provider 0.43.5 → 0.43.7

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.
@@ -3408,7 +3408,7 @@ class Wallet {
3408
3408
  }, true);
3409
3409
  });
3410
3410
  };
3411
- this.loadSession = async function () {
3411
+ this.loadSession = async function (preferredNetwork) {
3412
3412
  const data = await LocalStorage.getInstance().getItem('@sequence.session');
3413
3413
  if (!data || data === '') {
3414
3414
  return undefined;
@@ -3416,7 +3416,22 @@ class Wallet {
3416
3416
  try {
3417
3417
  const session = JSON.parse(data);
3418
3418
  if (session) {
3419
- _this.useSession(session, false);
3419
+ // Setting preferredNetwork as default network if it's in session.networks
3420
+ if (preferredNetwork !== undefined) {
3421
+ var _session$networks;
3422
+ const preferredNetworkIdNum = typeof preferredNetwork === 'string' ? parseInt(preferredNetwork) : preferredNetwork;
3423
+ const isPreferredNetwork = n => n.name === preferredNetwork || n.chainId === preferredNetworkIdNum;
3424
+ const preferredNetworkInConfig = (_session$networks = session.networks) == null ? void 0 : _session$networks.find(isPreferredNetwork);
3425
+ const isAlreadyDefaultChain = preferredNetworkInConfig == null ? void 0 : preferredNetworkInConfig.isDefaultChain;
3426
+ if (session.networks && preferredNetworkInConfig && !isAlreadyDefaultChain) {
3427
+ const updatedNetworks = session.networks.map(n => _extends({}, n, {
3428
+ isDefaultChain: isPreferredNetwork(n)
3429
+ }));
3430
+ session.networks = network.sortNetworks(updatedNetworks);
3431
+ session.providerCache = undefined;
3432
+ }
3433
+ }
3434
+ _this.useSession(session, true);
3420
3435
  }
3421
3436
  return session;
3422
3437
  } catch (err) {
@@ -3561,6 +3576,8 @@ class Wallet {
3561
3576
  // setup provider cache
3562
3577
  if (session.providerCache) {
3563
3578
  _this.transport.cachedProvider.setCache(session.providerCache);
3579
+ } else {
3580
+ _this.transport.cachedProvider.clearCache();
3564
3581
  }
3565
3582
 
3566
3583
  // persist
@@ -3787,7 +3804,7 @@ const initWallet = async (network, config) => {
3787
3804
  walletInstance.closeWallet();
3788
3805
  }
3789
3806
  walletInstance = new Wallet(network, config);
3790
- await walletInstance.loadSession();
3807
+ await walletInstance.loadSession(network);
3791
3808
  return walletInstance;
3792
3809
  };
3793
3810
  const getWallet = () => {
@@ -3408,7 +3408,7 @@ class Wallet {
3408
3408
  }, true);
3409
3409
  });
3410
3410
  };
3411
- this.loadSession = async function () {
3411
+ this.loadSession = async function (preferredNetwork) {
3412
3412
  const data = await LocalStorage.getInstance().getItem('@sequence.session');
3413
3413
  if (!data || data === '') {
3414
3414
  return undefined;
@@ -3416,7 +3416,22 @@ class Wallet {
3416
3416
  try {
3417
3417
  const session = JSON.parse(data);
3418
3418
  if (session) {
3419
- _this.useSession(session, false);
3419
+ // Setting preferredNetwork as default network if it's in session.networks
3420
+ if (preferredNetwork !== undefined) {
3421
+ var _session$networks;
3422
+ const preferredNetworkIdNum = typeof preferredNetwork === 'string' ? parseInt(preferredNetwork) : preferredNetwork;
3423
+ const isPreferredNetwork = n => n.name === preferredNetwork || n.chainId === preferredNetworkIdNum;
3424
+ const preferredNetworkInConfig = (_session$networks = session.networks) == null ? void 0 : _session$networks.find(isPreferredNetwork);
3425
+ const isAlreadyDefaultChain = preferredNetworkInConfig == null ? void 0 : preferredNetworkInConfig.isDefaultChain;
3426
+ if (session.networks && preferredNetworkInConfig && !isAlreadyDefaultChain) {
3427
+ const updatedNetworks = session.networks.map(n => _extends({}, n, {
3428
+ isDefaultChain: isPreferredNetwork(n)
3429
+ }));
3430
+ session.networks = network.sortNetworks(updatedNetworks);
3431
+ session.providerCache = undefined;
3432
+ }
3433
+ }
3434
+ _this.useSession(session, true);
3420
3435
  }
3421
3436
  return session;
3422
3437
  } catch (err) {
@@ -3561,6 +3576,8 @@ class Wallet {
3561
3576
  // setup provider cache
3562
3577
  if (session.providerCache) {
3563
3578
  _this.transport.cachedProvider.setCache(session.providerCache);
3579
+ } else {
3580
+ _this.transport.cachedProvider.clearCache();
3564
3581
  }
3565
3582
 
3566
3583
  // persist
@@ -3787,7 +3804,7 @@ const initWallet = async (network, config) => {
3787
3804
  walletInstance.closeWallet();
3788
3805
  }
3789
3806
  walletInstance = new Wallet(network, config);
3790
- await walletInstance.loadSession();
3807
+ await walletInstance.loadSession(network);
3791
3808
  return walletInstance;
3792
3809
  };
3793
3810
  const getWallet = () => {
@@ -2,7 +2,7 @@ import { EventEmitter2 } from 'eventemitter2';
2
2
  import { logger, shallowCopy, resolveProperties, encodeMessageDigest, encodeTypedDataDigest, packMessageData, sanitizeNumberString, sanitizeHost, sanitizeAlphanumeric, base64EncodeObject, base64DecodeObject } from '@0xsequence/utils';
3
3
  import { ethers, BigNumber, providers } from 'ethers';
4
4
  import { addressOf, isConfigEqual } from '@0xsequence/config';
5
- import { JsonRpcSender, maybeChainId, allowProviderMiddleware, networkProviderMiddleware, CachedProvider, JsonRpcRouter, loggingProviderMiddleware, exceptionProviderMiddleware, findNetworkConfig, EagerProvider, SigningProvider, updateNetworkConfig, ensureValidNetworks } from '@0xsequence/network';
5
+ import { JsonRpcSender, maybeChainId, allowProviderMiddleware, networkProviderMiddleware, CachedProvider, JsonRpcRouter, loggingProviderMiddleware, exceptionProviderMiddleware, sortNetworks, findNetworkConfig, EagerProvider, SigningProvider, updateNetworkConfig, ensureValidNetworks } from '@0xsequence/network';
6
6
  import { Signer, resolveArrayProperties, isValidSignature as isValidSignature$1, recoverConfig } from '@0xsequence/wallet';
7
7
  import { isSignedTransactions } from '@0xsequence/transactions';
8
8
  import { signAuthorization } from '@0xsequence/auth';
@@ -3404,7 +3404,7 @@ class Wallet {
3404
3404
  }, true);
3405
3405
  });
3406
3406
  };
3407
- this.loadSession = async function () {
3407
+ this.loadSession = async function (preferredNetwork) {
3408
3408
  const data = await LocalStorage.getInstance().getItem('@sequence.session');
3409
3409
  if (!data || data === '') {
3410
3410
  return undefined;
@@ -3412,7 +3412,22 @@ class Wallet {
3412
3412
  try {
3413
3413
  const session = JSON.parse(data);
3414
3414
  if (session) {
3415
- _this.useSession(session, false);
3415
+ // Setting preferredNetwork as default network if it's in session.networks
3416
+ if (preferredNetwork !== undefined) {
3417
+ var _session$networks;
3418
+ const preferredNetworkIdNum = typeof preferredNetwork === 'string' ? parseInt(preferredNetwork) : preferredNetwork;
3419
+ const isPreferredNetwork = n => n.name === preferredNetwork || n.chainId === preferredNetworkIdNum;
3420
+ const preferredNetworkInConfig = (_session$networks = session.networks) == null ? void 0 : _session$networks.find(isPreferredNetwork);
3421
+ const isAlreadyDefaultChain = preferredNetworkInConfig == null ? void 0 : preferredNetworkInConfig.isDefaultChain;
3422
+ if (session.networks && preferredNetworkInConfig && !isAlreadyDefaultChain) {
3423
+ const updatedNetworks = session.networks.map(n => _extends({}, n, {
3424
+ isDefaultChain: isPreferredNetwork(n)
3425
+ }));
3426
+ session.networks = sortNetworks(updatedNetworks);
3427
+ session.providerCache = undefined;
3428
+ }
3429
+ }
3430
+ _this.useSession(session, true);
3416
3431
  }
3417
3432
  return session;
3418
3433
  } catch (err) {
@@ -3557,6 +3572,8 @@ class Wallet {
3557
3572
  // setup provider cache
3558
3573
  if (session.providerCache) {
3559
3574
  _this.transport.cachedProvider.setCache(session.providerCache);
3575
+ } else {
3576
+ _this.transport.cachedProvider.clearCache();
3560
3577
  }
3561
3578
 
3562
3579
  // persist
@@ -3783,7 +3800,7 @@ const initWallet = async (network, config) => {
3783
3800
  walletInstance.closeWallet();
3784
3801
  }
3785
3802
  walletInstance = new Wallet(network, config);
3786
- await walletInstance.loadSession();
3803
+ await walletInstance.loadSession(network);
3787
3804
  return walletInstance;
3788
3805
  };
3789
3806
  const getWallet = () => {
@@ -39,7 +39,7 @@ export declare class Wallet implements WalletProvider {
39
39
  private providers;
40
40
  constructor(network?: string | number, config?: Partial<ProviderConfig>);
41
41
  private init;
42
- loadSession: () => Promise<WalletSession | undefined>;
42
+ loadSession: (preferredNetwork?: string | number) => Promise<WalletSession | undefined>;
43
43
  connect: (options?: ConnectOptions) => Promise<ConnectDetails>;
44
44
  addConnectedSite(origin: string | undefined): Promise<void>;
45
45
  removeConnectedSite(origin: string): Promise<void>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0xsequence/provider",
3
- "version": "0.43.5",
3
+ "version": "0.43.7",
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",
@@ -14,13 +14,13 @@
14
14
  "typecheck": "tsc --noEmit"
15
15
  },
16
16
  "dependencies": {
17
- "@0xsequence/abi": "^0.43.5",
18
- "@0xsequence/auth": "^0.43.5",
19
- "@0xsequence/config": "^0.43.5",
20
- "@0xsequence/network": "^0.43.5",
21
- "@0xsequence/transactions": "^0.43.5",
22
- "@0xsequence/utils": "^0.43.5",
23
- "@0xsequence/wallet": "^0.43.5",
17
+ "@0xsequence/abi": "^0.43.7",
18
+ "@0xsequence/auth": "^0.43.7",
19
+ "@0xsequence/config": "^0.43.7",
20
+ "@0xsequence/network": "^0.43.7",
21
+ "@0xsequence/transactions": "^0.43.7",
22
+ "@0xsequence/utils": "^0.43.7",
23
+ "@0xsequence/wallet": "^0.43.7",
24
24
  "eventemitter2": "^6.4.5",
25
25
  "webextension-polyfill-ts": "^0.26.0"
26
26
  },
package/src/wallet.ts CHANGED
@@ -15,7 +15,8 @@ import {
15
15
  JsonRpcRequest,
16
16
  findNetworkConfig,
17
17
  updateNetworkConfig,
18
- ensureValidNetworks
18
+ ensureValidNetworks,
19
+ sortNetworks
19
20
  } from '@0xsequence/network'
20
21
  import { WalletConfig, WalletState } from '@0xsequence/config'
21
22
  import { logger } from '@0xsequence/utils'
@@ -248,15 +249,30 @@ export class Wallet implements WalletProvider {
248
249
  })
249
250
  }
250
251
 
251
- loadSession = async (): Promise<WalletSession | undefined> => {
252
+ loadSession = async (preferredNetwork?: string | number): Promise<WalletSession | undefined> => {
252
253
  const data = await LocalStorage.getInstance().getItem('@sequence.session')
253
254
  if (!data || data === '') {
254
255
  return undefined
255
256
  }
257
+
256
258
  try {
257
259
  const session = JSON.parse(data) as WalletSession
258
260
  if (session) {
259
- this.useSession(session, false)
261
+ // Setting preferredNetwork as default network if it's in session.networks
262
+ if (preferredNetwork !== undefined) {
263
+ const preferredNetworkIdNum = typeof preferredNetwork === 'string' ? parseInt(preferredNetwork) : preferredNetwork
264
+ const isPreferredNetwork = (n: NetworkConfig) => n.name === preferredNetwork || n.chainId === preferredNetworkIdNum
265
+ const preferredNetworkInConfig = session.networks?.find(isPreferredNetwork)
266
+ const isAlreadyDefaultChain = preferredNetworkInConfig?.isDefaultChain
267
+
268
+ if (session.networks && preferredNetworkInConfig && !isAlreadyDefaultChain) {
269
+ const updatedNetworks = session.networks.map(n => ({ ...n, isDefaultChain: isPreferredNetwork(n) }))
270
+ session.networks = sortNetworks(updatedNetworks)
271
+ session.providerCache = undefined
272
+ }
273
+ }
274
+
275
+ this.useSession(session, true)
260
276
  }
261
277
  return session
262
278
  } catch (err) {
@@ -601,6 +617,8 @@ export class Wallet implements WalletProvider {
601
617
  // setup provider cache
602
618
  if (session.providerCache) {
603
619
  this.transport.cachedProvider!.setCache(session.providerCache)
620
+ } else {
621
+ this.transport.cachedProvider!.clearCache()
604
622
  }
605
623
 
606
624
  // persist
@@ -739,7 +757,7 @@ export const initWallet = async (network?: string | number, config?: Partial<Pro
739
757
  walletInstance.closeWallet()
740
758
  }
741
759
  walletInstance = new Wallet(network, config)
742
- await walletInstance.loadSession()
760
+ await walletInstance.loadSession(network)
743
761
  return walletInstance
744
762
  }
745
763