@dynamic-labs/sdk-react-core 0.19.0-alpha.21 → 0.19.0-alpha.23

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 (39) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +8 -8
  5. package/src/index.cjs +0 -2
  6. package/src/index.d.ts +1 -1
  7. package/src/index.js +0 -1
  8. package/src/lib/Main.cjs +3 -3
  9. package/src/lib/Main.js +3 -3
  10. package/src/lib/components/SignMessagePreview/SignMessagePreview.cjs +1 -1
  11. package/src/lib/components/SignMessagePreview/SignMessagePreview.js +1 -1
  12. package/src/lib/components/SocialSignIn/SocialSignIn.cjs +2 -1
  13. package/src/lib/components/SocialSignIn/SocialSignIn.js +2 -1
  14. package/src/lib/context/DynamicContext/DynamicContext.cjs +5 -8
  15. package/src/lib/context/DynamicContext/DynamicContext.js +5 -8
  16. package/src/lib/context/DynamicContext/types/index.d.ts +1 -1
  17. package/src/lib/data/api.js +1 -1
  18. package/src/lib/utils/functions/getOauthLoginUrl/getOauthLoginUrl.cjs +25 -3
  19. package/src/lib/utils/functions/getOauthLoginUrl/getOauthLoginUrl.d.ts +1 -1
  20. package/src/lib/utils/functions/getOauthLoginUrl/getOauthLoginUrl.js +25 -3
  21. package/src/lib/utils/functions/getProviderByType/getProviderByType.cjs +7 -0
  22. package/src/lib/utils/functions/getProviderByType/getProviderByType.d.ts +2 -0
  23. package/src/lib/utils/functions/getProviderByType/getProviderByType.js +3 -0
  24. package/src/lib/utils/functions/getProviderByType/index.d.ts +1 -0
  25. package/src/lib/utils/functions/index.d.ts +1 -0
  26. package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.cjs +9 -9
  27. package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.d.ts +3 -3
  28. package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.js +9 -9
  29. package/src/lib/utils/hooks/useFetchProjectSettings/useFetchProjectSettings.cjs +10 -3
  30. package/src/lib/utils/hooks/useFetchProjectSettings/useFetchProjectSettings.js +11 -4
  31. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +38 -12
  32. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +38 -12
  33. package/src/lib/widgets/DynamicBridgeWidget/components/DynamicBridgeWalletCardBody/DynamicBridgeWalletCardBody.cjs +3 -3
  34. package/src/lib/widgets/DynamicBridgeWidget/components/DynamicBridgeWalletCardBody/DynamicBridgeWalletCardBody.d.ts +1 -1
  35. package/src/lib/widgets/DynamicBridgeWidget/components/DynamicBridgeWalletCardBody/DynamicBridgeWalletCardBody.js +3 -3
  36. package/src/lib/widgets/DynamicBridgeWidget/views/WalletsView/WalletsView.cjs +2 -2
  37. package/src/lib/widgets/DynamicBridgeWidget/views/WalletsView/WalletsView.js +2 -2
  38. package/src/lib/widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs +2 -4
  39. package/src/lib/widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.js +2 -4
package/CHANGELOG.md CHANGED
@@ -1,4 +1,32 @@
1
1
 
