@dynamic-labs/sdk-react-core 0.17.0-RC.11 → 0.17.0-RC.12

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.
package/CHANGELOG.md CHANGED
@@ -1,4 +1,12 @@
1
1
 
2
+ ## [0.17.0-RC.12](https://github.com/dynamic-labs/DynamicAuth/compare/v0.17.0-RC.11...v0.17.0-RC.12) (2023-05-09)
3
+
4
+
5
+ ### Bug Fixes
6
+
7
+ * allow opening network picker when unsupported network and only one network enabled ([#2061](https://github.com/dynamic-labs/DynamicAuth/issues/2061)) ([486607f](https://github.com/dynamic-labs/DynamicAuth/commit/486607f8bb2666749ce39f18cf2368c86a78f74f))
8
+ * **DynamicWagmiConnector:** prevent disconnect when WC is not present ([#2063](https://github.com/dynamic-labs/DynamicAuth/issues/2063)) ([ef93623](https://github.com/dynamic-labs/DynamicAuth/commit/ef93623fb68b63a9e89a5958eb87bbddedd15fb6))
9
+
2
10
  ## [0.17.0-RC.11](https://github.com/dynamic-labs/DynamicAuth/compare/v0.17.0-RC.10...v0.17.0-RC.11) (2023-05-08)
3
11
 
4
12
 
package/package.cjs CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var version = "0.17.0-RC.11";
5
+ var version = "0.17.0-RC.12";
6
6
  var dependencies = {
7
7
  "react-focus-lock": "^2.9.2",
8
8
  "@dynamic-labs/iconic": "^0.1.19",
9
- "@dynamic-labs/sdk-api": "0.0.183",
9
+ "@dynamic-labs/sdk-api": "0.0.189",
10
10
  "@dynamic-labs/wallet-book": "^0.0.14",
11
11
  "@hcaptcha/react-hcaptcha": "~1.4.4",
12
12
  "country-list": "^2.3.0",
package/package.js CHANGED
@@ -1,8 +1,8 @@
1
- var version = "0.17.0-RC.11";
1
+ var version = "0.17.0-RC.12";
2
2
  var dependencies = {
3
3
  "react-focus-lock": "^2.9.2",
4
4
  "@dynamic-labs/iconic": "^0.1.19",
5
- "@dynamic-labs/sdk-api": "0.0.183",
5
+ "@dynamic-labs/sdk-api": "0.0.189",
6
6
  "@dynamic-labs/wallet-book": "^0.0.14",
7
7
  "@hcaptcha/react-hcaptcha": "~1.4.4",
8
8
  "country-list": "^2.3.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/sdk-react-core",
3
- "version": "0.17.0-RC.11",
3
+ "version": "0.17.0-RC.12",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/dynamic-labs/DynamicAuth.git",
@@ -9,7 +9,7 @@
9
9
  "dependencies": {
10
10
  "react-focus-lock": "^2.9.2",
11
11
  "@dynamic-labs/iconic": "^0.1.19",
12
- "@dynamic-labs/sdk-api": "0.0.183",
12
+ "@dynamic-labs/sdk-api": "0.0.189",
13
13
  "@dynamic-labs/wallet-book": "^0.0.14",
14
14
  "@hcaptcha/react-hcaptcha": "~1.4.4",
15
15
  "country-list": "^2.3.0",
@@ -17,12 +17,12 @@
17
17
  "formik": "^2.2.9",
18
18
  "qrcode": "1.5.1",
19
19
  "ethers": "^5.7.2",
20
- "@dynamic-labs/logger": "0.17.0-RC.11",
21
- "@dynamic-labs/multi-wallet": "0.17.0-RC.11",
22
- "@dynamic-labs/rpc-providers": "0.17.0-RC.11",
23
- "@dynamic-labs/types": "0.17.0-RC.11",
24
- "@dynamic-labs/utils": "0.17.0-RC.11",
25
- "@dynamic-labs/wallet-connector-core": "0.17.0-RC.11"
20
+ "@dynamic-labs/logger": "0.17.0-RC.12",
21
+ "@dynamic-labs/multi-wallet": "0.17.0-RC.12",
22
+ "@dynamic-labs/rpc-providers": "0.17.0-RC.12",
23
+ "@dynamic-labs/types": "0.17.0-RC.12",
24
+ "@dynamic-labs/utils": "0.17.0-RC.12",
25
+ "@dynamic-labs/wallet-connector-core": "0.17.0-RC.12"
26
26
  },
27
27
  "devDependencies": {
28
28
  "semver": "^7.3.8"
package/src/index.cjs CHANGED
@@ -72,7 +72,7 @@ require('./lib/utils/constants/colors.cjs');
72
72
  require('@dynamic-labs/multi-wallet');
73
73
  require('@dynamic-labs/utils');
74
74
  var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
75
- require('@dynamic-labs/sdk-api');
75
+ var sdkApi = require('@dynamic-labs/sdk-api');
76
76
  var ShadowDOM = require('./lib/components/ShadowDOM/ShadowDOM.cjs');
77
77
  require('./lib/context/ThemeContext/ThemeContext.cjs');
78
78
  require('react-dom');
@@ -187,6 +187,10 @@ Object.defineProperty(exports, 'normalizeWalletName', {
187
187
  enumerable: true,
188
188
  get: function () { return walletConnectorCore.normalizeWalletName; }
189
189
  });
190
+ Object.defineProperty(exports, 'DynamicJwtFromJSON', {
191
+ enumerable: true,
192
+ get: function () { return sdkApi.DynamicJwtFromJSON; }
193
+ });
190
194
  exports.ShadowDOM = ShadowDOM.ShadowDOM;
191
195
  exports.isSameWalletName = isSameWalletName.isSameWalletName;
192
196
  exports.useWalletItemActions = useWalletItemActions.useWalletItemActions;
package/src/index.d.ts CHANGED
@@ -27,3 +27,4 @@ export { useUserUpdateRequest } from './lib/utils/hooks/useUserUpdateRequest/use
27
27
  export type { UpdateUserFieldsArg } from './lib/utils/hooks/useUserUpdateRequest/useUserUpdateRequest';
28
28
  export type { VerifyEmailCallback } from './lib/utils/hooks/authenticationHooks/useEmailVerificationRequest';
29
29
  export { useEmailVerificationRequest } from './lib/utils/hooks/authenticationHooks/useEmailVerificationRequest';
30
+ export { type DynamicJwt, DynamicJwtFromJSON } from '@dynamic-labs/sdk-api';
package/src/index.js CHANGED
@@ -68,7 +68,7 @@ import './lib/utils/constants/colors.js';
68
68
  import '@dynamic-labs/multi-wallet';
69
69
  import '@dynamic-labs/utils';
70
70
  export { normalizeWalletName } from '@dynamic-labs/wallet-connector-core';
71
- import '@dynamic-labs/sdk-api';
71
+ export { DynamicJwtFromJSON } from '@dynamic-labs/sdk-api';
72
72
  export { ShadowDOM } from './lib/components/ShadowDOM/ShadowDOM.js';
73
73
  import './lib/context/ThemeContext/ThemeContext.js';
74
74
  import 'react-dom';
@@ -17,6 +17,8 @@ var index = require('../../shared/utils/hooks/useOnClickOutside/index.cjs');
17
17
  require('../../shared/consts/index.cjs');
18
18
  var useInternalDynamicContext = require('../../context/DynamicContext/useInternalDynamicContext.cjs');
19
19
  var classNames = require('../../utils/functions/classNames/classNames.cjs');
20
+ require('@dynamic-labs/multi-wallet');
21
+ var isNetworkUnsupported = require('../../utils/functions/isNetworkUnsupported/isNetworkUnsupported.cjs');
20
22
  var NetworkControl = require('./components/NetworkControl/NetworkControl.cjs');
21
23
  var ActionList = require('./components/ActionList/ActionList.cjs');
22
24
  var NetworkAction = require('./components/NetworkAction/NetworkAction.cjs');
@@ -25,6 +27,7 @@ const NetworkPicker = ({ activeClassName = '', buttonClassName = '', checkboxCla
25
27
  const pickerRef = React.useRef(null);
26
28
  const [newNetworkId, setNewNetworkId] = React.useState(undefined);
27
29
  const { loadingNetwork, network, setNetwork } = useInternalDynamicContext.useInternalDynamicContext();
30
+ const shouldAllowOpenDropdown = isNetworkUnsupported.isNetworkUnsupported(network, evmNetworks) || (evmNetworks === null || evmNetworks === void 0 ? void 0 : evmNetworks.length) > 1;
28
31
  index.useOnClickOutside(pickerRef, () => {
29
32
  if (isNetworkPickerOpen) {
30
33
  setIsNetworkPickerOpen(false);
@@ -49,7 +52,7 @@ const NetworkPicker = ({ activeClassName = '', buttonClassName = '', checkboxCla
49
52
  setIsNetworkPickerOpen(false);
50
53
  }
51
54
  });
52
- return (jsxRuntime.jsxs("div", Object.assign({ className: classNames.classNames('non-widget-network-picker', mainClassName), ref: pickerRef }, { children: [jsxRuntime.jsx(NetworkControl.NetworkControl, { evmNetworks: evmNetworks, activeClassName: activeClassName, network: network, loading: loadingNetwork, isOpen: isNetworkPickerOpen, setIsOpen: setIsNetworkPickerOpen, walletConnector: connector, showNetworkName: showNetworkName, buttonClassName: buttonClassName }), (evmNetworks === null || evmNetworks === void 0 ? void 0 : evmNetworks.length) > 1 && (jsxRuntime.jsx(ActionList.ActionList, Object.assign({ className: listClassName, title: 'Select network', isOpen: isNetworkPickerOpen, setIsOpen: setIsNetworkPickerOpen }, { children: jsxRuntime.jsx("div", Object.assign({ className: 'network-picker__dropdown' }, { children: evmNetworks.map(({ name, networkId, vanityName, iconUrls }) => (jsxRuntime.jsx(NetworkAction.NetworkAction, { iconUrl: iconUrls === null || iconUrls === void 0 ? void 0 : iconUrls[0], networkId: networkId, networkName: vanityName || name, network: network, onClick: handleNetworkChange, checkboxClassName: checkboxClassName, newNetworkId: newNetworkId }, networkId))) })) })))] })));
55
+ return (jsxRuntime.jsxs("div", Object.assign({ className: classNames.classNames('non-widget-network-picker', mainClassName), ref: pickerRef }, { children: [jsxRuntime.jsx(NetworkControl.NetworkControl, { evmNetworks: evmNetworks, activeClassName: activeClassName, network: network, loading: loadingNetwork, isOpen: isNetworkPickerOpen, setIsOpen: setIsNetworkPickerOpen, walletConnector: connector, showNetworkName: showNetworkName, buttonClassName: buttonClassName }), shouldAllowOpenDropdown && (jsxRuntime.jsx(ActionList.ActionList, Object.assign({ className: listClassName, title: 'Select network', isOpen: isNetworkPickerOpen, setIsOpen: setIsNetworkPickerOpen }, { children: jsxRuntime.jsx("div", Object.assign({ className: 'network-picker__dropdown' }, { children: evmNetworks.map(({ name, networkId, vanityName, iconUrls }) => (jsxRuntime.jsx(NetworkAction.NetworkAction, { iconUrl: iconUrls === null || iconUrls === void 0 ? void 0 : iconUrls[0], networkId: networkId, networkName: vanityName || name, network: network, onClick: handleNetworkChange, checkboxClassName: checkboxClassName, newNetworkId: newNetworkId }, networkId))) })) })))] })));
53
56
  };
54
57
 
55
58
  exports.NetworkPicker = NetworkPicker;
@@ -13,6 +13,8 @@ import { useOnClickOutside } from '../../shared/utils/hooks/useOnClickOutside/in
13
13
  import '../../shared/consts/index.js';
14
14
  import { useInternalDynamicContext } from '../../context/DynamicContext/useInternalDynamicContext.js';
15
15
  import { classNames } from '../../utils/functions/classNames/classNames.js';
16
+ import '@dynamic-labs/multi-wallet';
17
+ import { isNetworkUnsupported } from '../../utils/functions/isNetworkUnsupported/isNetworkUnsupported.js';
16
18
  import { NetworkControl } from './components/NetworkControl/NetworkControl.js';
17
19
  import { ActionList } from './components/ActionList/ActionList.js';
18
20
  import { NetworkAction } from './components/NetworkAction/NetworkAction.js';
@@ -21,6 +23,7 @@ const NetworkPicker = ({ activeClassName = '', buttonClassName = '', checkboxCla
21
23
  const pickerRef = useRef(null);
22
24
  const [newNetworkId, setNewNetworkId] = useState(undefined);
23
25
  const { loadingNetwork, network, setNetwork } = useInternalDynamicContext();
26
+ const shouldAllowOpenDropdown = isNetworkUnsupported(network, evmNetworks) || (evmNetworks === null || evmNetworks === void 0 ? void 0 : evmNetworks.length) > 1;
24
27
  useOnClickOutside(pickerRef, () => {
25
28
  if (isNetworkPickerOpen) {
26
29
  setIsNetworkPickerOpen(false);
@@ -45,7 +48,7 @@ const NetworkPicker = ({ activeClassName = '', buttonClassName = '', checkboxCla
45
48
  setIsNetworkPickerOpen(false);
46
49
  }
47
50
  });
48
- return (jsxs("div", Object.assign({ className: classNames('non-widget-network-picker', mainClassName), ref: pickerRef }, { children: [jsx(NetworkControl, { evmNetworks: evmNetworks, activeClassName: activeClassName, network: network, loading: loadingNetwork, isOpen: isNetworkPickerOpen, setIsOpen: setIsNetworkPickerOpen, walletConnector: connector, showNetworkName: showNetworkName, buttonClassName: buttonClassName }), (evmNetworks === null || evmNetworks === void 0 ? void 0 : evmNetworks.length) > 1 && (jsx(ActionList, Object.assign({ className: listClassName, title: 'Select network', isOpen: isNetworkPickerOpen, setIsOpen: setIsNetworkPickerOpen }, { children: jsx("div", Object.assign({ className: 'network-picker__dropdown' }, { children: evmNetworks.map(({ name, networkId, vanityName, iconUrls }) => (jsx(NetworkAction, { iconUrl: iconUrls === null || iconUrls === void 0 ? void 0 : iconUrls[0], networkId: networkId, networkName: vanityName || name, network: network, onClick: handleNetworkChange, checkboxClassName: checkboxClassName, newNetworkId: newNetworkId }, networkId))) })) })))] })));
51
+ return (jsxs("div", Object.assign({ className: classNames('non-widget-network-picker', mainClassName), ref: pickerRef }, { children: [jsx(NetworkControl, { evmNetworks: evmNetworks, activeClassName: activeClassName, network: network, loading: loadingNetwork, isOpen: isNetworkPickerOpen, setIsOpen: setIsNetworkPickerOpen, walletConnector: connector, showNetworkName: showNetworkName, buttonClassName: buttonClassName }), shouldAllowOpenDropdown && (jsx(ActionList, Object.assign({ className: listClassName, title: 'Select network', isOpen: isNetworkPickerOpen, setIsOpen: setIsNetworkPickerOpen }, { children: jsx("div", Object.assign({ className: 'network-picker__dropdown' }, { children: evmNetworks.map(({ name, networkId, vanityName, iconUrls }) => (jsx(NetworkAction, { iconUrl: iconUrls === null || iconUrls === void 0 ? void 0 : iconUrls[0], networkId: networkId, networkName: vanityName || name, network: network, onClick: handleNetworkChange, checkboxClassName: checkboxClassName, newNetworkId: newNetworkId }, networkId))) })) })))] })));
49
52
  };
50
53
 
51
54
  export { NetworkPicker };
@@ -39,7 +39,7 @@ var UnsupportedNetwork = require('../UnsupportedNetwork/UnsupportedNetwork.cjs')
39
39
 
40
40
  const EvmNetworkControl = ({ evmNetworks, className = '', activeClassName = '', network, walletConnector, isOpen, setIsOpen, showNetworkName = false, }) => {
41
41
  var _a, _b;
42
- const evmNetwork = evmNetworks === null || evmNetworks === void 0 ? void 0 : evmNetworks.find((element) => network && element.chainId === utils.parseChainId(network));
42
+ const currentEvmNetwork = evmNetworks === null || evmNetworks === void 0 ? void 0 : evmNetworks.find((element) => network && element.chainId === utils.parseChainId(network));
43
43
  if (evmNetworks && !evmNetworks.length) {
44
44
  return (jsxRuntime.jsx("div", Object.assign({ "data-testid": 'EvmNetworkControl', className: classNames.classNames('evm-network-control__container evm-network-control__container--error', className) }, { children: jsxRuntime.jsx(UnsupportedNetwork.UnsupportedNetwork, { showMsg: showNetworkName }) })));
45
45
  }
@@ -51,20 +51,20 @@ const EvmNetworkControl = ({ evmNetworks, className = '', activeClassName = '',
51
51
  [activeClassName]: isOpen,
52
52
  'evm-network-control__container': Boolean(walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.supportsNetworkSwitching()),
53
53
  });
54
- if (!evmNetwork) {
54
+ if (!currentEvmNetwork) {
55
55
  return (jsxRuntime.jsxs("button", Object.assign({ "data-testid": 'EvmNetworkControl', type: 'button', onClick: () => setIsOpen(!isOpen), className: unsupportedNetworkClassName }, { children: [jsxRuntime.jsx(UnsupportedNetwork.UnsupportedNetwork, { showMsg: showNetworkName }), jsxRuntime.jsx(Icon.Icon, Object.assign({ color: 'text-primary', size: 'small', className: classNames.classNames('evm-network-control__arrow-icon', {
56
56
  'evm-network-control__arrow-icon--active': isOpen,
57
57
  }) }, { children: jsxRuntime.jsx(stroke.ReactComponent, {}) }))] })));
58
58
  }
59
59
  return (jsxRuntime.jsx("div", Object.assign({ "data-testid": 'EvmNetworkControl', onClick: () => network && setIsOpen(!isOpen), className: classNames.classNames('evm-network-control__container', {
60
60
  [activeClassName]: isOpen,
61
- }, className) }, { children: evmNetwork.name && ((_a = evmNetwork.iconUrls) === null || _a === void 0 ? void 0 : _a[0]) ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Icon.Icon, Object.assign({ size: 'small' }, { children: jsxRuntime.jsx("img", { src: evmNetwork.iconUrls[0], alt: `${evmNetwork.name} icon` }) })), showNetworkName && (jsxRuntime.jsx(Typography.Typography, Object.assign({ className: 'evm-network-control__network-name', as: 'span', variant: 'body_small' }, { children: evmNetwork.vanityName || evmNetwork.name })))] })) : (jsxRuntime.jsx(UnsupportedNetwork.UnsupportedNetwork, { showMsg: showNetworkName })) })));
61
+ }, className) }, { children: currentEvmNetwork.name && ((_a = currentEvmNetwork.iconUrls) === null || _a === void 0 ? void 0 : _a[0]) ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Icon.Icon, Object.assign({ size: 'small' }, { children: jsxRuntime.jsx("img", { src: currentEvmNetwork.iconUrls[0], alt: `${currentEvmNetwork.name} icon` }) })), showNetworkName && (jsxRuntime.jsx(Typography.Typography, Object.assign({ className: 'evm-network-control__network-name', as: 'span', variant: 'body_small' }, { children: currentEvmNetwork.vanityName || currentEvmNetwork.name })))] })) : (jsxRuntime.jsx(UnsupportedNetwork.UnsupportedNetwork, { showMsg: showNetworkName })) })));
62
62
  }
