@dynamic-labs/sdk-react-core 0.19.0-alpha.25 → 0.19.0-alpha.27

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 (99) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/package.cjs +2 -2
  3. package/package.js +2 -2
  4. package/package.json +10 -10
  5. package/src/lib/components/Accordion/components/VerticalAccordion/VerticalAccordion.cjs +1 -1
  6. package/src/lib/components/Accordion/components/VerticalAccordion/VerticalAccordion.js +1 -1
  7. package/src/lib/components/Accordion/components/VerticalAccordion/VerticalAccordion.types.d.ts +2 -4
  8. package/src/lib/components/Button/Button.cjs +1 -0
  9. package/src/lib/components/Button/Button.d.ts +1 -1
  10. package/src/lib/components/Button/Button.js +1 -0
  11. package/src/lib/components/LogoutButton/LogoutButton.cjs +1 -3
  12. package/src/lib/components/LogoutButton/LogoutButton.js +1 -3
  13. package/src/lib/components/NetworkPicker/NetworkPicker.cjs +5 -2
  14. package/src/lib/components/NetworkPicker/NetworkPicker.js +5 -2
  15. package/src/lib/components/SendBalancePageLayout/SendBalancePageLayout.cjs +1 -1
  16. package/src/lib/components/SendBalancePageLayout/SendBalancePageLayout.js +2 -2
  17. package/src/lib/components/SocialSignIn/SocialSignIn.cjs +8 -3
  18. package/src/lib/components/SocialSignIn/SocialSignIn.js +8 -3
  19. package/src/lib/components/Typography/Typography.cjs +1 -0
  20. package/src/lib/components/Typography/Typography.js +1 -0
  21. package/src/lib/components/Typography/Typography.types.d.ts +1 -1
  22. package/src/lib/components/UserProfile/parts/UserProfileField/UserProfileField.cjs +1 -1
  23. package/src/lib/components/UserProfile/parts/UserProfileField/UserProfileField.js +1 -1
  24. package/src/lib/context/DynamicContext/DynamicContext.cjs +5 -3
  25. package/src/lib/context/DynamicContext/DynamicContext.js +5 -3
  26. package/src/lib/context/DynamicContext/internalEvents/internalEvents.d.ts +0 -1
  27. package/src/lib/context/DynamicContext/useDynamicContext.cjs +1 -2
  28. package/src/lib/context/DynamicContext/useDynamicContext.d.ts +1 -1
  29. package/src/lib/context/DynamicContext/useDynamicContext.js +1 -2
  30. package/src/lib/context/SocialRedirectContext/SocialRedirectContext.cjs +8 -8
  31. package/src/lib/context/SocialRedirectContext/SocialRedirectContext.js +8 -8
  32. package/src/lib/context/ViewContext/ViewContext.cjs +14 -1
  33. package/src/lib/context/ViewContext/ViewContext.d.ts +3 -1
  34. package/src/lib/context/ViewContext/ViewContext.js +15 -2
  35. package/src/lib/layout/DynamicAuthLayout/DynamicAuthLayout.cjs +2 -2
  36. package/src/lib/layout/DynamicAuthLayout/DynamicAuthLayout.d.ts +2 -2
  37. package/src/lib/layout/DynamicAuthLayout/DynamicAuthLayout.js +2 -2
  38. package/src/lib/layout/DynamicUserProfileLayout/DynamicUserProfileLayout.cjs +3 -2
  39. package/src/lib/layout/DynamicUserProfileLayout/DynamicUserProfileLayout.d.ts +2 -3
  40. package/src/lib/layout/DynamicUserProfileLayout/DynamicUserProfileLayout.js +4 -3
  41. package/src/lib/shared/utils/hooks/useOnClickOutside/index.cjs +2 -2
  42. package/src/lib/shared/utils/hooks/useOnClickOutside/index.js +2 -2
  43. package/src/lib/styles/index.shadow.cjs +1 -1
  44. package/src/lib/styles/index.shadow.js +1 -1
  45. package/src/lib/utils/functions/getUserWalletsFromVerifiedCredentials/getUserWalletsFromVerifiedCredentials.cjs +26 -0
  46. package/src/lib/utils/functions/getUserWalletsFromVerifiedCredentials/getUserWalletsFromVerifiedCredentials.d.ts +1 -0
  47. package/src/lib/utils/functions/getUserWalletsFromVerifiedCredentials/getUserWalletsFromVerifiedCredentials.js +22 -0
  48. package/src/lib/utils/functions/getUserWalletsFromVerifiedCredentials/index.d.ts +1 -0
  49. package/src/lib/utils/functions/index.d.ts +1 -0
  50. package/src/lib/utils/hooks/multiWallet/useSyncPrimaryWallet/useSyncPrimaryWallet.cjs +2 -5
  51. package/src/lib/utils/hooks/multiWallet/useSyncPrimaryWallet/useSyncPrimaryWallet.js +2 -5
  52. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +12 -6
  53. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +12 -6
  54. package/src/lib/utils/hooks/useFetchProjectSettings/useFetchProjectSettings.cjs +1 -7
  55. package/src/lib/utils/hooks/useFetchProjectSettings/useFetchProjectSettings.js +2 -8
  56. package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.cjs +2 -6
  57. package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.d.ts +1 -2
  58. package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.js +2 -6
  59. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +15 -5
  60. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +15 -5
  61. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.cjs +4 -2
  62. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.d.ts +2 -1
  63. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.js +4 -2
  64. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.cjs +3 -8
  65. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.js +3 -8
  66. package/src/lib/utils/types/ClassStyleProps.d.ts +5 -0
  67. package/src/lib/utils/types/index.d.ts +1 -0
  68. package/src/lib/views/LoginView/LoginView.cjs +1 -1
  69. package/src/lib/views/LoginView/LoginView.js +1 -1
  70. package/src/lib/views/LoginView/sections/EmailSignInSection/LoginEmailForm.cjs +7 -2
  71. package/src/lib/views/LoginView/sections/EmailSignInSection/LoginEmailForm.js +8 -3
  72. package/src/lib/views/LoginView/sections/SocialSignInSection/MagicSocialSignIn/MagicSocialSignIn.cjs +2 -4
  73. package/src/lib/views/LoginView/sections/SocialSignInSection/MagicSocialSignIn/MagicSocialSignIn.js +2 -4
  74. package/src/lib/views/LoginView/useLoginView.cjs +31 -17
  75. package/src/lib/views/LoginView/useLoginView.js +32 -18
  76. package/src/lib/views/PendingSignatureView/PendingSignatureView.cjs +1 -1
  77. package/src/lib/views/PendingSignatureView/PendingSignatureView.js +1 -1
  78. package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedAuthFlow/DynamicEmbeddedAuthFlow.cjs +2 -2
  79. package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedAuthFlow/DynamicEmbeddedAuthFlow.d.ts +4 -1
  80. package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedAuthFlow/DynamicEmbeddedAuthFlow.js +2 -2
  81. package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedUserProfile/DynamicEmbeddedUserProfile.cjs +2 -2
  82. package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedUserProfile/DynamicEmbeddedUserProfile.d.ts +4 -1
  83. package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedUserProfile/DynamicEmbeddedUserProfile.js +2 -2
  84. package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedWidget.cjs +2 -2
  85. package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedWidget.d.ts +4 -1
  86. package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedWidget.js +2 -2
  87. package/src/lib/widgets/DynamicWidget/components/ActiveWalletInformation/ActiveWalletInformation.cjs +2 -2
  88. package/src/lib/widgets/DynamicWidget/components/ActiveWalletInformation/ActiveWalletInformation.js +2 -2
  89. package/src/lib/widgets/DynamicWidget/components/DynamicUserProfile/DynamicUserProfile.cjs +1 -1
  90. package/src/lib/widgets/DynamicWidget/components/DynamicUserProfile/DynamicUserProfile.js +1 -1
  91. package/src/lib/widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetWalletHeader/DynamicWidgetWalletHeader.cjs +1 -1
  92. package/src/lib/widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetWalletHeader/DynamicWidgetWalletHeader.js +2 -2
  93. package/src/lib/widgets/DynamicWidget/components/DynamicWidgetWallets/DynamicWidgetWallets.cjs +2 -2
  94. package/src/lib/widgets/DynamicWidget/components/DynamicWidgetWallets/DynamicWidgetWallets.js +2 -2
  95. package/src/lib/utils/hooks/useWalletEventListeners/utils/index.d.ts +0 -1
  96. package/src/lib/utils/hooks/useWalletEventListeners/utils/sortAccountsByPrimaryWallet/index.d.ts +0 -1
  97. package/src/lib/utils/hooks/useWalletEventListeners/utils/sortAccountsByPrimaryWallet/sortAccountsByPrimaryWallet.cjs +0 -9
  98. package/src/lib/utils/hooks/useWalletEventListeners/utils/sortAccountsByPrimaryWallet/sortAccountsByPrimaryWallet.d.ts +0 -2
  99. package/src/lib/utils/hooks/useWalletEventListeners/utils/sortAccountsByPrimaryWallet/sortAccountsByPrimaryWallet.js +0 -5