2
+ ## [0.19.0-alpha.23](https://github.com/dynamic-labs/DynamicAuth/compare/v0.19.0-alpha.22...v0.19.0-alpha.23) (2023-10-24)
3
+
4
+
5
+ ### Bug Fixes
6
+
7
+ * better handling of CB wallet disconnect + upgrade to 3.7.2 ([#3659](https://github.com/dynamic-labs/DynamicAuth/issues/3659)) ([42a0857](https://github.com/dynamic-labs/DynamicAuth/commit/42a0857c66101cde901661e844c66ba324ff641b))
8
+ * calculate the settings override in real time ([#3671](https://github.com/dynamic-labs/DynamicAuth/issues/3671)) ([06cf28d](https://github.com/dynamic-labs/DynamicAuth/commit/06cf28d4dc29dda21312691985ed1b903d3120cc))
9
+ * handle rp.id edgecases for private domains due to webauthn restrictions on scoping to them ([#3658](https://github.com/dynamic-labs/DynamicAuth/issues/3658)) ([7067bc5](https://github.com/dynamic-labs/DynamicAuth/commit/7067bc5110afb8a010f13c2b2e0170faaa840995))
10
+ * twitter origin check should also look for current window location origin ([#3676](https://github.com/dynamic-labs/DynamicAuth/issues/3676)) ([6c30989](https://github.com/dynamic-labs/DynamicAuth/commit/6c30989d4cde3516a177f6290b5376c5d4c61cbc))
11
+
12
+ ## [0.19.0-alpha.22](https://github.com/dynamic-labs/DynamicAuth/compare/v0.19.0-alpha.21...v0.19.0-alpha.22) (2023-10-23)
13
+
14
+
15
+ ### ⚠ BREAKING CHANGES
16
+
17
+ * rename unlinkConnectedWallet to disconnectWallet (#3595)
18
+
19
+ ### Features
20
+
21
+ * rename unlinkConnectedWallet to disconnectWallet ([#3595](https://github.com/dynamic-labs/DynamicAuth/issues/3595)) ([ac4a59e](https://github.com/dynamic-labs/DynamicAuth/commit/ac4a59ee5e50814fdb4190f07f5905b0c1499c7d))
22
+
23
+
24
+ ### Bug Fixes
25
+
26
+ * add support for apple oauth ([#3568](https://github.com/dynamic-labs/DynamicAuth/issues/3568)) ([10455fd](https://github.com/dynamic-labs/DynamicAuth/commit/10455fd74f22c6a1d66409fc01650d6ec68c2156))
27
+ * only process oauth message coming from the expected origin ([#3653](https://github.com/dynamic-labs/DynamicAuth/issues/3653)) ([3bf48d4](https://github.com/dynamic-labs/DynamicAuth/commit/3bf48d4a61fa624c30ff11861e6f5db4c33ef5c3))
28
+ * **SignMessagePreview:** safely render message to sign ([#3655](https://github.com/dynamic-labs/DynamicAuth/issues/3655)) ([02b520a](https://github.com/dynamic-labs/DynamicAuth/commit/02b520a2ddb6ba4042bf630de4cf80259c4fac37))
29
+
2
30
  ## [0.19.0-alpha.21](https://github.com/dynamic-labs/DynamicAuth/compare/v0.19.0-alpha.20...v0.19.0-alpha.21) (2023-10-23)
3
31
 
4
32
 
package/package.cjs CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var version = "0.19.0-alpha.21";
5
+ var version = "0.19.0-alpha.23";
6
6
  var dependencies = {
7
7
  "@dynamic-labs/iconic": "0.1.34",
8
8
  "@dynamic-labs/sdk-api": "0.0.291",
package/package.js CHANGED
@@ -1,4 +1,4 @@
1
- var version = "0.19.0-alpha.21";
1
+ var version = "0.19.0-alpha.23";
2
2
  var dependencies = {
3
3
  "@dynamic-labs/iconic": "0.1.34",
4
4
  "@dynamic-labs/sdk-api": "0.0.291",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/sdk-react-core",
3
- "version": "0.19.0-alpha.21",
3
+ "version": "0.19.0-alpha.23",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/dynamic-labs/DynamicAuth.git",
@@ -17,13 +17,13 @@
17
17
  "react-focus-lock": "2.9.2",
18
18
  "react-i18next": "^13.2.0",
19
19
  "yup": "0.32.11",
20
- "@dynamic-labs/logger": "0.19.0-alpha.21",
21
- "@dynamic-labs/multi-wallet": "0.19.0-alpha.21",
22
- "@dynamic-labs/rpc-providers": "0.19.0-alpha.21",
23
- "@dynamic-labs/types": "0.19.0-alpha.21",
24
- "@dynamic-labs/utils": "0.19.0-alpha.21",
25
- "@dynamic-labs/wallet-book": "0.19.0-alpha.21",
26
- "@dynamic-labs/wallet-connector-core": "0.19.0-alpha.21",
20
+ "@dynamic-labs/logger": "0.19.0-alpha.23",
21
+ "@dynamic-labs/multi-wallet": "0.19.0-alpha.23",
22
+ "@dynamic-labs/rpc-providers": "0.19.0-alpha.23",
23
+ "@dynamic-labs/types": "0.19.0-alpha.23",
24
+ "@dynamic-labs/utils": "0.19.0-alpha.23",
25
+ "@dynamic-labs/wallet-book": "0.19.0-alpha.23",
26
+ "@dynamic-labs/wallet-connector-core": "0.19.0-alpha.23",
27
27
  "eventemitter3": "5.0.1"
28
28
  },
29
29
  "devDependencies": {
package/src/index.cjs CHANGED
@@ -117,7 +117,6 @@ require('react-focus-lock');
117
117
  require('./lib/components/Transition/ZoomTransition/ZoomTransition.cjs');
118
118
  require('./lib/components/Transition/SlideInUpTransition/SlideInUpTransition.cjs');
119
119
  require('./lib/components/Transition/OpacityTransition/OpacityTransition.cjs');
120
- var useFetchProjectSettings = require('./lib/utils/hooks/useFetchProjectSettings/useFetchProjectSettings.cjs');
121
120
  require('./lib/config/ApiEndpoint.cjs');
122
121
  require('./lib/utils/hooks/useWallets/utils/verifyMagicIsSetup/verifyMagicIsSetup.cjs');
123
122
  var isSameWalletName = require('./lib/utils/functions/isSameWalletName/isSameWalletName.cjs');
@@ -292,7 +291,6 @@ Object.defineProperty(exports, 'DynamicJwtFromJSON', {
292
291
  get: function () { return sdkApi.DynamicJwtFromJSON; }
293
292
  });
294
293
  exports.ShadowDOM = ShadowDOM.ShadowDOM;
295
- exports.useFetchProjectSettings = useFetchProjectSettings.useFetchProjectSettings;
296
294
  exports.isSameWalletName = isSameWalletName.isSameWalletName;
297
295
  exports.MockContext = MockContext.MockContext;
298
296
  exports.MockContextProvider = MockContext.MockContextProvider;
package/src/index.d.ts CHANGED
@@ -23,7 +23,7 @@ export { classNames } from './lib/utils/functions/classNames';
23
23
  export { getNetwork } from './lib/utils/functions/getNetwork';
24
24
  export * from './lib/utils/functions/walletFilters';
25
25
  export { DynamicWidgetContextProvider } from './lib/widgets/DynamicWidget/context';
26
- export { useFetchProjectSettings, useWalletItemActions, useAuthenticateConnectedUser, useSocialAccounts, useEmbeddedWallet, useIsLoggedIn, } from './lib/utils/hooks';
26
+ export { useWalletItemActions, useAuthenticateConnectedUser, useSocialAccounts, useEmbeddedWallet, useIsLoggedIn, } from './lib/utils/hooks';
27
27
  export { useUserUpdateRequest } from './lib/utils/hooks';
28
28
  export { type VerifyEmailCallback, useEmailVerificationRequest, } from './lib/utils/hooks/authenticationHooks/';
29
29
  export type { UpdateUserFieldsArg } from './lib/utils/hooks/';
package/src/index.js CHANGED
@@ -113,7 +113,6 @@ import 'react-focus-lock';
113
113
  import './lib/components/Transition/ZoomTransition/ZoomTransition.js';
114
114
  import './lib/components/Transition/SlideInUpTransition/SlideInUpTransition.js';
115
115
  import './lib/components/Transition/OpacityTransition/OpacityTransition.js';
116
- export { useFetchProjectSettings } from './lib/utils/hooks/useFetchProjectSettings/useFetchProjectSettings.js';
117
116
  import './lib/config/ApiEndpoint.js';
118
117
  import './lib/utils/hooks/useWallets/utils/verifyMagicIsSetup/verifyMagicIsSetup.js';
119
118
  export { isSameWalletName } from './lib/utils/functions/isSameWalletName/isSameWalletName.js';
package/src/lib/Main.cjs CHANGED
@@ -68,7 +68,7 @@ const viewsToDisableCloseOnOverlayClick = [
68
68
  'passkey-intro',
69
69
  ];
70
70
  const Main = () => {
71
- const { selectedWalletConnector, linkedWallets, isProjectSettingsLoading, projectSettings, setShowAuthFlow, showAuthFlow, wallets, clearStatesOnBackClick, user, unlinkConnectedWallet, authMode, connectedWallets, } = useInternalDynamicContext.useInternalDynamicContext();
71
+ const { selectedWalletConnector, linkedWallets, isProjectSettingsLoading, projectSettings, setShowAuthFlow, showAuthFlow, wallets, clearStatesOnBackClick, user, disconnectWallet, authMode, connectedWallets, } = useInternalDynamicContext.useInternalDynamicContext();
72
72
  const { view, goToInitialView } = ViewContext.useViewContext();
73
73
  const { setDeniedAddress, setDeniedOauthProvider } = AccessDeniedContext.useAccessDeniedContext();
74
74
  const { setExistentAccountData } = AccountExistsContext.useAccountExistsContext();
@@ -105,7 +105,7 @@ const Main = () => {
105
105
  network: yield walletByConnectorName.connector.getNetwork(),
106
106
  walletConnector: walletByConnectorName.connector,
107
107
  })) {
108
- unlinkConnectedWallet(walletByConnectorName.id);
108
+ disconnectWallet(walletByConnectorName.id);
109
109
  }
110
110
  }
111
111
  }
@@ -113,7 +113,7 @@ const Main = () => {
113
113
  selectedWalletConnector,
114
114
  authMode,
115
115
  connectedWallets,
116
- unlinkConnectedWallet,
116
+ disconnectWallet,
117
117
  user,
118
118
  view,
119
119
  ]);
package/src/lib/Main.js CHANGED
@@ -64,7 +64,7 @@ const viewsToDisableCloseOnOverlayClick = [
64
64
  'passkey-intro',
65
65
  ];
66
66
  const Main = () => {
67
- const { selectedWalletConnector, linkedWallets, isProjectSettingsLoading, projectSettings, setShowAuthFlow, showAuthFlow, wallets, clearStatesOnBackClick, user, unlinkConnectedWallet, authMode, connectedWallets, } = useInternalDynamicContext();
67
+ const { selectedWalletConnector, linkedWallets, isProjectSettingsLoading, projectSettings, setShowAuthFlow, showAuthFlow, wallets, clearStatesOnBackClick, user, disconnectWallet, authMode, connectedWallets, } = useInternalDynamicContext();
68
68
  const { view, goToInitialView } = useViewContext();
69
69
  const { setDeniedAddress, setDeniedOauthProvider } = useAccessDeniedContext();
70
70
  const { setExistentAccountData } = useAccountExistsContext();
@@ -101,7 +101,7 @@ const Main = () => {
101
101
  network: yield walletByConnectorName.connector.getNetwork(),
102
102
  walletConnector: walletByConnectorName.connector,
103
103
  })) {
104
- unlinkConnectedWallet(walletByConnectorName.id);
104
+ disconnectWallet(walletByConnectorName.id);
105
105
  }
106
106
  }
107
107
  }
@@ -109,7 +109,7 @@ const Main = () => {
109
109
  selectedWalletConnector,
110
110
  authMode,
111
111
  connectedWallets,
112
- unlinkConnectedWallet,
112
+ disconnectWallet,
113
113
  user,
114
114
  view,
115
115
  ]);
@@ -21,7 +21,7 @@ const SignMessagePreview = ({ message, }) => {
21
21
  if (signTypedData) {
22
22
  return (jsxRuntime.jsx(SignTypedDataPreview.SignTypedDataPreview, { currentType: signTypedData.primaryType, types: signTypedData.types, showTypeName: true, data: signTypedData.message }));
23
23
  }
24
- return (jsxRuntime.jsx(Typography.Typography, { color: 'primary', variant: 'body_normal', children: jsxRuntime.jsx("span", { style: { whiteSpace: 'pre-line' }, dangerouslySetInnerHTML: { __html: message } }) }));
24
+ return (jsxRuntime.jsx(Typography.Typography, { color: 'primary', variant: 'body_normal', children: jsxRuntime.jsx("span", { style: { whiteSpace: 'pre-line' }, children: message }) }));
25
25
  };
26
26
 
27
27
  exports.SignMessagePreview = SignMessagePreview;
@@ -17,7 +17,7 @@ const SignMessagePreview = ({ message, }) => {
17
17
  if (signTypedData) {
18
18
  return (jsx(SignTypedDataPreview, { currentType: signTypedData.primaryType, types: signTypedData.types, showTypeName: true, data: signTypedData.message }));
19
19
  }
20
- return (jsx(Typography, { color: 'primary', variant: 'body_normal', children: jsx("span", { style: { whiteSpace: 'pre-line' }, dangerouslySetInnerHTML: { __html: message } }) }));
20
+ return (jsx(Typography, { color: 'primary', variant: 'body_normal', children: jsx("span", { style: { whiteSpace: 'pre-line' }, children: message }) }));
21
21
  };
22
22
 
23
23
  export { SignMessagePreview };
@@ -101,7 +101,8 @@ const SocialSignIn = ({ providers, onSelectProvider, isLoading, selectedProvider
101
101
  jsxRuntime.jsx(iconic.SocialIcon, { name: getProviderAsString(provider), variant: iconThemeVariant }), isSpinning: selectedProvider === provider, iconSize: 32 }), !insideCard && fullWidth && (jsxRuntime.jsxs(Typography.Typography, { variant: 'button_primary', children: ["Connect with ", capitalize.capitalize(getProviderAsString(provider))] }))] }, getProviderAsString(provider)));
102
102
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", { className: 'social-sign-in', style: {
103
103
  '--number-of-social-grid-items': numberOfSocialGridItems,
104
- }, "data-testid": testId, children: [defaultProvider && renderProviderItem(defaultProvider, true), socialProvidersToDisplayInline.map((provider) => renderProviderItem(provider, socialProvidersToDisplayInline.length < 2)), showCardButton && (jsxRuntime.jsx(IconListTile.IconListTile, { dataTestId: 'show-more-options', onClick: () => setShowCard(true), className: 'social-sign-in--tile', children: jsxRuntime.jsx(Icon.Icon, { color: 'text-primary', children: jsxRuntime.jsx(dotsHorizontal.ReactComponent, {}) }) }, 'show-more-options'))] }), jsxRuntime.jsx(OverlayCard.OverlayCard, { isOpen: showCard, onClickOverlay: closeCard, children: jsxRuntime.jsxs("div", { className: 'social-sign-in--card', children: [jsxRuntime.jsx(ModalHeader.ModalHeader, { trailing: closeButton, children: jsxRuntime.jsx(Typography.Typography, { weight: 'medium', variant: 'body_normal', color: 'primary', as: 'span', children: "Choose a social account" }) }), jsxRuntime.jsx("div", { className: 'social-sign-in--card--body', children: providers.map((provider) => renderProviderItem(provider, false, true)) })] }) })] }));
104
+ }, "data-testid": testId, children: [defaultProvider && renderProviderItem(defaultProvider, true), socialProvidersToDisplayInline.map((provider) => renderProviderItem(provider, socialProvidersToDisplayInline.length <
105
+ 4 - (defaultProvider ? 1 : 0))), showCardButton && (jsxRuntime.jsx(IconListTile.IconListTile, { dataTestId: 'show-more-options', onClick: () => setShowCard(true), className: 'social-sign-in--tile', children: jsxRuntime.jsx(Icon.Icon, { color: 'text-primary', children: jsxRuntime.jsx(dotsHorizontal.ReactComponent, {}) }) }, 'show-more-options'))] }), jsxRuntime.jsx(OverlayCard.OverlayCard, { isOpen: showCard, onClickOverlay: closeCard, children: jsxRuntime.jsxs("div", { className: 'social-sign-in--card', children: [jsxRuntime.jsx(ModalHeader.ModalHeader, { trailing: closeButton, children: jsxRuntime.jsx(Typography.Typography, { weight: 'medium', variant: 'body_normal', color: 'primary', as: 'span', children: "Choose a social account" }) }), jsxRuntime.jsx("div", { className: 'social-sign-in--card--body', children: providers.map((provider) => renderProviderItem(provider, false, true)) })] }) })] }));
105
106
  };
106
107
 
107
108
  exports.SocialSignIn = SocialSignIn;