63
63
  return (jsxRuntime.jsxs("button", Object.assign({ "data-testid": 'EvmNetworkControl', type: 'button', onClick: () => network && setIsOpen(!isOpen), className: classNames.classNames(className, {
64
64
  [activeClassName]: isOpen,
65
65
  'evm-network-control__container': Boolean(walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.supportsNetworkSwitching()),
66
- 'evm-network-control__container--error': !(evmNetwork === null || evmNetwork === void 0 ? void 0 : evmNetwork.name),
67
- }) }, { children: [(evmNetwork === null || evmNetwork === void 0 ? void 0 : evmNetwork.name) && ((_b = evmNetwork === null || evmNetwork === void 0 ? void 0 : evmNetwork.iconUrls) === null || _b === void 0 ? void 0 : _b[0]) ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Icon.Icon, Object.assign({ size: 'small' }, { children: jsxRuntime.jsx("img", { src: evmNetwork.iconUrls[0], alt: `${evmNetwork.name} icon` }) })), showNetworkName && (jsxRuntime.jsx(Typography.Typography, Object.assign({ className: 'evm-network-control__network-name', as: 'span', variant: 'body_small' }, { children: evmNetwork.vanityName || evmNetwork.name })))] })) : (jsxRuntime.jsx(UnsupportedNetwork.UnsupportedNetwork, { showMsg: showNetworkName })), evmNetworks && evmNetworks.length > 1 && (jsxRuntime.jsx(Icon.Icon, Object.assign({ color: 'text-primary', size: 'small', className: classNames.classNames('evm-network-control__arrow-icon', {
66
+ 'evm-network-control__container--error': !(currentEvmNetwork === null || currentEvmNetwork === void 0 ? void 0 : currentEvmNetwork.name),
67
+ }) }, { children: [(currentEvmNetwork === null || currentEvmNetwork === void 0 ? void 0 : currentEvmNetwork.name) && ((_b = currentEvmNetwork === null || currentEvmNetwork === void 0 ? void 0 : currentEvmNetwork.iconUrls) === null || _b === void 0 ? void 0 : _b[0]) ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Icon.Icon, Object.assign({ size: 'small' }, { children: jsxRuntime.jsx("img", { src: currentEvmNetwork.iconUrls[0], alt: `${currentEvmNetwork.name} icon` }) })), showNetworkName && (jsxRuntime.jsx(Typography.Typography, Object.assign({ className: 'evm-network-control__network-name', as: 'span', variant: 'body_small' }, { children: currentEvmNetwork.vanityName || currentEvmNetwork.name })))] })) : (jsxRuntime.jsx(UnsupportedNetwork.UnsupportedNetwork, { showMsg: showNetworkName })), evmNetworks && evmNetworks.length > 1 && (jsxRuntime.jsx(Icon.Icon, Object.assign({ color: 'text-primary', size: 'small', className: classNames.classNames('evm-network-control__arrow-icon', {
68
68
  'evm-network-control__arrow-icon--active': isOpen,
69
69
  }) }, { children: jsxRuntime.jsx(stroke.ReactComponent, {}) })))] })));