@@ -20,10 +20,11 @@ import { isTurnkeyEnabled } from '../../functions/isTurnkeyEnabled/isTurnkeyEnab
20
20
  import { isEmbeddedWalletPresent } from '../../functions/isEmbeddedWalletPresent/isEmbeddedWalletPresent.js';
21
21
  import { findEmbeddedWalletFromVerifiedCredentials } from '../../functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.js';
22
22
  import { findTurnkeyWallet } from '../../functions/findTurnkeyWallet/findTurnkeyWallet.js';
23
+ import { getUserWalletsFromVerifiedCredentials } from '../../functions/getUserWalletsFromVerifiedCredentials/getUserWalletsFromVerifiedCredentials.js';
23
24
 
24
25
  // Hook exposed to customers and used internally to trigger embedded wallet creation
25
26
  const useEmbeddedWallet = () => {
26
- const { projectSettings, onboardingOnlyJwt, setPrimaryWalletId, wallets, internalSetShowAuthFlow, internalEvents, } = useInternalDynamicContext();
27
+ const { projectSettings, onboardingOnlyJwt, setPrimaryWalletId, wallets, internalSetShowAuthFlow, internalEvents, primaryWallet, } = useInternalDynamicContext();
27
28
  const { setView } = useViewContext();
28
29
  const userHasEmbeddedWallet = () => {
29
30
  var _a;
@@ -42,9 +43,9 @@ const useEmbeddedWallet = () => {
42
43
  if (!isTurnkeyEnabled(projectSettings)) {
43
44
  throw new Error('Passkey embedded wallet is not enabled');
44
45
  }
45
- const embeddedWalletVerifiedCredential = findEmbeddedWalletFromVerifiedCredentials(jwt);
46
- // if user doesn't have an embedded wallet, show the passkey view to create wallet
47
- if (!embeddedWalletVerifiedCredential) {
46
+ const userWaletsCredentials = getUserWalletsFromVerifiedCredentials(jwt);
47
+ // if user doesn't have a wallet yet, show the passkey view to create an embedded wallet
48
+ if (!(userWaletsCredentials === null || userWaletsCredentials === void 0 ? void 0 : userWaletsCredentials.length)) {
48
49
  internalSetShowAuthFlow(true);
49
50
  setView('passkey-intro');
50
51
  return new Promise((resolve, reject) => {
@@ -52,14 +53,19 @@ const useEmbeddedWallet = () => {
52
53
  internalEvents.current.once('embeddedWalletFailed', (error) => reject(error));
53
54
  });
54
55
  }
55
- const decodedJwt = decodeJwt(jwt);
56
+ internalSetShowAuthFlow(false);
57
+ const embeddedWalletVerifiedCredential = findEmbeddedWalletFromVerifiedCredentials(jwt);
56
58
  const turnkeyWallet = findTurnkeyWallet(wallets);
59
+ // if user logged in with MM for example, just continue the flow
60
+ if (!embeddedWalletVerifiedCredential) {
61
+ return Promise.resolve(primaryWallet);
62
+ }
63
+ const decodedJwt = decodeJwt(jwt);
57
64
  // if user already has embedded wallet, set it as primary wallet
58
65
  if (decodedJwt) {
59
66
  (_b = turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector) === null || _b === void 0 ? void 0 : _b.setVerifiedCredentials(decodedJwt.verifiedCredentials);
60
67
  setPrimaryWalletId(embeddedWalletVerifiedCredential.id);
61
68
  }
62
- internalSetShowAuthFlow(false);
63
69
  const passkeyWallet = {
64
70
  address: (yield ((_c = turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector) === null || _c === void 0 ? void 0 : _c.fetchPublicAddress())) || '',
65
71
  chain: ((_d = turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector) === null || _d === void 0 ? void 0 : _d.connectedChain) || '',
@@ -14,7 +14,7 @@ require('../../../context/ViewContext/ViewContext.cjs');
14
14
  require('@dynamic-labs/wallet-book');
15
15
  var localStorage = require('../../constants/localStorage.cjs');
16
16
  require('../../constants/colors.cjs');
17
- var localStorage$1 = require('../../../shared/utils/classes/storage/localStorage.cjs');
17
+ require('../../../shared/utils/classes/storage/localStorage.cjs');
18
18
  require('viem');
19
19
  var useLocalStorage = require('../../../shared/utils/hooks/useLocalStorage/useLocalStorage.cjs');
20
20
  require('../../../shared/consts/index.cjs');
@@ -42,12 +42,6 @@ const useFetchProjectSettings = ({ authToken, environmentId, maxRetries = 2, dyn
42
42
  }
43
43
  return overrideSettings;
44
44
  };
45
- React.useEffect(() => {
46
- const [connectedWalletData] = localStorage$1.LocalStorage.getFromLS(localStorage.CONNECTED_WALLETS_INFO) || [];
47
- if (!authToken && !connectedWalletData) {
48
- removeLsSettings();
49
- }
50
- }, [authToken, removeLsSettings]);
51
45
  React.useEffect(() => {
52
46
  if (!lsSettingsExists &&
53
47
  !isLoading &&
@@ -8,9 +8,9 @@ import '@dynamic-labs/wallet-connector-core';
8
8
  import 'react/jsx-runtime';
9
9
  import '../../../context/ViewContext/ViewContext.js';
10
10
  import '@dynamic-labs/wallet-book';
11
- import { PROJECT_SETTINGS_STORAGE_KEY, CONNECTED_WALLETS_INFO } from '../../constants/localStorage.js';
11
+ import { PROJECT_SETTINGS_STORAGE_KEY } from '../../constants/localStorage.js';
12
12
  import '../../constants/colors.js';
13
- import { LocalStorage } from '../../../shared/utils/classes/storage/localStorage.js';
13
+ import '../../../shared/utils/classes/storage/localStorage.js';
14
14
  import 'viem';
15
15
  import { useLocalStorage } from '../../../shared/utils/hooks/useLocalStorage/useLocalStorage.js';
16
16
  import '../../../shared/consts/index.js';
@@ -38,12 +38,6 @@ const useFetchProjectSettings = ({ authToken, environmentId, maxRetries = 2, dyn
38
38
  }
39
39
  return overrideSettings;
40
40
  };
41
- useEffect(() => {
42
- const [connectedWalletData] = LocalStorage.getFromLS(CONNECTED_WALLETS_INFO) || [];
43
- if (!authToken && !connectedWalletData) {
44
- removeLsSettings();
45
- }
46
- }, [authToken, removeLsSettings]);
47
41
  useEffect(() => {
48
42
  if (!lsSettingsExists &&
49
43
  !isLoading &&
@@ -20,15 +20,11 @@ require('../../../shared/consts/index.cjs');
20
20
  var primaryWalletIdValidator = require('../useWalletConnectors/utils/primaryWalletIdValidator/primaryWalletIdValidator.cjs');
21
21
  require('@dynamic-labs/multi-wallet');
22
22
 
23
- const usePrimaryWalletId = (internalEvents) => {
24
- const [primaryWalletId, setPrimaryWalletIdState, clearPrimaryWalletIdStorage,] = useLocalStorage.useLocalStorage(localStorage.PRIMARY_WALLET_ID, undefined, primaryWalletIdValidator.primaryWalletIdValidator);
23
+ const usePrimaryWalletId = () => {
24
+ const [primaryWalletId, setPrimaryWalletIdState, clearPrimaryWalletId] = useLocalStorage.useLocalStorage(localStorage.PRIMARY_WALLET_ID, undefined, primaryWalletIdValidator.primaryWalletIdValidator);
25
25
  const setPrimaryWalletId = React.useCallback((walletId) => {
26
26
  setPrimaryWalletIdState(walletId);
27
27
  }, [setPrimaryWalletIdState]);
28
- const clearPrimaryWalletId = React.useCallback(() => {
29
- clearPrimaryWalletIdStorage();
30
- internalEvents.emit('clearPrimaryWallet');
31
- }, [clearPrimaryWalletIdStorage, internalEvents]);
32
28
  return {
33
29
  clearPrimaryWalletId,
34
30
  primaryWalletId,
@@ -1,5 +1,4 @@
1
- import { InternalEventEmitter } from '../../../context/DynamicContext/internalEvents';
2
- export declare const usePrimaryWalletId: (internalEvents: InternalEventEmitter) => {
1
+ export declare const usePrimaryWalletId: () => {
3
2
  clearPrimaryWalletId: () => void;
4
3
  primaryWalletId: string | undefined;
5
4
  setPrimaryWalletId: (walletId: string) => void;
@@ -16,15 +16,11 @@ import '../../../shared/consts/index.js';
16
16
  import { primaryWalletIdValidator } from '../useWalletConnectors/utils/primaryWalletIdValidator/primaryWalletIdValidator.js';
17
17
  import '@dynamic-labs/multi-wallet';
18
18
 
19
- const usePrimaryWalletId = (internalEvents) => {
20
- const [primaryWalletId, setPrimaryWalletIdState, clearPrimaryWalletIdStorage,] = useLocalStorage(PRIMARY_WALLET_ID, undefined, primaryWalletIdValidator);
19
+ const usePrimaryWalletId = () => {
20
+ const [primaryWalletId, setPrimaryWalletIdState, clearPrimaryWalletId] = useLocalStorage(PRIMARY_WALLET_ID, undefined, primaryWalletIdValidator);
21
21
  const setPrimaryWalletId = useCallback((walletId) => {
22
22
  setPrimaryWalletIdState(walletId);
23
23
  }, [setPrimaryWalletIdState]);
24
- const clearPrimaryWalletId = useCallback(() => {
25
- clearPrimaryWalletIdStorage();
26
- internalEvents.emit('clearPrimaryWallet');
27
- }, [clearPrimaryWalletIdStorage, internalEvents]);
28
24
  return {
29
25
  clearPrimaryWalletId,
30
26
  primaryWalletId,
@@ -192,10 +192,6 @@ const useSocialAuth = ({ sessionTimeout, authMode, onSettled, onError, }) => {
192
192
  const handleAuthWindowMessage = (event) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
193
193
  var _e, _f;
194
194
  const message = event.data;
195
- const isAuthorizationMessage = (message === null || message === void 0 ? void 0 : message.type) === 'authorization_response';
196
- if (isAuthorizationMessage) {
197
- logger.logger.debug('Message received', { data: message });
198
- }
199
195
  const apiProvider = getProviderByType.getProviderByType((_e = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) !== null && _e !== void 0 ? _e : [], provider);
200
196
  if (!(apiProvider === null || apiProvider === void 0 ? void 0 : apiProvider.redirectUrl)) {
201
197
  return;
@@ -213,6 +209,18 @@ const useSocialAuth = ({ sessionTimeout, authMode, onSettled, onError, }) => {
213
209
  return;
214
210
  }
215
211
  }
212
+ if ((message === null || message === void 0 ? void 0 : message.type) === 'origin_check' && authWindow) {
213
+ logger.logger.debug('Origin check message received. Sending response now.', {
214
+ data: message,
215
+ expectedOrigin,
216
+ });
217
+ authWindow.postMessage('origin_check_response', expectedOrigin);
218
+ return;
219
+ }
220
+ const isAuthorizationMessage = (message === null || message === void 0 ? void 0 : message.type) === 'authorization_response';
221
+ if (isAuthorizationMessage) {
222
+ logger.logger.debug('Message received', { data: message });
223
+ }
216
224
  const isExpectedOrigin = event.origin === expectedOrigin;
217
225
  const isValidMessage = isAuthorizationMessage &&
218
226
  (message === null || message === void 0 ? void 0 : message.provider) === provider &&
@@ -234,7 +242,9 @@ const useSocialAuth = ({ sessionTimeout, authMode, onSettled, onError, }) => {
234
242
  }
235
243
  // check that the state we receive from message is the same state we calculated earlier
236
244
  // this could be an attack
237
- if (state !== authState) {
245
+ // this state check is used only by providers with an open window opener reference (eg, not twitter)
246
+ if (!providersWithoutWindowOpenerRefence.includes(provider) &&
247
+ state !== authState) {
238
248
  handleError(types.SocialOAuthErrorCode.OAUTH_ERROR, `Failed to connect ${provider} social account: Invalid random state`);
239
249
  return;
240
250
  }
@@ -188,10 +188,6 @@ const useSocialAuth = ({ sessionTimeout, authMode, onSettled, onError, }) => {
188
188
  const handleAuthWindowMessage = (event) => __awaiter(void 0, void 0, void 0, function* () {
189
189
  var _e, _f;
190
190
  const message = event.data;
191
- const isAuthorizationMessage = (message === null || message === void 0 ? void 0 : message.type) === 'authorization_response';
192
- if (isAuthorizationMessage) {
193
- logger.debug('Message received', { data: message });
194
- }
195
191
  const apiProvider = getProviderByType((_e = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) !== null && _e !== void 0 ? _e : [], provider);
196
192
  if (!(apiProvider === null || apiProvider === void 0 ? void 0 : apiProvider.redirectUrl)) {
197
193
  return;
@@ -209,6 +205,18 @@ const useSocialAuth = ({ sessionTimeout, authMode, onSettled, onError, }) => {
209
205
  return;
210
206
  }
211
207
  }
208
+ if ((message === null || message === void 0 ? void 0 : message.type) === 'origin_check' && authWindow) {
209
+ logger.debug('Origin check message received. Sending response now.', {
210
+ data: message,
211
+ expectedOrigin,
212
+ });
213
+ authWindow.postMessage('origin_check_response', expectedOrigin);
214
+ return;
215
+ }
216
+ const isAuthorizationMessage = (message === null || message === void 0 ? void 0 : message.type) === 'authorization_response';
217
+ if (isAuthorizationMessage) {
218
+ logger.debug('Message received', { data: message });
219
+ }
212
220
  const isExpectedOrigin = event.origin === expectedOrigin;
213
221
  const isValidMessage = isAuthorizationMessage &&
214
222
  (message === null || message === void 0 ? void 0 : message.provider) === provider &&
@@ -230,7 +238,9 @@ const useSocialAuth = ({ sessionTimeout, authMode, onSettled, onError, }) => {
230
238
  }
231
239
  // check that the state we receive from message is the same state we calculated earlier
232
240
  // this could be an attack
233
- if (state !== authState) {
241
+ // this state check is used only by providers with an open window opener reference (eg, not twitter)
242
+ if (!providersWithoutWindowOpenerRefence.includes(provider) &&
243
+ state !== authState) {
234
244
  handleError(SocialOAuthErrorCode.OAUTH_ERROR, `Failed to connect ${provider} social account: Invalid random state`);
235
245
  return;
236
246
  }
@@ -21,7 +21,7 @@ var useWalletsConnectionState = require('../useWalletsConnectionState/useWallets
21
21
  var createLinkedWalletsFromWalletOptions = require('./utils/createLinkedWalletsFromWalletOptions/createLinkedWalletsFromWalletOptions.cjs');
22
22
  var reconnectSocialWallet = require('./reconnectSocialWallet.cjs');
23
23
 
24
- const useWalletConnectors = ({ authMode, authToken, connectedWallets, wallets: availableWallets, multiWalletWidgetState, setDesktopUri, setMultiWalletWidgetState, setQrcodeUri, primaryWalletId, setPrimaryWalletId, user, onboardingOnlyJwt, }) => {
24
+ const useWalletConnectors = ({ authMode, authToken, connectedWallets, wallets: availableWallets, multiWalletWidgetState, setDesktopUri, setMultiWalletWidgetState, setQrcodeUri, primaryWalletId, setPrimaryWalletId, user, onboardingOnlyJwt, canHaveMultipleWalletsConnected, }) => {
25
25
  const [showQrcodeModal, setShowQrcodeModal] = React.useState(false);
26
26
  const linkedWallets = React.useMemo(() => {
27
27
  if (!authToken) {
@@ -60,7 +60,9 @@ const useWalletConnectors = ({ authMode, authToken, connectedWallets, wallets: a
60
60
  computeConnectedStateForWallets();
61
61
  }, [primaryWalletId, computeConnectedStateForWallets]);
62
62
  const getPrimaryWallet = React.useCallback(() => { var _a; return (_a = wallets.find((wallet) => wallet.id === primaryWalletId)) !== null && _a !== void 0 ? _a : null; }, [primaryWalletId, wallets]);
63
- const getSecondaryWallets = React.useCallback(() => wallets.filter((wallet) => wallet.id !== primaryWalletId), [primaryWalletId, wallets]);
63
+ const getSecondaryWallets = React.useCallback(() => canHaveMultipleWalletsConnected
64
+ ? wallets.filter((wallet) => wallet.id !== primaryWalletId)
65
+ : [], [primaryWalletId, wallets, canHaveMultipleWalletsConnected]);
64
66
  const getSelectedWallet = React.useCallback((walletId) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
65
67
  const newWallet = wallets.find(({ id }) => id === walletId);
66
68
  if (!newWallet) {
@@ -15,6 +15,7 @@ type Props = {
15
15
  primaryWalletId: string | undefined;
16
16
  user?: UserProfile;
17
17
  onboardingOnlyJwt?: string;
18
+ canHaveMultipleWalletsConnected?: boolean;
18
19
  };
19
20
  export interface UseWalletConnectors {
20
21
  computeConnectedStateForWallets: () => Promise<void>;
@@ -29,5 +30,5 @@ export interface UseWalletConnectors {
29
30
  walletConnectors: WalletConnector[];
30
31
  wallets: Wallet[];
31
32
  }
32
- export declare const useWalletConnectors: ({ authMode, authToken, connectedWallets, wallets: availableWallets, multiWalletWidgetState, setDesktopUri, setMultiWalletWidgetState, setQrcodeUri, primaryWalletId, setPrimaryWalletId, user, onboardingOnlyJwt, }: Props) => UseWalletConnectors;
33
+ export declare const useWalletConnectors: ({ authMode, authToken, connectedWallets, wallets: availableWallets, multiWalletWidgetState, setDesktopUri, setMultiWalletWidgetState, setQrcodeUri, primaryWalletId, setPrimaryWalletId, user, onboardingOnlyJwt, canHaveMultipleWalletsConnected, }: Props) => UseWalletConnectors;
33
34
  export {};
@@ -17,7 +17,7 @@ import { useWalletsConnectionState } from '../useWalletsConnectionState/useWalle
17
17
  import { createLinkedWalletsFromWalletOptions } from './utils/createLinkedWalletsFromWalletOptions/createLinkedWalletsFromWalletOptions.js';
18
18
  import { reconnectSocialWallet } from './reconnectSocialWallet.js';
19
19
 
20
- const useWalletConnectors = ({ authMode, authToken, connectedWallets, wallets: availableWallets, multiWalletWidgetState, setDesktopUri, setMultiWalletWidgetState, setQrcodeUri, primaryWalletId, setPrimaryWalletId, user, onboardingOnlyJwt, }) => {
20
+ const useWalletConnectors = ({ authMode, authToken, connectedWallets, wallets: availableWallets, multiWalletWidgetState, setDesktopUri, setMultiWalletWidgetState, setQrcodeUri, primaryWalletId, setPrimaryWalletId, user, onboardingOnlyJwt, canHaveMultipleWalletsConnected, }) => {
21
21
  const [showQrcodeModal, setShowQrcodeModal] = useState(false);
22
22
  const linkedWallets = useMemo(() => {
23
23
  if (!authToken) {
@@ -56,7 +56,9 @@ const useWalletConnectors = ({ authMode, authToken, connectedWallets, wallets: a
56
56
  computeConnectedStateForWallets();
57
57
  }, [primaryWalletId, computeConnectedStateForWallets]);
58
58
  const getPrimaryWallet = useCallback(() => { var _a; return (_a = wallets.find((wallet) => wallet.id === primaryWalletId)) !== null && _a !== void 0 ? _a : null; }, [primaryWalletId, wallets]);
59
- const getSecondaryWallets = useCallback(() => wallets.filter((wallet) => wallet.id !== primaryWalletId), [primaryWalletId, wallets]);
59
+ const getSecondaryWallets = useCallback(() => canHaveMultipleWalletsConnected
60
+ ? wallets.filter((wallet) => wallet.id !== primaryWalletId)
61
+ : [], [primaryWalletId, wallets, canHaveMultipleWalletsConnected]);
60
62
  const getSelectedWallet = useCallback((walletId) => __awaiter(void 0, void 0, void 0, function* () {
61
63
  const newWallet = wallets.find(({ id }) => id === walletId);
62
64
  if (!newWallet) {
@@ -17,7 +17,6 @@ require('../../../shared/utils/classes/storage/localStorage.cjs');
17
17
  require('viem');
18
18
  require('../../../shared/consts/index.cjs');
19
19
  var useWalletConnectorEvent = require('../useWalletConnectorEvent/useWalletConnectorEvent.cjs');
20
- var sortAccountsByPrimaryWallet = require('./utils/sortAccountsByPrimaryWallet/sortAccountsByPrimaryWallet.cjs');
21
20
 
22
21
  const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut, multiWallet, multiWalletWidgetState, primaryWallet, secondaryWallets, selectedWalletConnector, selectedWalletWithAction, setSelectedWalletConnector, setSelectedWalletWithAction, setMultiWalletWidgetState, user, setPrimaryWalletId, authMode, refreshConnectedWallet, }) => {
23
22
  const [loadingNetwork, setLoadingNetwork] = React.useState(true);
@@ -25,7 +24,7 @@ const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut
25
24
  React.useEffect(() => {
26
25
  const fetchNetwork = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
27
26
  try {
28
- if (!primaryWallet)
27
+ if (!(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector))
29
28
  return;
30
29
  const network = yield primaryWallet.connector.getNetwork();
31
30
  setNetwork(network);
@@ -39,7 +38,7 @@ const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut
39
38
  }
40
39
  });
41
40
  fetchNetwork();
42
- }, [primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.id]);
41
+ }, [primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector]);
43
42
  useWalletConnectorEvent.useWalletConnectorEvent(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, 'disconnect', () => {
44
43
  logger.logger.debug('primary wallet disconnect');
45
44
  handleLogOut();
@@ -65,11 +64,7 @@ const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut
65
64
  // change the api here
66
65
  if (!primaryWallet)
67
66
  return;
68
- // Sorts the accounts so that the primary wallet is always first
69
- // when multiWallet is disabled to ensure we find the primary address
70
- const [newAddress] = multiWallet
71
- ? accounts
72
- : sortAccountsByPrimaryWallet.sortAccountsByPrimaryWallet(accounts, primaryWallet);
67
+ const [newAddress] = accounts;
73
68
  const newWallet = secondaryWallets.find((wallet) => walletConnectorCore.isSameAddress(wallet.address, newAddress, wallet.chain));
74
69
  if (authMode === 'connect-only') {
75
70
  refreshConnectedWallet(primaryWallet.id, primaryWallet.connector);
@@ -13,7 +13,6 @@ import '../../../shared/utils/classes/storage/localStorage.js';
13
13
  import 'viem';
14
14
  import '../../../shared/consts/index.js';
15
15
  import { useWalletConnectorEvent } from '../useWalletConnectorEvent/useWalletConnectorEvent.js';
16
- import { sortAccountsByPrimaryWallet } from './utils/sortAccountsByPrimaryWallet/sortAccountsByPrimaryWallet.js';
17
16
 
18
17
  const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut, multiWallet, multiWalletWidgetState, primaryWallet, secondaryWallets, selectedWalletConnector, selectedWalletWithAction, setSelectedWalletConnector, setSelectedWalletWithAction, setMultiWalletWidgetState, user, setPrimaryWalletId, authMode, refreshConnectedWallet, }) => {
19
18
  const [loadingNetwork, setLoadingNetwork] = useState(true);
@@ -21,7 +20,7 @@ const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut
21
20
  useEffect(() => {
22
21
  const fetchNetwork = () => __awaiter(void 0, void 0, void 0, function* () {
23
22
  try {
24
- if (!primaryWallet)
23
+ if (!(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector))
25
24
  return;
26
25
  const network = yield primaryWallet.connector.getNetwork();
27
26
  setNetwork(network);
@@ -35,7 +34,7 @@ const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut
35
34
  }
36
35
  });
37
36
  fetchNetwork();
38
- }, [primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.id]);
37
+ }, [primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector]);
39
38
  useWalletConnectorEvent(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, 'disconnect', () => {
40
39
  logger.debug('primary wallet disconnect');
41
40
  handleLogOut();
@@ -61,11 +60,7 @@ const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut
61
60
  // change the api here
62
61
  if (!primaryWallet)
63
62
  return;
64
- // Sorts the accounts so that the primary wallet is always first
65
- // when multiWallet is disabled to ensure we find the primary address
66
- const [newAddress] = multiWallet
67
- ? accounts
68
- : sortAccountsByPrimaryWallet(accounts, primaryWallet);
63
+ const [newAddress] = accounts;
69
64
  const newWallet = secondaryWallets.find((wallet) => isSameAddress(wallet.address, newAddress, wallet.chain));
70
65
  if (authMode === 'connect-only') {
71
66
  refreshConnectedWallet(primaryWallet.id, primaryWallet.connector);
@@ -0,0 +1,5 @@
1
+ import { CSSProperties } from 'react';
2
+ export type ClassStyleProps = {
3
+ className?: string;
4
+ style?: CSSProperties;
5
+ };
@@ -0,0 +1 @@
1
+ export * from './ClassStyleProps';
@@ -59,7 +59,7 @@ const LoginView = () => {
59
59
  default:
60
60
  return null;
61
61
  }
62
- }), [logingViewSections, isLoading, setView]);
62
+ }), [logingViewSections, isLoading, numOfWallets, setView]);
63
63
  if (showWalletList) {
64
64
  return jsxRuntime.jsx(WalletList.WalletList, {});
65
65
  }
@@ -55,7 +55,7 @@ const LoginView = () => {
55
55
  default:
56
56
  return null;
57
57
  }
58
- }), [logingViewSections, isLoading, setView]);
58
+ }), [logingViewSections, isLoading, numOfWallets, setView]);
59
59
  if (showWalletList) {
60
60
  return jsx(WalletList, {});
61
61
  }
@@ -53,6 +53,7 @@ require('../../../../utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUse
53
53
  require('../../../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
54
54
  require('formik');
55
55
  require('yup');
56
+ var Button = require('../../../../components/Button/Button.cjs');
56
57
  var IconButton = require('../../../../components/IconButton/IconButton.cjs');
57
58
  require('../../../../components/Alert/Alert.cjs');
58
59
  require('../../../../components/Popper/Popper/Popper.cjs');
@@ -63,7 +64,7 @@ var useEmailProvider = require('../../../../utils/hooks/useEmailProvider/useEmai
63
64
 
64
65
  const EMAIL_REGEX = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i;
65
66
  const LoginEmailForm = ({ isLoading: isExternalLoading, onSubmit, onSubmitError, currentEmail, }) => {
66
- var _a;
67
+ var _a, _b, _c;
67
68
  const { t } = reactI18next.useTranslation();
68
69
  const { environmentId, wallets, projectSettings } = useInternalDynamicContext.useInternalDynamicContext();
69
70
  const { setErrorMessage } = ErrorContext.useErrorContext();
@@ -122,7 +123,11 @@ const LoginEmailForm = ({ isLoading: isExternalLoading, onSubmit, onSubmitError,
122
123
  }
123
124
  });
124
125
  // social sign in currently coupled to email... might be better to decouple
125
- return (jsxRuntime.jsx("form", { className: 'login-with-email-form', onSubmit: (e) => handleSubmit(e), children: jsxRuntime.jsx(Input.Input, { id: 'email_field', value: emailInput, onChange: handleEmailOnChangeEvent, label: 'Enter your email', error: invalidEmail, message: invalidEmail && t('dyn_login.helper.email_form.invalid_email'), suffix: emailInputSuffixIcon, disabled: isLoading }) }));
126
+ return (jsxRuntime.jsxs("form", { className: 'login-with-email-form', onSubmit: (e) => handleSubmit(e), children: [jsxRuntime.jsx(Input.Input, { id: 'email_field', value: emailInput, onChange: handleEmailOnChangeEvent, label: 'Enter your email', error: invalidEmail, message: invalidEmail && t('dyn_login.helper.email_form.invalid_email'), suffix: ((_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design.modal) === null || _b === void 0 ? void 0 : _b.emailSubmitButtonInsideInput)
127
+ ? emailInputSuffixIcon
128
+ : null, disabled: isLoading }), !((_c = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design.modal) === null || _c === void 0 ? void 0 : _c.emailSubmitButtonInsideInput) && (jsxRuntime.jsx(Button.Button, { dataTestId: 'email_submit_button', buttonClassName: 'login-with-email-form__button', type: 'submit', loading: isLoading, disabled: isLoading, buttonVariant: 'brand-primary', buttonPadding: 'large', expanded: true, typographyProps: {
129
+ color: 'inherit',
130
+ }, children: "Continue" }))] }));
126
131
  };
127
132
 
128
133
  exports.EMAIL_REGEX = EMAIL_REGEX;
@@ -1,5 +1,5 @@
1
1
  import { __awaiter } from '../../../../../../_virtual/_tslib.js';
2
- import { jsx } from 'react/jsx-runtime';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
3
  import { useState, useMemo } from 'react';
4
4
  import { useTranslation } from 'react-i18next';
5
5
  import { isEmailWalletConnector } from '@dynamic-labs/wallet-connector-core';
@@ -49,6 +49,7 @@ import '../../../../utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser
49
49
  import '../../../../context/UserFieldEditorContext/UserFieldEditorContext.js';
50
50
  import 'formik';
51
51
  import 'yup';
52
+ import { Button } from '../../../../components/Button/Button.js';
52
53
  import { IconButton } from '../../../../components/IconButton/IconButton.js';
53
54
  import '../../../../components/Alert/Alert.js';
54
55
  import '../../../../components/Popper/Popper/Popper.js';
@@ -59,7 +60,7 @@ import { useEmailProvider } from '../../../../utils/hooks/useEmailProvider/useEm
59
60
 
60
61
  const EMAIL_REGEX = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i;
61
62
  const LoginEmailForm = ({ isLoading: isExternalLoading, onSubmit, onSubmitError, currentEmail, }) => {
62
- var _a;
63
+ var _a, _b, _c;
63
64
  const { t } = useTranslation();
64
65
  const { environmentId, wallets, projectSettings } = useInternalDynamicContext();
65
66
  const { setErrorMessage } = useErrorContext();
@@ -118,7 +119,11 @@ const LoginEmailForm = ({ isLoading: isExternalLoading, onSubmit, onSubmitError,
118
119
  }
119
120
  });
120
121
  // social sign in currently coupled to email... might be better to decouple
121
- return (jsx("form", { className: 'login-with-email-form', onSubmit: (e) => handleSubmit(e), children: jsx(Input, { id: 'email_field', value: emailInput, onChange: handleEmailOnChangeEvent, label: 'Enter your email', error: invalidEmail, message: invalidEmail && t('dyn_login.helper.email_form.invalid_email'), suffix: emailInputSuffixIcon, disabled: isLoading }) }));
122
+ return (jsxs("form", { className: 'login-with-email-form', onSubmit: (e) => handleSubmit(e), children: [jsx(Input, { id: 'email_field', value: emailInput, onChange: handleEmailOnChangeEvent, label: 'Enter your email', error: invalidEmail, message: invalidEmail && t('dyn_login.helper.email_form.invalid_email'), suffix: ((_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design.modal) === null || _b === void 0 ? void 0 : _b.emailSubmitButtonInsideInput)
123
+ ? emailInputSuffixIcon
124
+ : null, disabled: isLoading }), !((_c = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design.modal) === null || _c === void 0 ? void 0 : _c.emailSubmitButtonInsideInput) && (jsx(Button, { dataTestId: 'email_submit_button', buttonClassName: 'login-with-email-form__button', type: 'submit', loading: isLoading, disabled: isLoading, buttonVariant: 'brand-primary', buttonPadding: 'large', expanded: true, typographyProps: {
125
+ color: 'inherit',
126
+ }, children: "Continue" }))] }));
122
127
  };
123
128
 
124
129
  export { EMAIL_REGEX, LoginEmailForm };
@@ -16,7 +16,7 @@ require('../../../../../utils/constants/colors.cjs');
16
16
  require('../../../../../shared/utils/classes/storage/localStorage.cjs');
17
17
  require('viem');
18
18
  require('../../../../../shared/consts/index.cjs');
19
- var useInternalDynamicContext = require('../../../../../context/DynamicContext/useInternalDynamicContext.cjs');
19
+ require('../../../../../context/DynamicContext/DynamicContext.cjs');
20
20
  require('@dynamic-labs/multi-wallet');
21
21
  require('../../../../../components/ShadowDOM/ShadowDOM.cjs');
22
22
  require('../../../../../context/ThemeContext/ThemeContext.cjs');
@@ -61,15 +61,13 @@ var SocialSignIn = require('../../../../../components/SocialSignIn/SocialSignIn.
61
61
  var SocialRedirectContext = require('../../../../../context/SocialRedirectContext/SocialRedirectContext.cjs');
62
62
 
63
63
  const MagicSocialSignIn = ({ defaultProvider, numOfItemsToDisplay, collapsedLayout, }) => {
64
- const { socialProvidersFilter = (providers) => providers } = useInternalDynamicContext.useInternalDynamicContext();
65
64
  const { socialProvider, setSocialProvider, socialWalletConnector, enabledSocialProviders, } = SocialRedirectContext.useSocialRedirectContext();
66
- const socialProviders = socialProvidersFilter(enabledSocialProviders);
67
65
  const { mutate: onClickProvider, isLoading } = useMutation.useMutation((provider) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
68
66
  setSocialProvider(provider);
69
67
  yield (socialWalletConnector === null || socialWalletConnector === void 0 ? void 0 : socialWalletConnector.endSession());
70
68
  return socialWalletConnector === null || socialWalletConnector === void 0 ? void 0 : socialWalletConnector.connect(provider);
71
69
  }));
72
- return (jsxRuntime.jsx(SocialSignIn.SocialSignIn, { onSelectProvider: onClickProvider, providers: socialProviders, selectedProvider: socialProvider, isLoading: isLoading, testId: 'magic-social-sign-in', defaultProvider: defaultProvider, numOfItemsToDisplay: numOfItemsToDisplay, collapsedLayout: collapsedLayout }));
70
+ return (jsxRuntime.jsx(SocialSignIn.SocialSignIn, { onSelectProvider: onClickProvider, providers: enabledSocialProviders, selectedProvider: socialProvider, isLoading: isLoading, testId: 'magic-social-sign-in', defaultProvider: defaultProvider, numOfItemsToDisplay: numOfItemsToDisplay, collapsedLayout: collapsedLayout }));
73
71
  };
74
72
 
75
73
  exports.MagicSocialSignIn = MagicSocialSignIn;
@@ -12,7 +12,7 @@ import '../../../../../utils/constants/colors.js';
12
12
  import '../../../../../shared/utils/classes/storage/localStorage.js';
13
13
  import 'viem';
14
14
  import '../../../../../shared/consts/index.js';
15
- import { useInternalDynamicContext } from '../../../../../context/DynamicContext/useInternalDynamicContext.js';
15
+ import '../../../../../context/DynamicContext/DynamicContext.js';
16
16
  import '@dynamic-labs/multi-wallet';
17
17
  import '../../../../../components/ShadowDOM/ShadowDOM.js';
18
18
  import '../../../../../context/ThemeContext/ThemeContext.js';
@@ -57,15 +57,13 @@ import { SocialSignIn } from '../../../../../components/SocialSignIn/SocialSignI
57
57
  import { useSocialRedirectContext } from '../../../../../context/SocialRedirectContext/SocialRedirectContext.js';
58
58
 
59
59
  const MagicSocialSignIn = ({ defaultProvider, numOfItemsToDisplay, collapsedLayout, }) => {
60
- const { socialProvidersFilter = (providers) => providers } = useInternalDynamicContext();
61
60
  const { socialProvider, setSocialProvider, socialWalletConnector, enabledSocialProviders, } = useSocialRedirectContext();
62
- const socialProviders = socialProvidersFilter(enabledSocialProviders);
63
61
  const { mutate: onClickProvider, isLoading } = useMutation((provider) => __awaiter(void 0, void 0, void 0, function* () {
64
62
  setSocialProvider(provider);
65
63
  yield (socialWalletConnector === null || socialWalletConnector === void 0 ? void 0 : socialWalletConnector.endSession());
66
64
  return socialWalletConnector === null || socialWalletConnector === void 0 ? void 0 : socialWalletConnector.connect(provider);
67
65
  }));
68
- return (jsx(SocialSignIn, { onSelectProvider: onClickProvider, providers: socialProviders, selectedProvider: socialProvider, isLoading: isLoading, testId: 'magic-social-sign-in', defaultProvider: defaultProvider, numOfItemsToDisplay: numOfItemsToDisplay, collapsedLayout: collapsedLayout }));
66
+ return (jsx(SocialSignIn, { onSelectProvider: onClickProvider, providers: enabledSocialProviders, selectedProvider: socialProvider, isLoading: isLoading, testId: 'magic-social-sign-in', defaultProvider: defaultProvider, numOfItemsToDisplay: numOfItemsToDisplay, collapsedLayout: collapsedLayout }));
69
67
  };
70
68
 
71
69
  export { MagicSocialSignIn };