@@ -97,7 +97,8 @@ const SocialSignIn = ({ providers, onSelectProvider, isLoading, selectedProvider
97
97
  jsx(SocialIcon, { name: getProviderAsString(provider), variant: iconThemeVariant }), isSpinning: selectedProvider === provider, iconSize: 32 }), !insideCard && fullWidth && (jsxs(Typography, { variant: 'button_primary', children: ["Connect with ", capitalize(getProviderAsString(provider))] }))] }, getProviderAsString(provider)));
98
98
  return (jsxs(Fragment, { children: [jsxs("div", { className: 'social-sign-in', style: {
99
99
  '--number-of-social-grid-items': numberOfSocialGridItems,
100
- }, "data-testid": testId, children: [defaultProvider && renderProviderItem(defaultProvider, true), socialProvidersToDisplayInline.map((provider) => renderProviderItem(provider, socialProvidersToDisplayInline.length < 2)), showCardButton && (jsx(IconListTile, { dataTestId: 'show-more-options', onClick: () => setShowCard(true), className: 'social-sign-in--tile', children: jsx(Icon, { color: 'text-primary', children: jsx(SvgDotsHorizontal, {}) }) }, 'show-more-options'))] }), jsx(OverlayCard, { isOpen: showCard, onClickOverlay: closeCard, children: jsxs("div", { className: 'social-sign-in--card', children: [jsx(ModalHeader, { trailing: closeButton, children: jsx(Typography, { weight: 'medium', variant: 'body_normal', color: 'primary', as: 'span', children: "Choose a social account" }) }), jsx("div", { className: 'social-sign-in--card--body', children: providers.map((provider) => renderProviderItem(provider, false, true)) })] }) })] }));
100
+ }, "data-testid": testId, children: [defaultProvider && renderProviderItem(defaultProvider, true), socialProvidersToDisplayInline.map((provider) => renderProviderItem(provider, socialProvidersToDisplayInline.length <
101
+ 4 - (defaultProvider ? 1 : 0))), showCardButton && (jsx(IconListTile, { dataTestId: 'show-more-options', onClick: () => setShowCard(true), className: 'social-sign-in--tile', children: jsx(Icon, { color: 'text-primary', children: jsx(SvgDotsHorizontal, {}) }) }, 'show-more-options'))] }), jsx(OverlayCard, { isOpen: showCard, onClickOverlay: closeCard, children: jsxs("div", { className: 'social-sign-in--card', children: [jsx(ModalHeader, { trailing: closeButton, children: jsx(Typography, { weight: 'medium', variant: 'body_normal', color: 'primary', as: 'span', children: "Choose a social account" }) }), jsx("div", { className: 'social-sign-in--card--body', children: providers.map((provider) => renderProviderItem(provider, false, true)) })] }) })] }));
101
102
  };
102
103
 
103
104
  export { SocialSignIn };
@@ -197,14 +197,14 @@ const DynamicContextProvider = ({ children, theme, settings, locale: locale$1, }
197
197
  });
198
198
  const [authMode, setAuthMode] = useLocalStorage.useLocalStorage(localStorage$1.AUTH_MODE, initialAuthenticationMode);
199
199
  const { clearPrimaryWalletId, primaryWalletId, setPrimaryWalletId } = usePrimaryWalletId.usePrimaryWalletId(internalEventsRef.current);