70
70
  };
@@ -35,7 +35,7 @@ import { UnsupportedNetwork } from '../UnsupportedNetwork/UnsupportedNetwork.js'
35
35
 
36
36
  const EvmNetworkControl = ({ evmNetworks, className = '', activeClassName = '', network, walletConnector, isOpen, setIsOpen, showNetworkName = false, }) => {
37
37
  var _a, _b;
38
- const evmNetwork = evmNetworks === null || evmNetworks === void 0 ? void 0 : evmNetworks.find((element) => network && element.chainId === parseChainId(network));
38
+ const currentEvmNetwork = evmNetworks === null || evmNetworks === void 0 ? void 0 : evmNetworks.find((element) => network && element.chainId === parseChainId(network));
39
39
  if (evmNetworks && !evmNetworks.length) {
40
40
  return (jsx("div", Object.assign({ "data-testid": 'EvmNetworkControl', className: classNames('evm-network-control__container evm-network-control__container--error', className) }, { children: jsx(UnsupportedNetwork, { showMsg: showNetworkName }) })));
41
41
  }
@@ -47,20 +47,20 @@ const EvmNetworkControl = ({ evmNetworks, className = '', activeClassName = '',
47
47
  [activeClassName]: isOpen,
48
48
  'evm-network-control__container': Boolean(walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.supportsNetworkSwitching()),
49
49
  });
50
- if (!evmNetwork) {
50
+ if (!currentEvmNetwork) {
51
51
  return (jsxs("button", Object.assign({ "data-testid": 'EvmNetworkControl', type: 'button', onClick: () => setIsOpen(!isOpen), className: unsupportedNetworkClassName }, { children: [jsx(UnsupportedNetwork, { showMsg: showNetworkName }), jsx(Icon, Object.assign({ color: 'text-primary', size: 'small', className: classNames('evm-network-control__arrow-icon', {
52
52
  'evm-network-control__arrow-icon--active': isOpen,
53
53
  }) }, { children: jsx(SvgStroke, {}) }))] })));
54
54
  }
55
55
  return (jsx("div", Object.assign({ "data-testid": 'EvmNetworkControl', onClick: () => network && setIsOpen(!isOpen), className: classNames('evm-network-control__container', {
56
56
  [activeClassName]: isOpen,
57
- }, className) }, { children: evmNetwork.name && ((_a = evmNetwork.iconUrls) === null || _a === void 0 ? void 0 : _a[0]) ? (jsxs(Fragment, { children: [jsx(Icon, Object.assign({ size: 'small' }, { children: jsx("img", { src: evmNetwork.iconUrls[0], alt: `${evmNetwork.name} icon` }) })), showNetworkName && (jsx(Typography, Object.assign({ className: 'evm-network-control__network-name', as: 'span', variant: 'body_small' }, { children: evmNetwork.vanityName || evmNetwork.name })))] })) : (jsx(UnsupportedNetwork, { showMsg: showNetworkName })) })));
57
+ }, className) }, { children: currentEvmNetwork.name && ((_a = currentEvmNetwork.iconUrls) === null || _a === void 0 ? void 0 : _a[0]) ? (jsxs(Fragment, { children: [jsx(Icon, Object.assign({ size: 'small' }, { children: jsx("img", { src: currentEvmNetwork.iconUrls[0], alt: `${currentEvmNetwork.name} icon` }) })), showNetworkName && (jsx(Typography, Object.assign({ className: 'evm-network-control__network-name', as: 'span', variant: 'body_small' }, { children: currentEvmNetwork.vanityName || currentEvmNetwork.name })))] })) : (jsx(UnsupportedNetwork, { showMsg: showNetworkName })) })));
58
58
  }
