@openfort/react 1.0.14 → 1.0.15

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.
@@ -25,11 +25,7 @@ export interface ConnectionStrategy {
25
25
  getConnectRoutes(): ConnectRoute[];
26
26
  /** External wallet connectors; only when wagmi/bridge exists. Otherwise []. */
27
27
  getConnectors(): ExternalConnectorProps[];
28
- /**
29
- * @param chainId - Current chain for EVM; when provided, uses this for fee sponsorship/rpc instead of config default.
30
- * @param activeEmbeddedAddress - Active embedded account address. When undefined, EVM strategies skip
31
- * `wallet_switchEthereumChain` to avoid sending `account: null` to /v2/accounts/switch-chain (422).
32
- */
33
- initProvider(openfort: Openfort, walletConfig: OpenfortWalletConfig, chainId?: number, activeEmbeddedAddress?: string): Promise<void>;
28
+ /** @param chainId - Current chain for EVM; when provided, uses this for fee sponsorship/rpc instead of config default. */
29
+ initProvider(openfort: Openfort, walletConfig: OpenfortWalletConfig, chainId?: number): Promise<void>;
34
30
  disconnect(openfort: Openfort): Promise<void>;
35
31
  }
@@ -32,7 +32,7 @@ function createEthereumBridgeStrategy(bridge, connectors) {
32
32
  getConnectors() {
33
33
  return connectors;
34
34
  },
35
- async initProvider(openfort, walletConfig, chainIdOverride, activeEmbeddedAddress) {
35
+ async initProvider(openfort, walletConfig, chainIdOverride) {
36
36
  const chainId = chainIdOverride !== null && chainIdOverride !== void 0 ? chainIdOverride : bridge.chainId;
37
37
  const feeSponsorshipObj = chainId != null ? resolveEthereumFeeSponsorship(walletConfig, chainId) : undefined;
38
38
  const rpcUrls = bridge.config.chains.reduce((acc, ch) => {
@@ -53,21 +53,23 @@ function createEthereumBridgeStrategy(bridge, connectors) {
53
53
  },
54
54
  });
55
55
  // Tell the provider which chain is active (EIP-1193). Keeps provider in sync with wagmi.
56
- // Skip if the chain hasn't changed since last init to avoid spurious 422s.
57
- // Skip if no active embedded account: openfort-js sends `account: null` to
58
- // /v2/accounts/switch-chain 422. eth_accounts isn't a reliable proxy here
59
- // it returns the signer address even when the active account isn't set yet.
60
- if (chainId != null && chainId !== lastInitChainId && activeEmbeddedAddress) {
61
- try {
62
- await provider.request({
63
- method: 'wallet_switchEthereumChain',
64
- params: [{ chainId: `0x${chainId.toString(16)}` }],
65
- });
66
- lastInitChainId = chainId;
67
- }
68
- catch (switchErr) {
69
- logger.warn('[@openfort/react] wallet_switchEthereumChain failed — provider may be on wrong chain', switchErr);
70
- }
56
+ // Real iframe-state check: throws when Account.fromStorage is empty (signer not yet
57
+ // configured by configure/create/recover). Avoids spurious /v2/accounts/switch-chain
58
+ // calls (422 with account=null) and redundant calls when already on target chain.
59
+ if (chainId == null || chainId === lastInitChainId)
60
+ return;
61
+ const wallet = await openfort.embeddedWallet.get().catch(() => null);
62
+ if (!(wallet === null || wallet === void 0 ? void 0 : wallet.address) || wallet.chainId === chainId)
63
+ return;
64
+ try {
65
+ await provider.request({
66
+ method: 'wallet_switchEthereumChain',
67
+ params: [{ chainId: `0x${chainId.toString(16)}` }],
68
+ });
69
+ lastInitChainId = chainId;
70
+ }
71
+ catch (switchErr) {
72
+ logger.warn('[@openfort/react] wallet_switchEthereumChain failed — provider may be on wrong chain', switchErr);
71
73
  }
72
74
  },
73
75
  async disconnect(openfort) {
@@ -1 +1 @@
1
- {"version":3,"file":"EthereumBridgeStrategy.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"EthereumBridgeStrategy.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -44,7 +44,7 @@ function createEthereumEmbeddedStrategy(walletConfig) {
44
44
  getConnectors() {
45
45
  return [];
46
46
  },
47
- async initProvider(openfort, config, chainIdOverride, activeEmbeddedAddress) {
47
+ async initProvider(openfort, config, chainIdOverride) {
48
48
  var _a, _b;
49
49
  const ethereum = config === null || config === void 0 ? void 0 : config.ethereum;
50
50
  const chainId = (_a = chainIdOverride !== null && chainIdOverride !== void 0 ? chainIdOverride : ethereum === null || ethereum === void 0 ? void 0 : ethereum.chainId) !== null && _a !== void 0 ? _a : DEFAULT_DEV_CHAIN_ID;
@@ -56,21 +56,23 @@ function createEthereumEmbeddedStrategy(walletConfig) {
56
56
  });
57
57
  // Tell the provider which chain is active (EIP-1193). Without this, the provider
58
58
  // stays on its initial chain (e.g. 80002) while fee sponsorship resolution is per-chain.
59
- // Skip if the chain hasn't changed since last init to avoid spurious 422s.
60
- // Skip if no active embedded account: openfort-js sends `account: null` to
61
- // /v2/accounts/switch-chain 422. eth_accounts isn't a reliable proxy here
62
- // it returns the signer address even when the active account isn't set yet.
63
- if (chainId !== lastInitChainId && activeEmbeddedAddress) {
64
- try {
65
- await provider.request({
66
- method: 'wallet_switchEthereumChain',
67
- params: [{ chainId: `0x${chainId.toString(16)}` }],
68
- });
69
- lastInitChainId = chainId;
70
- }
71
- catch (switchErr) {
72
- logger.warn('[@openfort/react] wallet_switchEthereumChain failed — provider may be on wrong chain', switchErr);
73
- }
59
+ // Real iframe-state check: throws when Account.fromStorage is empty (signer not yet
60
+ // configured by configure/create/recover). Avoids spurious /v2/accounts/switch-chain
61
+ // calls (422 with account=null) and redundant calls when already on target chain.
62
+ if (chainId === lastInitChainId)
63
+ return;
64
+ const wallet = await openfort.embeddedWallet.get().catch(() => null);
65
+ if (!(wallet === null || wallet === void 0 ? void 0 : wallet.address) || wallet.chainId === chainId)
66
+ return;
67
+ try {
68
+ await provider.request({
69
+ method: 'wallet_switchEthereumChain',
70
+ params: [{ chainId: `0x${chainId.toString(16)}` }],
71
+ });
72
+ lastInitChainId = chainId;
73
+ }
74
+ catch (switchErr) {
75
+ logger.warn('[@openfort/react] wallet_switchEthereumChain failed — provider may be on wrong chain', switchErr);
74
76
  }
75
77
  },
76
78
  async disconnect(openfort) {
@@ -1 +1 @@
1
- {"version":3,"file":"EthereumEmbeddedStrategy.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"EthereumEmbeddedStrategy.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -245,24 +245,13 @@ const CoreOpenfortProvider = ({ children, onConnect, onDisconnect, openfortConfi
245
245
  }
246
246
  // Skip if we already initialized with the same parameters
247
247
  const feeSponsorshipPolicy = evmChainId != null ? (_a = resolveEthereumFeeSponsorship(walletConfig, evmChainId)) === null || _a === void 0 ? void 0 : _a.policy : undefined;
248
- // Track whether we had an active embedded address at init time. When it transitions
249
- // from absent → present, we re-init so wallet_switchEthereumChain can finally fire
250
- // (openfort-js needs the active account set, otherwise it sends `account: null` → 422).
251
- const hasActiveEmbeddedAddress = !!storeActiveEmbeddedAddress;
252
- const initKey = {
253
- kind: strategy.kind,
254
- chainType: strategy.chainType,
255
- evmChainId,
256
- feeSponsorshipPolicy,
257
- hasActiveEmbeddedAddress,
258
- };
248
+ const initKey = { kind: strategy.kind, chainType: strategy.chainType, evmChainId, feeSponsorshipPolicy };
259
249
  const prev = lastInitRef.current;
260
250
  if (prev &&
261
251
  prev.kind === initKey.kind &&
262
252
  prev.chainType === initKey.chainType &&
263
253
  prev.evmChainId === initKey.evmChainId &&
264
- prev.feeSponsorshipPolicy === initKey.feeSponsorshipPolicy &&
265
- prev.hasActiveEmbeddedAddress === initKey.hasActiveEmbeddedAddress) {
254
+ prev.feeSponsorshipPolicy === initKey.feeSponsorshipPolicy) {
266
255
  return;
267
256
  }
268
257
  // Prevent concurrent initProvider calls
@@ -272,7 +261,7 @@ const CoreOpenfortProvider = ({ children, onConnect, onDisconnect, openfortConfi
272
261
  initInProgressRef.current = true;
273
262
  let cancelled = false;
274
263
  strategy
275
- .initProvider(openfort, walletConfig, evmChainId, storeActiveEmbeddedAddress !== null && storeActiveEmbeddedAddress !== void 0 ? storeActiveEmbeddedAddress : undefined)
264
+ .initProvider(openfort, walletConfig, evmChainId)
276
265
  .then(() => {
277
266
  if (cancelled)
278
267
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"CoreOpenfortProvider.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CoreOpenfortProvider.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- export declare const OPENFORT_VERSION = "1.0.14";
1
+ export declare const OPENFORT_VERSION = "1.0.15";
package/build/version.js CHANGED
@@ -1,4 +1,4 @@
1
- const OPENFORT_VERSION = '1.0.14';
1
+ const OPENFORT_VERSION = '1.0.15';
2
2
 
3
3
  export { OPENFORT_VERSION };
4
4
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openfort/react",
3
- "version": "1.0.14",
3
+ "version": "1.0.15",
4
4
  "author": "Openfort (https://www.openfort.io)",
5
5
  "license": "BSD-2-Clause license",
6
6
  "description": "The easiest way to integrate Openfort to your project.",
@@ -65,7 +65,7 @@
65
65
  "react"
66
66
  ],
67
67
  "dependencies": {
68
- "@openfort/openfort-js": "^1.2.1",
68
+ "@openfort/openfort-js": "1.3.3",
69
69
  "buffer": "^6.0.3",
70
70
  "detect-browser": "^5.3.0",
71
71
  "fast-password-entropy": "^1.1.1",