200
- const { connectWallet, removeConnectedWalletsInfo, connectedWalletsInfo, connectedWallet, getConnectedWalletById, connectedWallets, unlinkConnectedWallet, refreshConnectedWallet, } = useConnectWallet.useConnectWallet({
200
+ const { connectWallet, removeConnectedWalletsInfo, connectedWalletsInfo, connectedWallet, getConnectedWalletById, connectedWallets, disconnectWallet, refreshConnectedWallet, } = useConnectWallet.useConnectWallet({
201
201
  authMode,
202
202
  clearPrimaryWalletId,
203
203
  enableVisitTrackingOnConnectOnly,
204
204
  environmentId,
205
205
  isBridgeFlow,
206
206
  onBeforeConnectSuccessConfirmation: eventsCallbacks === null || eventsCallbacks === void 0 ? void 0 : eventsCallbacks.onBeforeConnectSuccessConfirmation,
207
- onUnlink: (connectedWalletsInfo, wallet) => handleDisconnectWallet.handleDisconnectWallet({
207
+ onDisconnect: (connectedWalletsInfo, wallet) => handleDisconnectWallet.handleDisconnectWallet({
208
208
  connectedWalletsInfo,
209
209
  eventsCallbacks,
210
210
  setWalletsToConnectByChain,
@@ -485,15 +485,14 @@ const DynamicContextProvider = ({ children, theme, settings, locale: locale$1, }
485
485
  decodedOnboardingOnlyToken: decodeJwt.decodeJwt(onboardingOnlyJwt),
486
486
  defaultNumberOfWalletsToShow,
487
487
  desktopUri,
488
+ disconnectWallet,
488
489
  displaySiweStatement,
489
490
  environmentId,
490
491
  eventsCallbacks,
491
492
  getConnectedWalletById,
492
493
  getNameService,
493
494
  handleLogOut,
494
- handleUnlinkWallet: authMode === 'connect-only'
495
- ? unlinkConnectedWallet
496
- : handleUnlinkWallet,
495
+ handleUnlinkWallet: authMode === 'connect-only' ? disconnectWallet : handleUnlinkWallet,
497
496
  i18nSDKInstance,
498
497
  internalEvents: internalEventsRef,
499
498
  internalSetShowAuthFlow: setShowAuthFlow,
@@ -575,7 +574,6 @@ const DynamicContextProvider = ({ children, theme, settings, locale: locale$1, }
575
574
  termsOfServiceUrl,
576
575
  theme,
577
576
  toolkitEnabled,
578
- unlinkConnectedWallet,
579
577
  user,
580
578
  walletConnector: (_c = primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector) !== null && _c !== void 0 ? _c : null,
581
579
  walletUiUtils,
@@ -614,7 +612,7 @@ const DynamicContextProvider = ({ children, theme, settings, locale: locale$1, }
614
612
  getConnectedWalletById,
615
613
  getNameService,
616
614
  handleLogOut,
617
- unlinkConnectedWallet,
615
+ disconnectWallet,
618
616
  handleUnlinkWallet,
619
617
  i18nSDKInstance,
620
618
  isAuthenticated,
@@ -626,7 +624,6 @@ const DynamicContextProvider = ({ children, theme, settings, locale: locale$1, }
626
624
  legacyIsVerifying,
627
625
  linkedWallets,
628
626
  loadingNetwork,
629
- locale$1,
630
627
  loginWithEmail,
631
628
  multiWallet,
632
629
  multiWalletWidgetState,
@@ -193,14 +193,14 @@ const DynamicContextProvider = ({ children, theme, settings, locale, }) => {
193
193
  });
194
194
  const [authMode, setAuthMode] = useLocalStorage(AUTH_MODE, initialAuthenticationMode);
195
195
  const { clearPrimaryWalletId, primaryWalletId, setPrimaryWalletId } = usePrimaryWalletId(internalEventsRef.current);
196
- const { connectWallet, removeConnectedWalletsInfo, connectedWalletsInfo, connectedWallet, getConnectedWalletById, connectedWallets, unlinkConnectedWallet, refreshConnectedWallet, } = useConnectWallet({
196
+ const { connectWallet, removeConnectedWalletsInfo, connectedWalletsInfo, connectedWallet, getConnectedWalletById, connectedWallets, disconnectWallet, refreshConnectedWallet, } = useConnectWallet({
197
197
  authMode,
198
198
  clearPrimaryWalletId,
199
199
  enableVisitTrackingOnConnectOnly,
200
200
  environmentId,
201
201
  isBridgeFlow,
202
202
  onBeforeConnectSuccessConfirmation: eventsCallbacks === null || eventsCallbacks === void 0 ? void 0 : eventsCallbacks.onBeforeConnectSuccessConfirmation,
203
- onUnlink: (connectedWalletsInfo, wallet) => handleDisconnectWallet({
203
+ onDisconnect: (connectedWalletsInfo, wallet) => handleDisconnectWallet({
204
204
  connectedWalletsInfo,
205
205
  eventsCallbacks,
206
206
  setWalletsToConnectByChain,
@@ -481,15 +481,14 @@ const DynamicContextProvider = ({ children, theme, settings, locale, }) => {
481
481
  decodedOnboardingOnlyToken: decodeJwt(onboardingOnlyJwt),
482
482
  defaultNumberOfWalletsToShow,
483
483
  desktopUri,
484
+ disconnectWallet,
484
485
  displaySiweStatement,
485
486
  environmentId,
486
487
  eventsCallbacks,
487
488
  getConnectedWalletById,
488
489
  getNameService,
489
490
  handleLogOut,
490
- handleUnlinkWallet: authMode === 'connect-only'
491
- ? unlinkConnectedWallet
492
- : handleUnlinkWallet,
491
+ handleUnlinkWallet: authMode === 'connect-only' ? disconnectWallet : handleUnlinkWallet,
493
492
  i18nSDKInstance,
494
493
  internalEvents: internalEventsRef,
495
494
  internalSetShowAuthFlow: setShowAuthFlow,
@@ -571,7 +570,6 @@ const DynamicContextProvider = ({ children, theme, settings, locale, }) => {
571
570
  termsOfServiceUrl,
572
571
  theme,
573
572
  toolkitEnabled,
574
- unlinkConnectedWallet,
575
573
  user,
576
574
  walletConnector: (_c = primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector) !== null && _c !== void 0 ? _c : null,
577
575
  walletUiUtils,
@@ -610,7 +608,7 @@ const DynamicContextProvider = ({ children, theme, settings, locale, }) => {
610
608
  getConnectedWalletById,
611
609
  getNameService,
612
610
  handleLogOut,
613
- unlinkConnectedWallet,
611
+ disconnectWallet,
614
612
  handleUnlinkWallet,
615
613
  i18nSDKInstance,
616
614
  isAuthenticated,
@@ -622,7 +620,6 @@ const DynamicContextProvider = ({ children, theme, settings, locale, }) => {
622
620
  legacyIsVerifying,
623
621
  linkedWallets,
624
622
  loadingNetwork,
625
- locale,
626
623
  loginWithEmail,
627
624
  multiWallet,
628
625
  multiWalletWidgetState,
@@ -133,7 +133,7 @@ export interface IDynamicContext {
133
133
  theme?: ThemeData | ThemeSetting;
134
134
  toolkitEnabled?: boolean;
135
135
  user: UserProfile | undefined;
136
- unlinkConnectedWallet: (walletId: string) => void;
136
+ disconnectWallet: (walletId: string) => void;
137
137
  walletConnector: WalletConnector | null;
138
138
  walletUiUtils: WalletUiUtils<WalletConnector>;
139
139
  wallets: WalletOption[];
@@ -1,6 +1,6 @@
1
1
  import { __awaiter } from '../../../_virtual/_tslib.js';
2
2
  import { NoAccessError, AccountExistsError, EmailVerificationError, UserHasAccountWithEmailError, DynamicError, EmailAlreadyExistsError, UsernameAlreadyExistsError, EmailProviderError, WalletUsedError, WalletNotDeployedError, ChainalysisError, GateBlockedError, SocialAccountAlreadyExistsError } from '@dynamic-labs/utils';
3
- import { SDKApi, Configuration, UnprocessableEntityErrorCode, ChainEnum, EmbeddedWalletProviderEnum, VerifyRequestFromJSON, WalletProviderEnum, AuthModeEnum } from '@dynamic-labs/sdk-api';
3
+ import { UnprocessableEntityErrorCode, ChainEnum, EmbeddedWalletProviderEnum, SDKApi, Configuration, VerifyRequestFromJSON, WalletProviderEnum, AuthModeEnum } from '@dynamic-labs/sdk-api';
4
4
  import { VERSION, API_VERSION } from '../../version.js';
5
5
  import ApiEndpoint from '../config/ApiEndpoint.js';
6
6
  import { logger } from '../shared/logger.js';
@@ -2,9 +2,18 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var utils = require('@dynamic-labs/utils');
5
6
  var stringifyURIQuery = require('../stringifyURIQuery/stringifyURIQuery.cjs');
7
+ var getProviderByType = require('../getProviderByType/getProviderByType.cjs');
6
8
 
7
9
  const OAUTH_LOGIN_DATA = {
10
+ apple: {
11
+ customMobileUrl: true,
12
+ response_mode: 'form_post',
13
+ response_type: ['code', 'id_token'],
14
+ scope: ['name', 'email'],
15
+ url: 'https://appleid.apple.com/auth/authorize',
16
+ },
8
17
  discord: {
9
18
  scope: ['identify', 'email'],
10
19
  url: 'https://discord.com/api/oauth2/authorize',
@@ -44,9 +53,15 @@ const getProviderData = (provider) => {
44
53
  }
45
54
  return null;
46
55
  };
47
- const getOauthLoginUrl = (providers, providerType, environmentId) => {
56
+ const getMobileOauthUrl = (provider, loginData) => {
57
+ if (!loginData.customMobileUrl || !utils.isMobile() || !provider.redirectUrl) {
58
+ return;
59
+ }
60
+ return provider.redirectUrl.replace('redirect', 'authorizeHtml');
61
+ };
62
+ const getOauthLoginUrl = (providers, providerType) => {
48
63
  var _a;
49
- const provider = providers.find((p) => p.provider === providerType);
64
+ const provider = getProviderByType.getProviderByType(providers, providerType);
50
65
  if (!(provider === null || provider === void 0 ? void 0 : provider.clientId)) {
51
66
  return '';
52
67
  }
@@ -54,6 +69,7 @@ const getOauthLoginUrl = (providers, providerType, environmentId) => {
54
69
  if (!loginData) {
55
70
  return '';
56
71
  }
72
+ const mobileUrl = getMobileOauthUrl(provider, loginData);
57
73
  const baseProps = {
58
74
  client_id: provider.clientId,
59
75
  redirect_uri: (_a = provider.redirectUrl) !== null && _a !== void 0 ? _a : '',
@@ -65,8 +81,14 @@ const getOauthLoginUrl = (providers, providerType, environmentId) => {
65
81
  if (loginData.prompt) {
66
82
  baseProps.prompt = loginData.prompt.join(' ');
67
83
  }
84
+ if (loginData.response_mode) {
85
+ baseProps.response_mode = loginData.response_mode;
86
+ }
87
+ if (loginData.response_type) {
88
+ baseProps.response_type = loginData.response_type.join(' ');
89
+ }
68
90
  const params = stringifyURIQuery.stringifyURIQuery(baseProps);
69
- return `${loginData.url}?${params}`;
91
+ return `${mobileUrl !== null && mobileUrl !== void 0 ? mobileUrl : loginData.url}?${params}`;
70
92
  };
71
93
 
72
94
  exports.getOauthLoginUrl = getOauthLoginUrl;
@@ -1,2 +1,2 @@
1
1
  import { Provider, ProviderEnum } from '@dynamic-labs/sdk-api';
2
- export declare const getOauthLoginUrl: (providers: Provider[], providerType: ProviderEnum, environmentId: string) => string;
2
+ export declare const getOauthLoginUrl: (providers: Provider[], providerType: ProviderEnum) => string;
@@ -1,6 +1,15 @@
1
+ import { isMobile } from '@dynamic-labs/utils';
1
2
  import { stringifyURIQuery } from '../stringifyURIQuery/stringifyURIQuery.js';
3
+ import { getProviderByType } from '../getProviderByType/getProviderByType.js';
2
4
 
3
5
  const OAUTH_LOGIN_DATA = {
6
+ apple: {
7
+ customMobileUrl: true,
8
+ response_mode: 'form_post',
9
+ response_type: ['code', 'id_token'],
10
+ scope: ['name', 'email'],
11
+ url: 'https://appleid.apple.com/auth/authorize',
12
+ },
4
13
  discord: {
5
14
  scope: ['identify', 'email'],
6
15
  url: 'https://discord.com/api/oauth2/authorize',
@@ -40,9 +49,15 @@ const getProviderData = (provider) => {
40
49
  }
41
50
  return null;
42
51
  };
43
- const getOauthLoginUrl = (providers, providerType, environmentId) => {
52
+ const getMobileOauthUrl = (provider, loginData) => {
53
+ if (!loginData.customMobileUrl || !isMobile() || !provider.redirectUrl) {
54
+ return;
55
+ }
56
+ return provider.redirectUrl.replace('redirect', 'authorizeHtml');
57
+ };
58
+ const getOauthLoginUrl = (providers, providerType) => {
44
59
  var _a;
45
- const provider = providers.find((p) => p.provider === providerType);
60
+ const provider = getProviderByType(providers, providerType);
46
61
  if (!(provider === null || provider === void 0 ? void 0 : provider.clientId)) {
47
62
  return '';
48
63
  }
@@ -50,6 +65,7 @@ const getOauthLoginUrl = (providers, providerType, environmentId) => {
50
65
  if (!loginData) {
51
66
  return '';
52
67
  }
68
+ const mobileUrl = getMobileOauthUrl(provider, loginData);
53
69
  const baseProps = {
54
70
  client_id: provider.clientId,
55
71
  redirect_uri: (_a = provider.redirectUrl) !== null && _a !== void 0 ? _a : '',
@@ -61,8 +77,14 @@ const getOauthLoginUrl = (providers, providerType, environmentId) => {
61
77
  if (loginData.prompt) {
62
78
  baseProps.prompt = loginData.prompt.join(' ');
63
79
  }
80
+ if (loginData.response_mode) {
81
+ baseProps.response_mode = loginData.response_mode;
82
+ }
83
+ if (loginData.response_type) {
84
+ baseProps.response_type = loginData.response_type.join(' ');
85
+ }
64
86
  const params = stringifyURIQuery(baseProps);
65
- return `${loginData.url}?${params}`;
87
+ return `${mobileUrl !== null && mobileUrl !== void 0 ? mobileUrl : loginData.url}?${params}`;
66
88
  };
67
89
 
68
90
  export { getOauthLoginUrl };
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const getProviderByType = (providers, providerType) => providers.find((p) => p.provider === providerType);
6
+
7
+ exports.getProviderByType = getProviderByType;
@@ -0,0 +1,2 @@
1
+ import { Provider, ProviderEnum } from '@dynamic-labs/sdk-api';
2
+ export declare const getProviderByType: (providers: Provider[], providerType: ProviderEnum) => Provider | undefined;
@@ -0,0 +1,3 @@
1
+ const getProviderByType = (providers, providerType) => providers.find((p) => p.provider === providerType);
2
+
3
+ export { getProviderByType };
@@ -0,0 +1 @@
1
+ export { getProviderByType } from './getProviderByType';
@@ -41,3 +41,4 @@ export * from './findEmbeddedWalletFromVerifiedCredentials';
41
41
  export * from './findTurnkeyWallet';
42
42
  export * from './isTestnet';
43
43
  export * from './getOrdinalNumber';
44
+ export * from './getProviderByType';
@@ -23,15 +23,15 @@ var api = require('../../../data/api.cjs');
23
23
  require('@dynamic-labs/multi-wallet');
24
24
  var shouldManuallyReconnectOnRefresh = require('../../functions/shouldManuallyReconnectOnRefresh/shouldManuallyReconnectOnRefresh.cjs');
25
25
 
26
- const useConnectWallet = ({ authMode, clearPrimaryWalletId, enableVisitTrackingOnConnectOnly, environmentId, primaryWalletId, setPrimaryWalletId, wallets, onUnlink, onBeforeConnectSuccessConfirmation, setShowAuthFlow, isBridgeFlow, }) => {
26
+ const useConnectWallet = ({ authMode, clearPrimaryWalletId, enableVisitTrackingOnConnectOnly, environmentId, primaryWalletId, setPrimaryWalletId, wallets, onDisconnect, onBeforeConnectSuccessConfirmation, setShowAuthFlow, isBridgeFlow, }) => {
27
27
  const [connectedWalletsInfo, setConnectedWalletsInfo, removeConnectedWalletsInfo,] = useLocalStorage.useLocalStorage(localStorage.CONNECTED_WALLETS_INFO, []);
28
28
  const [connectedWallets, setConnectedWallets] = React.useState([]);
29
- const unlinkConnectedWallet = React.useCallback((walletId) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
29
+ const disconnectWallet = React.useCallback((walletId) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
30
30
  const walletToDisconnect = connectedWallets.find((wallet) => wallet.id === walletId);
31
31
  yield (walletToDisconnect === null || walletToDisconnect === void 0 ? void 0 : walletToDisconnect.connector.endSession());
32
32
  const updatedConnectedWalletsInfo = connectedWalletsInfo.filter((wallet) => wallet.id !== walletId);
33
33
  setConnectedWalletsInfo(updatedConnectedWalletsInfo);
34
- onUnlink(updatedConnectedWalletsInfo, walletToDisconnect);
34
+ onDisconnect(updatedConnectedWalletsInfo, walletToDisconnect);
35
35
  if (walletId !== primaryWalletId) {
36
36
  return;
37
37
  }
@@ -47,7 +47,7 @@ const useConnectWallet = ({ authMode, clearPrimaryWalletId, enableVisitTrackingO
47
47
  connectedWallets,
48
48
  connectedWalletsInfo,
49
49
  isBridgeFlow,
50
- onUnlink,
50
+ onDisconnect,
51
51
  primaryWalletId,
52
52
  setConnectedWalletsInfo,
53
53
  setPrimaryWalletId,
@@ -67,12 +67,12 @@ const useConnectWallet = ({ authMode, clearPrimaryWalletId, enableVisitTrackingO
67
67
  if (!walletConnector) {
68
68
  walletConnectorCore.logger.error('Could not find walletConnector: ' +
69
69
  storedConnectedWalletInfo.walletConnectorKey);
70
- yield unlinkConnectedWallet(storedConnectedWalletInfo.id);
70
+ yield disconnectWallet(storedConnectedWalletInfo.id);
71
71
  return null;
72
72
  }
73
73
  const [walletAddress] = yield walletConnector.getConnectedAccounts();
74
74
  if (!walletAddress) {
75
- yield unlinkConnectedWallet(storedConnectedWalletInfo.id);
75
+ yield disconnectWallet(storedConnectedWalletInfo.id);
76
76
  return null;
77
77
  }
78
78
  const walletNetwork = yield walletConnector.getNetwork();
@@ -88,7 +88,7 @@ const useConnectWallet = ({ authMode, clearPrimaryWalletId, enableVisitTrackingO
88
88
  return walletObject;
89
89
  })))).filter((wallet) => Boolean(wallet));
90
90
  setConnectedWallets(updatedConnectedWallets);
91
- }), [connectedWalletsInfo, unlinkConnectedWallet, wallets]);
91
+ }), [connectedWalletsInfo, disconnectWallet, wallets]);
92
92
  // Generate the connectedWallets list when connectedWalletsInfo (localStorage) or memoized wallet connector updates
93
93
  React.useEffect(() => {
94
94
  updateConnectedWalletsList();
@@ -140,7 +140,7 @@ const useConnectWallet = ({ authMode, clearPrimaryWalletId, enableVisitTrackingO
140
140
  });
141
141
  if (!shouldProceedWithConnection) {
142
142
  walletConnectorCore.logger.info('Connection was not established because onBeforeConnectSuccessConfirmation returned false');
143
- unlinkConnectedWallet(walletId);
143
+ disconnectWallet(walletId);
144
144
  setShowAuthFlow(false);
145
145
  return;
146
146
  }
@@ -210,10 +210,10 @@ const useConnectWallet = ({ authMode, clearPrimaryWalletId, enableVisitTrackingO
210
210
  connectedWallet,
211
211
  connectedWallets,
212
212
  connectedWalletsInfo,
213
+ disconnectWallet,
213
214
  getConnectedWalletById,
214
215
  refreshConnectedWallet,
215
216
  removeConnectedWalletsInfo,
216
- unlinkConnectedWallet,
217
217
  };
218
218
  };
219
219
 
@@ -15,7 +15,7 @@ type Props = {
15
15
  primaryWalletId: string | undefined;
16
16
  setPrimaryWalletId: (walletId: string) => void;
17
17
  wallets: WalletOption[];
18
- onUnlink: (connectedWalletsInfo: ConnectedWalletConnectorType[], wallet?: Wallet) => void;
18
+ onDisconnect: (connectedWalletsInfo: ConnectedWalletConnectorType[], wallet?: Wallet) => void;
19
19
  onBeforeConnectSuccessConfirmation: OnBeforeConnectSuccessConfirmation | undefined;
20
20
  setShowAuthFlow: Dispatch<SetStateAction<boolean>>;
21
21
  isBridgeFlow: boolean;
@@ -28,7 +28,7 @@ type UseConnectWalletValue = {
28
28
  getConnectedWalletById: (walletId: string) => Wallet | undefined;
29
29
  refreshConnectedWallet: (walletId: string, walletConnector: WalletConnector) => Promise<void>;
30
30
  removeConnectedWalletsInfo: () => void;
31
- unlinkConnectedWallet: (walletId: string) => Promise<void>;
31
+ disconnectWallet: (walletId: string) => Promise<void>;
32
32
  };
33
- export declare const useConnectWallet: ({ authMode, clearPrimaryWalletId, enableVisitTrackingOnConnectOnly, environmentId, primaryWalletId, setPrimaryWalletId, wallets, onUnlink, onBeforeConnectSuccessConfirmation, setShowAuthFlow, isBridgeFlow, }: Props) => UseConnectWalletValue;
33
+ export declare const useConnectWallet: ({ authMode, clearPrimaryWalletId, enableVisitTrackingOnConnectOnly, environmentId, primaryWalletId, setPrimaryWalletId, wallets, onDisconnect, onBeforeConnectSuccessConfirmation, setShowAuthFlow, isBridgeFlow, }: Props) => UseConnectWalletValue;
34
34
  export {};
@@ -19,15 +19,15 @@ import { createVisit } from '../../../data/api.js';
19
19
  import '@dynamic-labs/multi-wallet';
20
20
  import { shouldManuallyReconnectOnRefresh } from '../../functions/shouldManuallyReconnectOnRefresh/shouldManuallyReconnectOnRefresh.js';
21
21
 
22
- const useConnectWallet = ({ authMode, clearPrimaryWalletId, enableVisitTrackingOnConnectOnly, environmentId, primaryWalletId, setPrimaryWalletId, wallets, onUnlink, onBeforeConnectSuccessConfirmation, setShowAuthFlow, isBridgeFlow, }) => {
22
+ const useConnectWallet = ({ authMode, clearPrimaryWalletId, enableVisitTrackingOnConnectOnly, environmentId, primaryWalletId, setPrimaryWalletId, wallets, onDisconnect, onBeforeConnectSuccessConfirmation, setShowAuthFlow, isBridgeFlow, }) => {
23
23
  const [connectedWalletsInfo, setConnectedWalletsInfo, removeConnectedWalletsInfo,] = useLocalStorage(CONNECTED_WALLETS_INFO, []);
24
24
  const [connectedWallets, setConnectedWallets] = useState([]);
25
- const unlinkConnectedWallet = useCallback((walletId) => __awaiter(void 0, void 0, void 0, function* () {
25
+ const disconnectWallet = useCallback((walletId) => __awaiter(void 0, void 0, void 0, function* () {
26
26
  const walletToDisconnect = connectedWallets.find((wallet) => wallet.id === walletId);
27
27
  yield (walletToDisconnect === null || walletToDisconnect === void 0 ? void 0 : walletToDisconnect.connector.endSession());
28
28
  const updatedConnectedWalletsInfo = connectedWalletsInfo.filter((wallet) => wallet.id !== walletId);
29
29
  setConnectedWalletsInfo(updatedConnectedWalletsInfo);
30
- onUnlink(updatedConnectedWalletsInfo, walletToDisconnect);
30
+ onDisconnect(updatedConnectedWalletsInfo, walletToDisconnect);
31
31
  if (walletId !== primaryWalletId) {
32
32
  return;
33
33
  }
@@ -43,7 +43,7 @@ const useConnectWallet = ({ authMode, clearPrimaryWalletId, enableVisitTrackingO
43
43
  connectedWallets,
44
44
  connectedWalletsInfo,
45
45
  isBridgeFlow,
46
- onUnlink,
46
+ onDisconnect,
47
47
  primaryWalletId,
48
48
  setConnectedWalletsInfo,
49
49
  setPrimaryWalletId,
@@ -63,12 +63,12 @@ const useConnectWallet = ({ authMode, clearPrimaryWalletId, enableVisitTrackingO
63
63
  if (!walletConnector) {
64
64
  logger.error('Could not find walletConnector: ' +
65
65
  storedConnectedWalletInfo.walletConnectorKey);
66
- yield unlinkConnectedWallet(storedConnectedWalletInfo.id);
66
+ yield disconnectWallet(storedConnectedWalletInfo.id);
67
67
  return null;
68
68
  }
69
69
  const [walletAddress] = yield walletConnector.getConnectedAccounts();
70
70
  if (!walletAddress) {
71
- yield unlinkConnectedWallet(storedConnectedWalletInfo.id);
71
+ yield disconnectWallet(storedConnectedWalletInfo.id);
72
72
  return null;
73
73
  }
74
74
  const walletNetwork = yield walletConnector.getNetwork();
@@ -84,7 +84,7 @@ const useConnectWallet = ({ authMode, clearPrimaryWalletId, enableVisitTrackingO
84
84
  return walletObject;
85
85
  })))).filter((wallet) => Boolean(wallet));
86
86
  setConnectedWallets(updatedConnectedWallets);
87
- }), [connectedWalletsInfo, unlinkConnectedWallet, wallets]);
87
+ }), [connectedWalletsInfo, disconnectWallet, wallets]);
88
88
  // Generate the connectedWallets list when connectedWalletsInfo (localStorage) or memoized wallet connector updates
89
89
  useEffect(() => {
90
90
  updateConnectedWalletsList();
@@ -136,7 +136,7 @@ const useConnectWallet = ({ authMode, clearPrimaryWalletId, enableVisitTrackingO
136
136
  });
137
137
  if (!shouldProceedWithConnection) {
138
138
  logger.info('Connection was not established because onBeforeConnectSuccessConfirmation returned false');
139
- unlinkConnectedWallet(walletId);
139
+ disconnectWallet(walletId);
140
140
  setShowAuthFlow(false);
141
141
  return;
142
142
  }
@@ -206,10 +206,10 @@ const useConnectWallet = ({ authMode, clearPrimaryWalletId, enableVisitTrackingO
206
206
  connectedWallet,
207
207
  connectedWallets,
208
208
  connectedWalletsInfo,
209
+ disconnectWallet,
209
210
  getConnectedWalletById,
210
211
  refreshConnectedWallet,
211
212
  removeConnectedWalletsInfo,
212
- unlinkConnectedWallet,
213
213
  };
214
214
  };
215
215
 
@@ -31,6 +31,9 @@ const useFetchProjectSettings = ({ authToken, environmentId, maxRetries = 2, dyn
31
31
  removeLsSettings();
32
32
  }
33
33
  const overrideSettings = (projectSettings, overrides) => {
34
+ if (!projectSettings) {
35
+ return undefined;
36
+ }
34
37
  let overrideSettings = projectSettings;
35
38
  if (overrides) {
36
39
  if (overrides.views) {
@@ -65,12 +68,11 @@ const useFetchProjectSettings = ({ authToken, environmentId, maxRetries = 2, dyn
65
68
  .then((response) => {
66
69
  if (!response)
67
70
  throw new utils.DynamicError('Settings are not defined');
68
- const settingsWithOverrides = overrideSettings(response, dynamicContextProps.settings.overrides);
69
71
  const expiry = new Date().getTime() + 60000 * 5;
70
72
  setLsSettings({
71
73
  environmentId,
72
74
  expiry: expiry,
73
- settings: settingsWithOverrides,
75
+ settings: response,
74
76
  });
75
77
  })
76
78
  .catch(() => {
@@ -81,7 +83,12 @@ const useFetchProjectSettings = ({ authToken, environmentId, maxRetries = 2, dyn
81
83
  });
82
84
  }
83
85
  }, [environmentId, isLoading, lsSettingsExists, maxRetries, retries]);
84
- return { isLoading, projectSettings: lsSettings === null || lsSettings === void 0 ? void 0 : lsSettings.settings, removeLsSettings };
86
+ const settingsWithOverride = React.useMemo(() => overrideSettings(lsSettings === null || lsSettings === void 0 ? void 0 : lsSettings.settings, dynamicContextProps.settings.overrides), [lsSettings === null || lsSettings === void 0 ? void 0 : lsSettings.settings, dynamicContextProps.settings.overrides]);
87
+ return {
88
+ isLoading,
89
+ projectSettings: settingsWithOverride,
90
+ removeLsSettings,
91
+ };
85
92
  };
86
93
 
87
94
  exports.useFetchProjectSettings = useFetchProjectSettings;
@@ -1,4 +1,4 @@
1
- import { useState, useEffect } from 'react';
1
+ import { useState, useEffect, useMemo } from 'react';
2
2
  import { DynamicError } from '@dynamic-labs/utils';
3
3
  import { sendDynamicProps, fetchProjectSettings } from '../../../data/api.js';
4
4
  import '@dynamic-labs/sdk-api';
@@ -27,6 +27,9 @@ const useFetchProjectSettings = ({ authToken, environmentId, maxRetries = 2, dyn
27
27
  removeLsSettings();
28
28
  }
29
29
  const overrideSettings = (projectSettings, overrides) => {
30
+ if (!projectSettings) {
31
+ return undefined;
32
+ }
30
33
  let overrideSettings = projectSettings;
31
34
  if (overrides) {
32
35
  if (overrides.views) {
@@ -61,12 +64,11 @@ const useFetchProjectSettings = ({ authToken, environmentId, maxRetries = 2, dyn
61
64
  .then((response) => {
62
65
  if (!response)
63
66
  throw new DynamicError('Settings are not defined');
64
- const settingsWithOverrides = overrideSettings(response, dynamicContextProps.settings.overrides);
65
67
  const expiry = new Date().getTime() + 60000 * 5;
66
68
  setLsSettings({
67
69
  environmentId,
68
70
  expiry: expiry,
69
- settings: settingsWithOverrides,
71
+ settings: response,
70
72
  });
71
73
  })
72
74
  .catch(() => {
@@ -77,7 +79,12 @@ const useFetchProjectSettings = ({ authToken, environmentId, maxRetries = 2, dyn
77
79
  });
78
80
  }
79
81
  }, [environmentId, isLoading, lsSettingsExists, maxRetries, retries]);
80
- return { isLoading, projectSettings: lsSettings === null || lsSettings === void 0 ? void 0 : lsSettings.settings, removeLsSettings };
82
+ const settingsWithOverride = useMemo(() => overrideSettings(lsSettings === null || lsSettings === void 0 ? void 0 : lsSettings.settings, dynamicContextProps.settings.overrides), [lsSettings === null || lsSettings === void 0 ? void 0 : lsSettings.settings, dynamicContextProps.settings.overrides]);
83
+ return {
84
+ isLoading,
85
+ projectSettings: settingsWithOverride,
86
+ removeLsSettings,
87
+ };
81
88
  };
82
89
 
83
90
  export { useFetchProjectSettings };
@@ -28,11 +28,13 @@ var stringifyURIQuery = require('../../functions/stringifyURIQuery/stringifyURIQ
28
28
  var digestSHA256 = require('../../functions/digestSHA256/digestSHA256.cjs');
29
29
  var encodeBase64URL = require('../../functions/encodeBase64URL/encodeBase64URL.cjs');
30
30
  var getOauthLoginUrl = require('../../functions/getOauthLoginUrl/getOauthLoginUrl.cjs');
31
+ var getProviderByType = require('../../functions/getProviderByType/getProviderByType.cjs');
31
32
  var useCreateUserProfileByJWTCallback = require('../useCreateUserProfileByJWTCallback/useCreateUserProfileByJWTCallback.cjs');
32
33
  var ErrorContext = require('../../../context/ErrorContext/ErrorContext.cjs');
33
34
  var useEmbeddedWallet = require('../useEmbeddedWallet/useEmbeddedWallet.cjs');
34
35
 
35
36
  const socialProviders = [
37
+ 'apple',
36
38
  'discord',
37
39
  'facebook',
38
40
  'github',
@@ -182,19 +184,39 @@ const useSocialAuth = ({ sessionTimeout, authMode, onSettled, onError, }) => {
182
184
  providersWaitingOauthMessage.current = Object.assign(Object.assign({}, providersWaitingOauthMessage.current), { [provider]: false });
183
185
  };
184
186
  const handleAuthWindowMessage = (event) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
185
- var _d;
187
+ var _d, _e;
186
188
  const message = event.data;
187
189
  const isAuthorizationMessage = (message === null || message === void 0 ? void 0 : message.type) === 'authorization_response';
188
190
  if (isAuthorizationMessage) {
189
191
  logger.logger.debug('Message received', { data: message });
190
192
  }
191
- const isValidMessage = isAuthorizationMessage && (message === null || message === void 0 ? void 0 : message.provider) === provider;
193
+ const apiProvider = getProviderByType.getProviderByType((_d = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) !== null && _d !== void 0 ? _d : [], provider);
194
+ if (!(apiProvider === null || apiProvider === void 0 ? void 0 : apiProvider.redirectUrl)) {
195
+ return;
196
+ }
197
+ let expectedOrigin = window.location.origin;
198
+ if (!providersWithoutWindowOpenerRefence.includes(provider)) {
199
+ try {
200
+ const redirectUri = new URL(apiProvider.redirectUrl);
201
+ expectedOrigin = redirectUri.origin;
202
+ }
203
+ catch (e) {
204
+ logger.logger.error('Failed to parse social provider redirect url', {
205
+ error: e,
206
+ });
207
+ return;
208
+ }
209
+ }
210
+ const isExpectedOrigin = event.origin === expectedOrigin;
211
+ const isValidMessage = isAuthorizationMessage &&
212
+ (message === null || message === void 0 ? void 0 : message.provider) === provider &&
213
+ isExpectedOrigin;
192
214
  // don't process invalid messages for provider
193
215
  if (!isValidMessage) {
194
216
  return;
195
217
  }
196
218
  setIsProcessing(true);
197
- if (!((_d = providersWaitingOauthMessage.current) === null || _d === void 0 ? void 0 : _d[provider])) {
219
+ if (!((_e = providersWaitingOauthMessage.current) === null || _e === void 0 ? void 0 : _e[provider])) {
198
220
  handleError(types.SocialOAuthErrorCode.SESSION_TIMEOUT, `Connecting ${provider} account session timeout.`);
199
221
  return;
200
222
  }
@@ -221,19 +243,23 @@ const useSocialAuth = ({ sessionTimeout, authMode, onSettled, onError, }) => {
221
243
  handleError(types.SocialOAuthErrorCode.NO_OAUTH_URL, `Failed to get login url to connect social account: ${provider}`);
222
244
  return;
223
245
  }
224
- let oauthLoginUrl = loginUrl;
246
+ if (!((_c = providersWaitingOauthMessage.current) === null || _c === void 0 ? void 0 : _c[provider])) {
247
+ window.addEventListener('message', handleAuthWindowMessage);
248
+ providersWaitingOauthMessage.current = Object.assign(Object.assign({}, providersWaitingOauthMessage.current), { [provider]: true });
249
+ }
250
+ // add state param for all providers
251
+ const stateParam = stringifyURIQuery.stringifyURIQuery({
252
+ state,
253
+ });
254
+ let oauthLoginUrl = `${loginUrl}&${stateParam}`;
255
+ // only add pkce params for providers that support/require it
225
256
  if (providersRequiringPkce.includes(provider)) {
226
257
  const digest = yield digestSHA256.digestSHA256(verifier);
227
258
  const pkceParams = stringifyURIQuery.stringifyURIQuery({
228
259
  code_challenge: encodeBase64URL.encodeBase64URL(digest),
229
260
  code_challenge_method: 'S256',
230
- state: state,
231
261
  });
232
- oauthLoginUrl = `${loginUrl}&${pkceParams}`;
233
- }
234
- if (!((_c = providersWaitingOauthMessage.current) === null || _c === void 0 ? void 0 : _c[provider])) {
235
- window.addEventListener('message', handleAuthWindowMessage);
236
- providersWaitingOauthMessage.current = Object.assign(Object.assign({}, providersWaitingOauthMessage.current), { [provider]: true });
262
+ oauthLoginUrl = `${oauthLoginUrl}&${pkceParams}`;
237
263
  }
238
264
  authWindow === null || authWindow === void 0 ? void 0 : authWindow.location.assign(oauthLoginUrl);
239
265
  if (!providersWithoutWindowOpenerRefence.includes(provider)) {
@@ -260,10 +286,10 @@ const useSocialAuth = ({ sessionTimeout, authMode, onSettled, onError, }) => {
260
286
  shouldPool.current = true;
261
287
  poolOauthResult(provider, state);
262
288
  authWindowInterval.current = setInterval(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
263
- var _e;
289
+ var _f;
264
290
  shouldPool.current = false;
265
291
  // clear all states/listeners, assuming user closed the window before completing oauth
266
- if ((_e = providersWaitingOauthMessage.current) === null || _e === void 0 ? void 0 : _e[provider]) {
292
+ if ((_f = providersWaitingOauthMessage.current) === null || _f === void 0 ? void 0 : _f[provider]) {
267
293
  clearListeners();
268
294
  handleError(types.SocialOAuthErrorCode.OAUTH_WINDOW_TIMEOUT, `Connecting ${provider} account window timeout.`);
269
295
  }
@@ -24,11 +24,13 @@ import { stringifyURIQuery } from '../../functions/stringifyURIQuery/stringifyUR
24
24
  import { digestSHA256 } from '../../functions/digestSHA256/digestSHA256.js';
25
25
  import { encodeBase64URL } from '../../functions/encodeBase64URL/encodeBase64URL.js';
26
26
  import { getOauthLoginUrl } from '../../functions/getOauthLoginUrl/getOauthLoginUrl.js';
27
+ import { getProviderByType } from '../../functions/getProviderByType/getProviderByType.js';
27
28
  import { useCreateUserProfileByJWTCallback } from '../useCreateUserProfileByJWTCallback/useCreateUserProfileByJWTCallback.js';
28
29
  import { useErrorContext } from '../../../context/ErrorContext/ErrorContext.js';
29
30
  import { useEmbeddedWallet } from '../useEmbeddedWallet/useEmbeddedWallet.js';
30
31
 
31
32
  const socialProviders = [
33
+ 'apple',
32
34
  'discord',
33
35
  'facebook',
34
36
  'github',
@@ -178,19 +180,39 @@ const useSocialAuth = ({ sessionTimeout, authMode, onSettled, onError, }) => {
178
180
  providersWaitingOauthMessage.current = Object.assign(Object.assign({}, providersWaitingOauthMessage.current), { [provider]: false });
179
181
  };
180
182
  const handleAuthWindowMessage = (event) => __awaiter(void 0, void 0, void 0, function* () {
181
- var _d;
183
+ var _d, _e;
182
184
  const message = event.data;
183
185
  const isAuthorizationMessage = (message === null || message === void 0 ? void 0 : message.type) === 'authorization_response';
184
186
  if (isAuthorizationMessage) {
185
187
  logger.debug('Message received', { data: message });
186
188
  }
187
- const isValidMessage = isAuthorizationMessage && (message === null || message === void 0 ? void 0 : message.provider) === provider;
189
+ const apiProvider = getProviderByType((_d = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) !== null && _d !== void 0 ? _d : [], provider);
190
+ if (!(apiProvider === null || apiProvider === void 0 ? void 0 : apiProvider.redirectUrl)) {
191
+ return;
192
+ }
193
+ let expectedOrigin = window.location.origin;
194
+ if (!providersWithoutWindowOpenerRefence.includes(provider)) {
195
+ try {
196
+ const redirectUri = new URL(apiProvider.redirectUrl);
197
+ expectedOrigin = redirectUri.origin;
198
+ }
199
+ catch (e) {
200
+ logger.error('Failed to parse social provider redirect url', {
201
+ error: e,
202
+ });
203
+ return;
204
+ }
205
+ }
206
+ const isExpectedOrigin = event.origin === expectedOrigin;
207
+ const isValidMessage = isAuthorizationMessage &&
208
+ (message === null || message === void 0 ? void 0 : message.provider) === provider &&
209
+ isExpectedOrigin;
188
210
  // don't process invalid messages for provider
189
211
  if (!isValidMessage) {
190
212
  return;
191
213
  }
192
214
  setIsProcessing(true);
193
- if (!((_d = providersWaitingOauthMessage.current) === null || _d === void 0 ? void 0 : _d[provider])) {
215
+ if (!((_e = providersWaitingOauthMessage.current) === null || _e === void 0 ? void 0 : _e[provider])) {
194
216
  handleError(SocialOAuthErrorCode.SESSION_TIMEOUT, `Connecting ${provider} account session timeout.`);
195
217
  return;
196
218
  }
@@ -217,19 +239,23 @@ const useSocialAuth = ({ sessionTimeout, authMode, onSettled, onError, }) => {
217
239
  handleError(SocialOAuthErrorCode.NO_OAUTH_URL, `Failed to get login url to connect social account: ${provider}`);
218
240
  return;
219
241
  }
220
- let oauthLoginUrl = loginUrl;
242
+ if (!((_c = providersWaitingOauthMessage.current) === null || _c === void 0 ? void 0 : _c[provider])) {
243
+ window.addEventListener('message', handleAuthWindowMessage);
244
+ providersWaitingOauthMessage.current = Object.assign(Object.assign({}, providersWaitingOauthMessage.current), { [provider]: true });
245
+ }
246
+ // add state param for all providers
247
+ const stateParam = stringifyURIQuery({
248
+ state,
249
+ });
250
+ let oauthLoginUrl = `${loginUrl}&${stateParam}`;
251
+ // only add pkce params for providers that support/require it
221
252
  if (providersRequiringPkce.includes(provider)) {
222
253
  const digest = yield digestSHA256(verifier);
223
254
  const pkceParams = stringifyURIQuery({
224
255
  code_challenge: encodeBase64URL(digest),
225
256
  code_challenge_method: 'S256',
226
- state: state,
227
257
  });
228
- oauthLoginUrl = `${loginUrl}&${pkceParams}`;
229
- }
230
- if (!((_c = providersWaitingOauthMessage.current) === null || _c === void 0 ? void 0 : _c[provider])) {
231
- window.addEventListener('message', handleAuthWindowMessage);
232
- providersWaitingOauthMessage.current = Object.assign(Object.assign({}, providersWaitingOauthMessage.current), { [provider]: true });
258
+ oauthLoginUrl = `${oauthLoginUrl}&${pkceParams}`;
233
259
  }
234
260
  authWindow === null || authWindow === void 0 ? void 0 : authWindow.location.assign(oauthLoginUrl);
235
261
  if (!providersWithoutWindowOpenerRefence.includes(provider)) {
@@ -256,10 +282,10 @@ const useSocialAuth = ({ sessionTimeout, authMode, onSettled, onError, }) => {
256
282
  shouldPool.current = true;
257
283
  poolOauthResult(provider, state);
258
284
  authWindowInterval.current = setInterval(() => __awaiter(void 0, void 0, void 0, function* () {
259
- var _e;
285
+ var _f;
260
286
  shouldPool.current = false;
261
287
  // clear all states/listeners, assuming user closed the window before completing oauth
262
- if ((_e = providersWaitingOauthMessage.current) === null || _e === void 0 ? void 0 : _e[provider]) {
288
+ if ((_f = providersWaitingOauthMessage.current) === null || _f === void 0 ? void 0 : _f[provider]) {
263
289
  clearListeners();
264
290
  handleError(SocialOAuthErrorCode.OAUTH_WINDOW_TIMEOUT, `Connecting ${provider} account window timeout.`);
265
291
  }
@@ -59,7 +59,7 @@ var WalletInformationCard = require('../../../../components/WalletInformationCar
59
59
  require('../../../../components/MenuList/Dropdown/Dropdown.cjs');
60
60
  var useFetchNameService = require('../../../DynamicWidget/hooks/useFetchNameService/useFetchNameService.cjs');
61
61
 
62
- const DynamicBridgeWalletCardBody = ({ walletAddress, walletBalance, walletKey, onUnlinkClick }) => {
62
+ const DynamicBridgeWalletCardBody = ({ walletAddress, walletBalance, walletKey, onDisconnectClick }) => {
63
63
  const nameService = useFetchNameService.useFetchNameService(walletAddress);
64
64
  const options = [
65
65
  {
@@ -76,8 +76,8 @@ const DynamicBridgeWalletCardBody = ({ walletAddress, walletBalance, walletKey,
76
76
  },
77
77
  {
78
78
  Icon: null,
79
- callback: () => onUnlinkClick === null || onUnlinkClick === void 0 ? void 0 : onUnlinkClick(),
80
- hide: !onUnlinkClick,
79
+ callback: () => onDisconnectClick === null || onDisconnectClick === void 0 ? void 0 : onDisconnectClick(),
80
+ hide: !onDisconnectClick,
81
81
  text: 'Disconnect',
82
82
  },
83
83
  ];
@@ -3,6 +3,6 @@ export type DynamicBridgeWalletCardBodyProps = {
3
3
  walletKey: string;
4
4
  walletAddress: string;
5
5
  walletBalance?: ReactElement;
6
- onUnlinkClick?: () => void;
6
+ onDisconnectClick?: () => void;
7
7
  };
8
8
  export declare const DynamicBridgeWalletCardBody: FC<DynamicBridgeWalletCardBodyProps>;
@@ -55,7 +55,7 @@ import { WalletInformationCard } from '../../../../components/WalletInformationC
55
55
  import '../../../../components/MenuList/Dropdown/Dropdown.js';
56
56
  import { useFetchNameService } from '../../../DynamicWidget/hooks/useFetchNameService/useFetchNameService.js';
57
57
 
58
- const DynamicBridgeWalletCardBody = ({ walletAddress, walletBalance, walletKey, onUnlinkClick }) => {
58
+ const DynamicBridgeWalletCardBody = ({ walletAddress, walletBalance, walletKey, onDisconnectClick }) => {
59
59
  const nameService = useFetchNameService(walletAddress);
60
60
  const options = [
61
61
  {
@@ -72,8 +72,8 @@ const DynamicBridgeWalletCardBody = ({ walletAddress, walletBalance, walletKey,
72
72
  },
73
73
  {
74
74
  Icon: null,
75
- callback: () => onUnlinkClick === null || onUnlinkClick === void 0 ? void 0 : onUnlinkClick(),
76
- hide: !onUnlinkClick,
75
+ callback: () => onDisconnectClick === null || onDisconnectClick === void 0 ? void 0 : onDisconnectClick(),
76
+ hide: !onDisconnectClick,
77
77
  text: 'Disconnect',
78
78
  },
79
79
  ];
@@ -64,7 +64,7 @@ var DynamicBridgeWalletCardBody = require('../../components/DynamicBridgeWalletC
64
64
  var DynamicBridgeWidgetEmptyCard = require('../../components/DynamicBridgeWidgetEmptyCard/DynamicBridgeWidgetEmptyCard.cjs');
65
65
 
66
66
  const WalletsView = () => {
67
- const { unlinkConnectedWallet, walletsByChain, connectedWallets } = useInternalDynamicContext.useInternalDynamicContext();
67
+ const { disconnectWallet, walletsByChain, connectedWallets } = useInternalDynamicContext.useInternalDynamicContext();
68
68
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: 'dynamic-bridge-widget-wallets-view', "data-testid": 'dynamic-bridge-wget-wallets-view', children: walletsByChain === null || walletsByChain === void 0 ? void 0 : walletsByChain.map(({ chain }) => {
69
69
  const chainWallets = connectedWallets.filter(({ chain: walletChain }) => chain === walletChain);
70
70
  // "Connect wallet" for empty chains
@@ -73,7 +73,7 @@ const WalletsView = () => {
73
73
  const WalletIcon = getChainIcon.getChainIcon(chain);
74
74
  const walletInfo = walletConnectorCore.getChainInfo(chain);
75
75
  // Wallets info for chains with connected wallets
76
- return chainWallets.map(({ connector, address, id }) => (jsxRuntime.jsx(DynamicBridgeWalletCard.DynamicBridgeWalletCard, { networkIcon: jsxRuntime.jsx(WalletIcon, {}), networkName: walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.displayName, children: jsxRuntime.jsx(DynamicBridgeWalletCardBody.DynamicBridgeWalletCardBody, { walletKey: connector.key, walletAddress: address, walletBalance: jsxRuntime.jsx(Balance.Balance, { address: address, connector: connector, network: chain }), onUnlinkClick: () => unlinkConnectedWallet(id) }) }, `${id}-${connector.name}`)));
76
+ return chainWallets.map(({ connector, address, id }) => (jsxRuntime.jsx(DynamicBridgeWalletCard.DynamicBridgeWalletCard, { networkIcon: jsxRuntime.jsx(WalletIcon, {}), networkName: walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.displayName, children: jsxRuntime.jsx(DynamicBridgeWalletCardBody.DynamicBridgeWalletCardBody, { walletKey: connector.key, walletAddress: address, walletBalance: jsxRuntime.jsx(Balance.Balance, { address: address, connector: connector, network: chain }), onDisconnectClick: () => disconnectWallet(id) }) }, `${id}-${connector.name}`)));
77
77
  }) }), jsxRuntime.jsx(DynamicWidgetFooter.DynamicWidgetFooter, { children: jsxRuntime.jsx(LogoutButton.LogoutButton, { buttonClassName: 'dynamic-bridge-widget-wallets-view__logout-button', isTextButton: true }) })] }));
78
78
  };
79
79
 
@@ -60,7 +60,7 @@ import { DynamicBridgeWalletCardBody } from '../../components/DynamicBridgeWalle
60
60
  import { DynamicBridgeWidgetEmptyCard } from '../../components/DynamicBridgeWidgetEmptyCard/DynamicBridgeWidgetEmptyCard.js';
61
61
 
62
62
  const WalletsView = () => {
63
- const { unlinkConnectedWallet, walletsByChain, connectedWallets } = useInternalDynamicContext();
63
+ const { disconnectWallet, walletsByChain, connectedWallets } = useInternalDynamicContext();
64
64
  return (jsxs(Fragment, { children: [jsx("div", { className: 'dynamic-bridge-widget-wallets-view', "data-testid": 'dynamic-bridge-wget-wallets-view', children: walletsByChain === null || walletsByChain === void 0 ? void 0 : walletsByChain.map(({ chain }) => {
65
65
  const chainWallets = connectedWallets.filter(({ chain: walletChain }) => chain === walletChain);
66
66
  // "Connect wallet" for empty chains
@@ -69,7 +69,7 @@ const WalletsView = () => {
69
69
  const WalletIcon = getChainIcon(chain);
70
70
  const walletInfo = getChainInfo(chain);
71
71
  // Wallets info for chains with connected wallets
72
- return chainWallets.map(({ connector, address, id }) => (jsx(DynamicBridgeWalletCard, { networkIcon: jsx(WalletIcon, {}), networkName: walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.displayName, children: jsx(DynamicBridgeWalletCardBody, { walletKey: connector.key, walletAddress: address, walletBalance: jsx(Balance, { address: address, connector: connector, network: chain }), onUnlinkClick: () => unlinkConnectedWallet(id) }) }, `${id}-${connector.name}`)));
72
+ return chainWallets.map(({ connector, address, id }) => (jsx(DynamicBridgeWalletCard, { networkIcon: jsx(WalletIcon, {}), networkName: walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.displayName, children: jsx(DynamicBridgeWalletCardBody, { walletKey: connector.key, walletAddress: address, walletBalance: jsx(Balance, { address: address, connector: connector, network: chain }), onDisconnectClick: () => disconnectWallet(id) }) }, `${id}-${connector.name}`)));
73
73
  }) }), jsx(DynamicWidgetFooter, { children: jsx(LogoutButton, { buttonClassName: 'dynamic-bridge-widget-wallets-view__logout-button', isTextButton: true }) })] }));
74
74
  };
75
75
 
@@ -27,15 +27,13 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
27
27
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
28
28
 
29
29
  const SecondaryWallets = ({ hideUnlinkAction = false }) => {
30
- const { unlinkConnectedWallet, getConnectedWalletById, walletsByChain } = useInternalDynamicContext.useInternalDynamicContext();
30
+ const { disconnectWallet, getConnectedWalletById, walletsByChain } = useInternalDynamicContext.useInternalDynamicContext();
31
31
  const wallet = getConnectedWalletById('connect-wallet-1');
32
32
  const NetworkIcon = wallet && getChainIcon.getChainIcon(wallet === null || wallet === void 0 ? void 0 : wallet.chain);
33
33
  const networkInfo = wallet && walletConnectorCore.getChainInfo(wallet === null || wallet === void 0 ? void 0 : wallet.chain);
34
34
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [!wallet && (jsxRuntime.jsx(DynamicBridgeWidgetEmptyCard.DynamicBridgeWidgetEmptyCard, { chain: walletsByChain === null || walletsByChain === void 0 ? void 0 : walletsByChain[1].chain })), wallet && NetworkIcon && (jsxRuntime.jsx(DynamicBridgeWalletCard.DynamicBridgeWalletCard, { networkIcon: jsxRuntime.jsx(NetworkIcon, {}), networkName: networkInfo === null || networkInfo === void 0 ? void 0 : networkInfo.displayName, children: jsxRuntime.jsx(DynamicBridgeWalletCardBody.DynamicBridgeWalletCardBody, { walletKey: wallet.connector.key, walletAddress: wallet.address, walletBalance:
35
35
  // eslint-disable-next-line react/jsx-wrap-multilines
36
- jsxRuntime.jsx(Balance.Balance, { address: wallet.address, connector: wallet.connector, network: wallet.chain }), onUnlinkClick: !hideUnlinkAction
37
- ? () => unlinkConnectedWallet(wallet.id)
38
- : undefined }, wallet.id) }))] }));
36
+ jsxRuntime.jsx(Balance.Balance, { address: wallet.address, connector: wallet.connector, network: wallet.chain }), onDisconnectClick: !hideUnlinkAction ? () => disconnectWallet(wallet.id) : undefined }, wallet.id) }))] }));
39
37
  };
40
38
  const MemoSecondaryWallets = React__default["default"].memo(SecondaryWallets);
41
39
 
@@ -19,15 +19,13 @@ import { useInternalDynamicContext } from '../../../../../../context/DynamicCont
19
19
  import { DynamicBridgeWidgetEmptyCard } from '../../../../components/DynamicBridgeWidgetEmptyCard/DynamicBridgeWidgetEmptyCard.js';
20
20
 
21
21
  const SecondaryWallets = ({ hideUnlinkAction = false }) => {
22
- const { unlinkConnectedWallet, getConnectedWalletById, walletsByChain } = useInternalDynamicContext();
22
+ const { disconnectWallet, getConnectedWalletById, walletsByChain } = useInternalDynamicContext();
23
23
  const wallet = getConnectedWalletById('connect-wallet-1');
24
24
  const NetworkIcon = wallet && getChainIcon(wallet === null || wallet === void 0 ? void 0 : wallet.chain);
25
25
  const networkInfo = wallet && getChainInfo(wallet === null || wallet === void 0 ? void 0 : wallet.chain);
26
26
  return (jsxs(Fragment, { children: [!wallet && (jsx(DynamicBridgeWidgetEmptyCard, { chain: walletsByChain === null || walletsByChain === void 0 ? void 0 : walletsByChain[1].chain })), wallet && NetworkIcon && (jsx(DynamicBridgeWalletCard, { networkIcon: jsx(NetworkIcon, {}), networkName: networkInfo === null || networkInfo === void 0 ? void 0 : networkInfo.displayName, children: jsx(DynamicBridgeWalletCardBody, { walletKey: wallet.connector.key, walletAddress: wallet.address, walletBalance:
27
27
  // eslint-disable-next-line react/jsx-wrap-multilines
28
- jsx(Balance, { address: wallet.address, connector: wallet.connector, network: wallet.chain }), onUnlinkClick: !hideUnlinkAction
29
- ? () => unlinkConnectedWallet(wallet.id)
30
- : undefined }, wallet.id) }))] }));
28
+ jsx(Balance, { address: wallet.address, connector: wallet.connector, network: wallet.chain }), onDisconnectClick: !hideUnlinkAction ? () => disconnectWallet(wallet.id) : undefined }, wallet.id) }))] }));
31
29
  };
32
30
  const MemoSecondaryWallets = React__default.memo(SecondaryWallets);
33
31