59
59
  return (jsxs("button", Object.assign({ "data-testid": 'EvmNetworkControl', type: 'button', onClick: () => network && setIsOpen(!isOpen), className: classNames(className, {
60
60
  [activeClassName]: isOpen,
61
61
  'evm-network-control__container': Boolean(walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.supportsNetworkSwitching()),
62
- 'evm-network-control__container--error': !(evmNetwork === null || evmNetwork === void 0 ? void 0 : evmNetwork.name),
63
- }) }, { children: [(evmNetwork === null || evmNetwork === void 0 ? void 0 : evmNetwork.name) && ((_b = evmNetwork === null || evmNetwork === void 0 ? void 0 : evmNetwork.iconUrls) === null || _b === void 0 ? void 0 : _b[0]) ? (jsxs(Fragment, { children: [jsx(Icon, Object.assign({ size: 'small' }, { children: jsx("img", { src: evmNetwork.iconUrls[0], alt: `${evmNetwork.name} icon` }) })), showNetworkName && (jsx(Typography, Object.assign({ className: 'evm-network-control__network-name', as: 'span', variant: 'body_small' }, { children: evmNetwork.vanityName || evmNetwork.name })))] })) : (jsx(UnsupportedNetwork, { showMsg: showNetworkName })), evmNetworks && evmNetworks.length > 1 && (jsx(Icon, Object.assign({ color: 'text-primary', size: 'small', className: classNames('evm-network-control__arrow-icon', {
62
+ 'evm-network-control__container--error': !(currentEvmNetwork === null || currentEvmNetwork === void 0 ? void 0 : currentEvmNetwork.name),
63
+ }) }, { children: [(currentEvmNetwork === null || currentEvmNetwork === void 0 ? void 0 : currentEvmNetwork.name) && ((_b = currentEvmNetwork === null || currentEvmNetwork === void 0 ? void 0 : currentEvmNetwork.iconUrls) === null || _b === void 0 ? void 0 : _b[0]) ? (jsxs(Fragment, { children: [jsx(Icon, Object.assign({ size: 'small' }, { children: jsx("img", { src: currentEvmNetwork.iconUrls[0], alt: `${currentEvmNetwork.name} icon` }) })), showNetworkName && (jsx(Typography, Object.assign({ className: 'evm-network-control__network-name', as: 'span', variant: 'body_small' }, { children: currentEvmNetwork.vanityName || currentEvmNetwork.name })))] })) : (jsx(UnsupportedNetwork, { showMsg: showNetworkName })), evmNetworks && evmNetworks.length > 1 && (jsx(Icon, Object.assign({ color: 'text-primary', size: 'small', className: classNames('evm-network-control__arrow-icon', {
64
64
  'evm-network-control__arrow-icon--active': isOpen,
65
65
  }) }, { children: jsx(SvgStroke, {}) })))] })));
66
66
  };
@@ -13,3 +13,4 @@ export * from './pixelToRem';
13
13
  export * from './isProgrammableNetworkSwitchSupported';
14
14
  export * from './getEnabledOAuthProviders';
15
15
  export * from './shouldManuallyReconnectOnRefresh';
16
+ export * from './isNetworkUnsupported';
@@ -0,0 +1 @@
1
+ export { isNetworkUnsupported } from './isNetworkUnsupported';
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var utils = require('@dynamic-labs/utils');
6
+
7
+ // Network is not supported if:
8
+ // - its undefined
9
+ // - its not in evmNetworks
10
+ const isNetworkUnsupported = (network, evmNetworks) => !(evmNetworks === null || evmNetworks === void 0 ? void 0 : evmNetworks.find((element) => network && element.chainId === utils.parseChainId(network)));
11
+
12
+ exports.isNetworkUnsupported = isNetworkUnsupported;
@@ -0,0 +1,2 @@
1
+ import { EvmNetwork } from '@dynamic-labs/types';
2
+ export declare const isNetworkUnsupported: (network: string | number | undefined, evmNetworks: EvmNetwork[]) => boolean;
@@ -0,0 +1,8 @@
1
+ import { parseChainId } from '@dynamic-labs/utils';
2
+
3
+ // Network is not supported if:
4
+ // - its undefined
5
+ // - its not in evmNetworks
6
+ const isNetworkUnsupported = (network, evmNetworks) => !(evmNetworks === null || evmNetworks === void 0 ? void 0 : evmNetworks.find((element) => network && element.chainId === parseChainId(network)));
7
+
8
+ export { isNetworkUnsupported };
@@ -4,16 +4,39 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _tslib = require('../../../../../_virtual/_tslib.cjs');
6
6
  var React = require('react');
7
+ require('@dynamic-labs/sdk-api');
8
+ require('../../../shared/logger.cjs');
9
+ var getFromLS = require('../../../shared/utils/functions/storage/getFromLS.cjs');
10
+ require('@dynamic-labs/iconic');
11
+ require('@dynamic-labs/wallet-connector-core');
12
+ require('react/jsx-runtime');
13
+ require('../../../context/ViewContext/ViewContext.cjs');
14
+ require('@dynamic-labs/utils');
15
+ var localStorage = require('../../constants/localStorage.cjs');
16
+ require('../../constants/colors.cjs');
17
+ require('ethers');
18
+ require('../../../shared/consts/index.cjs');
7
19
  var handleUnlinkHelper = require('../../functions/handleUnlinkHelper/handleUnlinkHelper.cjs');
8
20
  var isSameWalletName = require('../../functions/isSameWalletName/isSameWalletName.cjs');
9
21
 
10
22
  const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWalletId, secondaryWallets, setUser, }) => {
11
23
  const callback = React.useCallback((walletId) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
12
- if (walletId === primaryWalletId)
24
+ var _a;
25
+ // when we call handleUnlinkWallet on the same execution stack as setPrimaryWallet, the value of
26
+ // primaryWalletId coming from the DynamicContext will be the old one in this callback function
27
+ // so we need to get the latest value from LS
28
+ // e.g. primary wallet id is 1234, and we have a function like this:
29
+ // async function setPrimaryWalletAndUnlink() {
30
+ // await setPrimaryWallet('5678');
31
+ // handleUnlinkWallet('1234');
32
+ // }
33
+ // without fetching from LS, primaryWalletId would still be 1234 when handleUnlinkWallet runs in the example above
34
+ const currentPrimaryWalletId = (_a = getFromLS.getFromLS(localStorage.PRIMARY_WALLET_ID)) !== null && _a !== void 0 ? _a : primaryWalletId;
35
+ if (walletId === currentPrimaryWalletId)
13
36
  return;
14
37
  const newUser = yield handleUnlinkHelper.handleUnlinkHelper({
15
38
  environmentId,
16
- primaryWalletId,
39
+ primaryWalletId: currentPrimaryWalletId,
17
40
  walletId,
18
41
  });
19
42
  if (newUser) {
@@ -1,15 +1,38 @@
1
1
  import { __awaiter } from '../../../../../_virtual/_tslib.js';
2
2
  import { useCallback } from 'react';
3
+ import '@dynamic-labs/sdk-api';
4
+ import '../../../shared/logger.js';
5
+ import { getFromLS } from '../../../shared/utils/functions/storage/getFromLS.js';
6
+ import '@dynamic-labs/iconic';
7
+ import '@dynamic-labs/wallet-connector-core';
8
+ import 'react/jsx-runtime';
9
+ import '../../../context/ViewContext/ViewContext.js';
10
+ import '@dynamic-labs/utils';
11
+ import { PRIMARY_WALLET_ID } from '../../constants/localStorage.js';
12
+ import '../../constants/colors.js';
13
+ import 'ethers';
14
+ import '../../../shared/consts/index.js';
3
15
  import { handleUnlinkHelper } from '../../functions/handleUnlinkHelper/handleUnlinkHelper.js';
4
16
  import { isSameWalletName } from '../../functions/isSameWalletName/isSameWalletName.js';
5
17
 
6
18
  const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWalletId, secondaryWallets, setUser, }) => {
7
19
  const callback = useCallback((walletId) => __awaiter(void 0, void 0, void 0, function* () {
8
- if (walletId === primaryWalletId)
20
+ var _a;
21
+ // when we call handleUnlinkWallet on the same execution stack as setPrimaryWallet, the value of
22
+ // primaryWalletId coming from the DynamicContext will be the old one in this callback function
23
+ // so we need to get the latest value from LS
24
+ // e.g. primary wallet id is 1234, and we have a function like this:
25
+ // async function setPrimaryWalletAndUnlink() {
26
+ // await setPrimaryWallet('5678');
27
+ // handleUnlinkWallet('1234');
28
+ // }
29
+ // without fetching from LS, primaryWalletId would still be 1234 when handleUnlinkWallet runs in the example above
30
+ const currentPrimaryWalletId = (_a = getFromLS(PRIMARY_WALLET_ID)) !== null && _a !== void 0 ? _a : primaryWalletId;
31
+ if (walletId === currentPrimaryWalletId)
9
32
  return;
10
33
  const newUser = yield handleUnlinkHelper({
11
34
  environmentId,
12
- primaryWalletId,
35
+ primaryWalletId: currentPrimaryWalletId,
13
36
  walletId,
14
37
  });
15
38
  if (newUser) {