@dynamic-labs/sdk-react-core 0.18.12 → 0.18.14

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 (35) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +8 -8
  5. package/src/lib/context/DynamicContext/DynamicContext.cjs +13 -5
  6. package/src/lib/context/DynamicContext/DynamicContext.d.ts +1 -0
  7. package/src/lib/context/DynamicContext/DynamicContext.js +13 -5
  8. package/src/lib/context/DynamicContext/helpers.cjs +2 -2
  9. package/src/lib/context/DynamicContext/helpers.d.ts +2 -1
  10. package/src/lib/context/DynamicContext/helpers.js +2 -2
  11. package/src/lib/context/DynamicContext/hooks/useSetShowAuthFlowWithInit/useSetShowAuthFlowWithInit.cjs +5 -2
  12. package/src/lib/context/DynamicContext/hooks/useSetShowAuthFlowWithInit/useSetShowAuthFlowWithInit.d.ts +4 -2
  13. package/src/lib/context/DynamicContext/hooks/useSetShowAuthFlowWithInit/useSetShowAuthFlowWithInit.js +5 -2
  14. package/src/lib/context/DynamicContext/types/index.d.ts +3 -0
  15. package/src/lib/context/ViewContext/ViewContext.d.ts +1 -1
  16. package/src/lib/context/WalletContext/WalletContext.cjs +2 -16
  17. package/src/lib/context/WalletContext/WalletContext.js +2 -16
  18. package/src/lib/shared/types/index.d.ts +4 -0
  19. package/src/lib/utils/functions/getDynamicLayoutData/getDynamicLayoutData.cjs +6 -1
  20. package/src/lib/utils/functions/getDynamicLayoutData/getDynamicLayoutData.js +6 -1
  21. package/src/lib/utils/hooks/authenticationHooks/useSignConnectOnlyUser/useSignConnectOnlyUser.cjs +6 -2
  22. package/src/lib/utils/hooks/authenticationHooks/useSignConnectOnlyUser/useSignConnectOnlyUser.js +6 -2
  23. package/src/lib/utils/hooks/multiWallet/useSyncPrimaryWallet/useSyncPrimaryWallet.cjs +9 -4
  24. package/src/lib/utils/hooks/multiWallet/useSyncPrimaryWallet/useSyncPrimaryWallet.d.ts +1 -19
  25. package/src/lib/utils/hooks/multiWallet/useSyncPrimaryWallet/useSyncPrimaryWallet.js +9 -4
  26. package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.cjs +13 -3
  27. package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.js +13 -3
  28. package/src/lib/views/CollectUserDataView/OnboardingUserDataForm/OnboardingUserDataForm.cjs +3 -3
  29. package/src/lib/views/CollectUserDataView/OnboardingUserDataForm/OnboardingUserDataForm.js +3 -3
  30. package/src/lib/views/viewToComponentMap.cjs +1 -0
  31. package/src/lib/views/viewToComponentMap.js +1 -0
  32. package/src/lib/widgets/DynamicBridgeWidget/views/EditProfileView/EditProfileView.cjs +3 -3
  33. package/src/lib/widgets/DynamicBridgeWidget/views/EditProfileView/EditProfileView.js +3 -3
  34. package/src/lib/widgets/DynamicWidget/views/EditProfileView/EditProfileView.cjs +3 -3
  35. package/src/lib/widgets/DynamicWidget/views/EditProfileView/EditProfileView.js +3 -3
package/CHANGELOG.md CHANGED
@@ -1,4 +1,31 @@
1
1
 
2
+ ### [0.18.14](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.13...v0.18.14) (2023-09-05)
3
+
4
+
5
+ ### Features
6
+
7
+ * add onSignedMessage callback ([#3213](https://github.com/dynamic-labs/DynamicAuth/issues/3213)) ([648defa](https://github.com/dynamic-labs/DynamicAuth/commit/648defa1c5f84805e5dcdbb98a30be2a47f53ed7))
8
+
9
+
10
+ ### Bug Fixes
11
+
12
+ * prefer mainnet chain id when connecting with WCv2 ([#3219](https://github.com/dynamic-labs/DynamicAuth/issues/3219)) ([6ee8fb6](https://github.com/dynamic-labs/DynamicAuth/commit/6ee8fb6c0565e759837f45179de12c985ac0dd71))
13
+
14
+ ### [0.18.13](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.12...v0.18.13) (2023-08-31)
15
+
16
+
17
+ ### Features
18
+
19
+ * add option to disable the locked wallet view ([#3188](https://github.com/dynamic-labs/DynamicAuth/issues/3188)) ([47ae562](https://github.com/dynamic-labs/DynamicAuth/commit/47ae562e58b38ec704490cdab56a73115cdee184))
20
+ * migrate starknet version to v5 ([#3199](https://github.com/dynamic-labs/DynamicAuth/issues/3199)) ([185beb0](https://github.com/dynamic-labs/DynamicAuth/commit/185beb099d9dcce0935b2d11b49460fc3a5f2608))
21
+
22
+
23
+ ### Bug Fixes
24
+
25
+ * show the multi wallet list when opening the auth flow to authenticated users ([#3163](https://github.com/dynamic-labs/DynamicAuth/issues/3163)) ([25d30cd](https://github.com/dynamic-labs/DynamicAuth/commit/25d30cdebc46a84725d289aab0bb30c3d54a15ab)), closes [#3134](https://github.com/dynamic-labs/DynamicAuth/issues/3134) [#3152](https://github.com/dynamic-labs/DynamicAuth/issues/3152) [#3168](https://github.com/dynamic-labs/DynamicAuth/issues/3168)
26
+ * sign message for embedded wallet when auth mode is connect only ([#3194](https://github.com/dynamic-labs/DynamicAuth/issues/3194)) ([6879aeb](https://github.com/dynamic-labs/DynamicAuth/commit/6879aebb3b22d7476fb06f8d33a0029199bf910f))
27
+ * verify email OTP when email is updated ([#3168](https://github.com/dynamic-labs/DynamicAuth/issues/3168)) ([641eeb6](https://github.com/dynamic-labs/DynamicAuth/commit/641eeb685b0c9d77cc72912f29b137c699c192f0))
28
+
2
29
  ### [0.18.12](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.11...v0.18.12) (2023-08-30)
3
30
 
4
31
 
package/package.cjs CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var version = "0.18.12";
5
+ var version = "0.18.14";
6
6
  var dependencies = {
7
7
  "react-focus-lock": "2.9.2",
8
8
  "@dynamic-labs/iconic": "0.1.27",
package/package.js CHANGED
@@ -1,4 +1,4 @@
1
- var version = "0.18.12";
1
+ var version = "0.18.14";
2
2
  var dependencies = {
3
3
  "react-focus-lock": "2.9.2",
4
4
  "@dynamic-labs/iconic": "0.1.27",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/sdk-react-core",
3
- "version": "0.18.12",
3
+ "version": "0.18.14",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/dynamic-labs/DynamicAuth.git",
@@ -16,13 +16,13 @@
16
16
  "formik": "2.2.9",
17
17
  "qrcode": "1.5.1",
18
18
  "ethers": "5.7.2",
19
- "@dynamic-labs/logger": "0.18.12",
20
- "@dynamic-labs/multi-wallet": "0.18.12",
21
- "@dynamic-labs/rpc-providers": "0.18.12",
22
- "@dynamic-labs/types": "0.18.12",
23
- "@dynamic-labs/utils": "0.18.12",
24
- "@dynamic-labs/wallet-book": "0.18.12",
25
- "@dynamic-labs/wallet-connector-core": "0.18.12",
19
+ "@dynamic-labs/logger": "0.18.14",
20
+ "@dynamic-labs/multi-wallet": "0.18.14",
21
+ "@dynamic-labs/rpc-providers": "0.18.14",
22
+ "@dynamic-labs/types": "0.18.14",
23
+ "@dynamic-labs/utils": "0.18.14",
24
+ "@dynamic-labs/wallet-book": "0.18.14",
25
+ "@dynamic-labs/wallet-connector-core": "0.18.14",
26
26
  "eventemitter3": "5.0.1"
27
27
  },
28
28
  "devDependencies": {
@@ -101,7 +101,7 @@ const EMPTY_INITIAL_USER = undefined;
101
101
  const DynamicContext = React.createContext(undefined);
102
102
  const DynamicContextProvider = ({ children, theme, settings, }) => {
103
103
  var _a, _b, _c, _d, _e, _f, _g, _h;
104
- const { accessDeniedMessagePrimary, accessDeniedMessageSecondary, accessDeniedButton, apiBaseUrl, deepLinkPreference = 'native', walletsByChain, cssOverrides, defaultNumberOfWalletsToShow = values.DEFAULT_NUMBER_OF_WALLETS_TO_SHOW, flowNetwork, initialAuthenticationMode = 'connect-and-sign', debugError = false, displaySiweStatement = true, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly = true, environmentId, localStorageSuffix, eventsCallbacks, evmNetworks, walletsFilter, logLevel = 'WARN', notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, customPrivacyPolicy, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, customTermsOfServices, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled = true, walletConnectors: walletConnectorsProp, socialProvidersFilter, } = settings;
104
+ const { accessDeniedMessagePrimary, accessDeniedMessageSecondary, accessDeniedButton, apiBaseUrl, deepLinkPreference = 'native', walletsByChain, cssOverrides, defaultNumberOfWalletsToShow = values.DEFAULT_NUMBER_OF_WALLETS_TO_SHOW, flowNetwork, initialAuthenticationMode = 'connect-and-sign', debugError = false, displaySiweStatement = true, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly = true, environmentId, localStorageSuffix, eventsCallbacks, evmNetworks, walletsFilter, logLevel = 'WARN', notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, customPrivacyPolicy, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, customTermsOfServices, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled = true, walletConnectors: walletConnectorsProp, socialProvidersFilter, showLockedWalletView = true, } = settings;
105
105
  // The following event related methods are temporary and should be removed after QNTM-180 is done
106
106
  // ============ START REMOVE AFTER QNTM-180 ============
107
107
  const internalEventsRef = React.useRef(internalEvents.getInternalEvents());
@@ -235,7 +235,9 @@ const DynamicContextProvider = ({ children, theme, settings, }) => {
235
235
  walletBook: walletBook$1,
236
236
  });
237
237
  const setShowAuthFlowWithInit = useSetShowAuthFlowWithInit.useSetShowAuthFlowWithInit({
238
+ isMultiWalletEnabled: multiWallet,
238
239
  setShowAuthFlow,
240
+ user,
239
241
  wallets,
240
242
  });
241
243
  // until user completes onboarding, jwt is only stored in onboardingOnlyJwt
@@ -452,6 +454,7 @@ const DynamicContextProvider = ({ children, theme, settings, }) => {
452
454
  ? unlinkConnectedWallet
453
455
  : handleUnlinkWallet,
454
456
  internalEvents: internalEventsRef,
457
+ internalSetShowAuthFlow: setShowAuthFlow,
455
458
  isAuthenticated,
456
459
  isBridgeFlow,
457
460
  isFullyConnected,
@@ -514,6 +517,7 @@ const DynamicContextProvider = ({ children, theme, settings, }) => {
514
517
  showAuthFlow,
515
518
  showBridgeWidget,
516
519
  showDynamicUserProfile,
520
+ showLockedWalletView,
517
521
  showQrcodeModal,
518
522
  showWidgetStatePopup,
519
523
  signWithEmailWalletName,
@@ -568,13 +572,12 @@ const DynamicContextProvider = ({ children, theme, settings, }) => {
568
572
  handleUnlinkWallet,
569
573
  isAuthenticated,
570
574
  isBridgeFlow,
575
+ isFullyConnected,
571
576
  isProjectSettingsLoading,
572
577
  isSingleWalletAccount,
573
- isFullyConnected,
574
578
  isVerificationInProgress,
575
- primaryWallet,
576
- secondaryWallets,
577
579
  legacyIsVerifying,
580
+ linkedWallets,
578
581
  loadingNetwork,
579
582
  loginWithEmail,
580
583
  multiWallet,
@@ -587,6 +590,7 @@ const DynamicContextProvider = ({ children, theme, settings, }) => {
587
590
  imageUserInAccessList,
588
591
  onboardingImageUrl,
589
592
  policiesConsentInnerComponent,
593
+ primaryWallet,
590
594
  primaryWalletId,
591
595
  privacyPolicyUrl,
592
596
  projectSettings,
@@ -594,12 +598,15 @@ const DynamicContextProvider = ({ children, theme, settings, }) => {
594
598
  removeConnectedWalletsInfo,
595
599
  rpcProviders,
596
600
  sdkHasLoaded,
601
+ secondaryWallets,
597
602
  selectedWalletConnector,
598
603
  selectedWalletWithAction,
604
+ sendWagmiSettings,
599
605
  setAuthMode,
600
606
  setAuthorizationViewDisplayOrder,
601
607
  setCallback,
602
608
  setIsFullyConnected,
609
+ setIsVerificationInProgress,
603
610
  setLogInWithEmail,
604
611
  setMultiWallet,
605
612
  setMultiWalletWidgetState,
@@ -614,6 +621,7 @@ const DynamicContextProvider = ({ children, theme, settings, }) => {
614
621
  showAuthFlow,
615
622
  showBridgeWidget,
616
623
  showDynamicUserProfile,
624
+ showLockedWalletView,
617
625
  showQrcodeModal,
618
626
  showWidgetStatePopup,
619
627
  signWithEmailWalletName,
@@ -631,7 +639,6 @@ const DynamicContextProvider = ({ children, theme, settings, }) => {
631
639
  walletsByChain,
632
640
  walletsFilter,
633
641
  walletsToConnectByChain,
634
- linkedWallets,
635
642
  ]);
636
643
  React.useEffect(() => {
637
644
  const addPrefetch = (attr) => {
@@ -679,6 +686,7 @@ const DynamicContextProvider = ({ children, theme, settings, }) => {
679
686
  connectedWallets,
680
687
  isBridgeFlow,
681
688
  isFullyConnected,
689
+ isMultiWalletEnabled: multiWallet,
682
690
  loginWithEmail,
683
691
  }) }, { children: jsxRuntime.jsx(AccountExistsContext.AccountExistsContextProvider, { children: jsxRuntime.jsx(WalletContext.WalletContextProvider, Object.assign({ canSync: didConnectedStateLoad }, { children: jsxRuntime.jsx(QrCodeContext.QrCodeContextProvider, { children: jsxRuntime.jsx(EmailVerificationContext.EmailVerificationContextProvider, { children: jsxRuntime.jsx(ErrorContext.ErrorContextProvider, { children: jsxRuntime.jsx(DynamicWidgetContext.DynamicWidgetContextProvider, { children: jsxRuntime.jsx(DynamicBridgeWidgetContext.DynamicBridgeWidgetContextProvider, { children: jsxRuntime.jsx(CaptchaContext.CaptchaContextProvider, { children: jsxRuntime.jsx(FundingContext.FundingContextProvider, { children: jsxRuntime.jsx(AccessDeniedContext.AccessDeniedContextProvider, { children: jsxRuntime.jsx(SendBalanceContext.SendBalanceContextProvider, { children: jsxRuntime.jsxs(WalletGroupContext.WalletGroupContextProvider, { children: [jsxRuntime.jsx(app.DynamicAuthFlow, {}), jsxRuntime.jsx(Toolkit.Toolkit, {}), jsxRuntime.jsx(FundingWidget.FundingWidget, {}), jsxRuntime.jsx(OAuthIFrameContainer.OAuthIFrameContainer, {}), confirmationModal, children] }) }) }) }) }) }) }) }) }) }) })) }) })) }) })) })) })));
684
692
  };
@@ -45,6 +45,7 @@ export interface DynamicContextProps {
45
45
  * @default WARN
46
46
  */
47
47
  logLevel?: keyof typeof LogLevel;
48
+ showLockedWalletView?: boolean;
48
49
  newToWeb3WalletChainMap?: ChainToWalletMap;
49
50
  notInTheListImageUrl?: string;
50
51
  onboardingImageUrl?: string;
@@ -97,7 +97,7 @@ const EMPTY_INITIAL_USER = undefined;
97
97
  const DynamicContext = createContext(undefined);
98
98
  const DynamicContextProvider = ({ children, theme, settings, }) => {
99
99
  var _a, _b, _c, _d, _e, _f, _g, _h;
100
- const { accessDeniedMessagePrimary, accessDeniedMessageSecondary, accessDeniedButton, apiBaseUrl, deepLinkPreference = 'native', walletsByChain, cssOverrides, defaultNumberOfWalletsToShow = DEFAULT_NUMBER_OF_WALLETS_TO_SHOW, flowNetwork, initialAuthenticationMode = 'connect-and-sign', debugError = false, displaySiweStatement = true, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly = true, environmentId, localStorageSuffix, eventsCallbacks, evmNetworks, walletsFilter, logLevel = 'WARN', notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, customPrivacyPolicy, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, customTermsOfServices, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled = true, walletConnectors: walletConnectorsProp, socialProvidersFilter, } = settings;
100
+ const { accessDeniedMessagePrimary, accessDeniedMessageSecondary, accessDeniedButton, apiBaseUrl, deepLinkPreference = 'native', walletsByChain, cssOverrides, defaultNumberOfWalletsToShow = DEFAULT_NUMBER_OF_WALLETS_TO_SHOW, flowNetwork, initialAuthenticationMode = 'connect-and-sign', debugError = false, displaySiweStatement = true, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly = true, environmentId, localStorageSuffix, eventsCallbacks, evmNetworks, walletsFilter, logLevel = 'WARN', notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, customPrivacyPolicy, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, customTermsOfServices, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled = true, walletConnectors: walletConnectorsProp, socialProvidersFilter, showLockedWalletView = true, } = settings;
101
101
  // The following event related methods are temporary and should be removed after QNTM-180 is done
102
102
  // ============ START REMOVE AFTER QNTM-180 ============
103
103
  const internalEventsRef = useRef(getInternalEvents());
@@ -231,7 +231,9 @@ const DynamicContextProvider = ({ children, theme, settings, }) => {
231
231
  walletBook,
232
232
  });
233
233
  const setShowAuthFlowWithInit = useSetShowAuthFlowWithInit({
234
+ isMultiWalletEnabled: multiWallet,
234
235
  setShowAuthFlow,
236
+ user,
235
237
  wallets,
236
238
  });
237
239
  // until user completes onboarding, jwt is only stored in onboardingOnlyJwt
@@ -448,6 +450,7 @@ const DynamicContextProvider = ({ children, theme, settings, }) => {
448
450
  ? unlinkConnectedWallet
449
451
  : handleUnlinkWallet,
450
452
  internalEvents: internalEventsRef,
453
+ internalSetShowAuthFlow: setShowAuthFlow,
451
454
  isAuthenticated,
452
455
  isBridgeFlow,
453
456
  isFullyConnected,
@@ -510,6 +513,7 @@ const DynamicContextProvider = ({ children, theme, settings, }) => {
510
513
  showAuthFlow,
511
514
  showBridgeWidget,
512
515
  showDynamicUserProfile,
516
+ showLockedWalletView,
513
517
  showQrcodeModal,
514
518
  showWidgetStatePopup,
515
519
  signWithEmailWalletName,
@@ -564,13 +568,12 @@ const DynamicContextProvider = ({ children, theme, settings, }) => {
564
568
  handleUnlinkWallet,
565
569
  isAuthenticated,
566
570
  isBridgeFlow,
571
+ isFullyConnected,
567
572
  isProjectSettingsLoading,
568
573
  isSingleWalletAccount,
569
- isFullyConnected,
570
574
  isVerificationInProgress,
571
- primaryWallet,
572
- secondaryWallets,
573
575
  legacyIsVerifying,
576
+ linkedWallets,
574
577
  loadingNetwork,
575
578
  loginWithEmail,
576
579
  multiWallet,
@@ -583,6 +586,7 @@ const DynamicContextProvider = ({ children, theme, settings, }) => {
583
586
  imageUserInAccessList,
584
587
  onboardingImageUrl,
585
588
  policiesConsentInnerComponent,
589
+ primaryWallet,
586
590
  primaryWalletId,
587
591
  privacyPolicyUrl,
588
592
  projectSettings,
@@ -590,12 +594,15 @@ const DynamicContextProvider = ({ children, theme, settings, }) => {
590
594
  removeConnectedWalletsInfo,
591
595
  rpcProviders,
592
596
  sdkHasLoaded,
597
+ secondaryWallets,
593
598
  selectedWalletConnector,
594
599
  selectedWalletWithAction,
600
+ sendWagmiSettings,
595
601
  setAuthMode,
596
602
  setAuthorizationViewDisplayOrder,
597
603
  setCallback,
598
604
  setIsFullyConnected,
605
+ setIsVerificationInProgress,
599
606
  setLogInWithEmail,
600
607
  setMultiWallet,
601
608
  setMultiWalletWidgetState,
@@ -610,6 +617,7 @@ const DynamicContextProvider = ({ children, theme, settings, }) => {
610
617
  showAuthFlow,
611
618
  showBridgeWidget,
612
619
  showDynamicUserProfile,
620
+ showLockedWalletView,
613
621
  showQrcodeModal,
614
622
  showWidgetStatePopup,
615
623
  signWithEmailWalletName,
@@ -627,7 +635,6 @@ const DynamicContextProvider = ({ children, theme, settings, }) => {
627
635
  walletsByChain,
628
636
  walletsFilter,
629
637
  walletsToConnectByChain,
630
- linkedWallets,
631
638
  ]);
632
639
  useEffect(() => {
633
640
  const addPrefetch = (attr) => {
@@ -675,6 +682,7 @@ const DynamicContextProvider = ({ children, theme, settings, }) => {
675
682
  connectedWallets,
676
683
  isBridgeFlow,
677
684
  isFullyConnected,
685
+ isMultiWalletEnabled: multiWallet,
678
686
  loginWithEmail,
679
687
  }) }, { children: jsx(AccountExistsContextProvider, { children: jsx(WalletContextProvider, Object.assign({ canSync: didConnectedStateLoad }, { children: jsx(QrCodeContextProvider, { children: jsx(EmailVerificationContextProvider, { children: jsx(ErrorContextProvider, { children: jsx(DynamicWidgetContextProvider, { children: jsx(DynamicBridgeWidgetContextProvider, { children: jsx(CaptchaContextProvider, { children: jsx(FundingContextProvider, { children: jsx(AccessDeniedContextProvider, { children: jsx(SendBalanceContextProvider, { children: jsxs(WalletGroupContextProvider, { children: [jsx(DynamicAuthFlow, {}), jsx(Toolkit, {}), jsx(FundingWidget, {}), jsx(OAuthIFrameContainer, {}), confirmationModal, children] }) }) }) }) }) }) }) }) }) }) })) }) })) }) })) })) })));
680
688
  };
@@ -54,12 +54,12 @@ const initExpirationTime = (logout) => {
54
54
  const expiryTimeout = Math.min(expirationTimeInMs, 2147483647);
55
55
  logoutTimer = setTimeout(logout, expiryTimeout);
56
56
  };
57
- const getInitialView = ({ connectedWallets, loginWithEmail, isBridgeFlow, isFullyConnected, }) => {
57
+ const getInitialView = ({ connectedWallets, loginWithEmail, isBridgeFlow, isFullyConnected, isMultiWalletEnabled, }) => {
58
58
  if (loginWithEmail) {
59
59
  return 'login-with-email-or-wallet';
60
60
  }
61
61
  if (isFullyConnected) {
62
- return 'wallet-list';
62
+ return isMultiWalletEnabled ? 'multi-wallet-wallet-list' : 'wallet-list';
63
63
  }
64
64
  if (isBridgeFlow && !connectedWallets.length) {
65
65
  return 'bridge-welcome';
@@ -2,9 +2,10 @@ import { Wallet } from '../../shared';
2
2
  import { ViewType } from '../ViewContext';
3
3
  export declare const isAuthTokenExpired: (token: string) => boolean;
4
4
  export declare const initExpirationTime: (logout: VoidFunction) => void;
5
- export declare const getInitialView: ({ connectedWallets, loginWithEmail, isBridgeFlow, isFullyConnected, }: {
5
+ export declare const getInitialView: ({ connectedWallets, loginWithEmail, isBridgeFlow, isFullyConnected, isMultiWalletEnabled, }: {
6
6
  connectedWallets: Wallet[];
7
7
  loginWithEmail: boolean;
8
8
  isBridgeFlow: boolean;
9
9
  isFullyConnected: boolean;
10
+ isMultiWalletEnabled: boolean;
10
11
  }) => ViewType;
@@ -50,12 +50,12 @@ const initExpirationTime = (logout) => {
50
50
  const expiryTimeout = Math.min(expirationTimeInMs, 2147483647);
51
51
  logoutTimer = setTimeout(logout, expiryTimeout);
52
52
  };
53
- const getInitialView = ({ connectedWallets, loginWithEmail, isBridgeFlow, isFullyConnected, }) => {
53
+ const getInitialView = ({ connectedWallets, loginWithEmail, isBridgeFlow, isFullyConnected, isMultiWalletEnabled, }) => {
54
54
  if (loginWithEmail) {
55
55
  return 'login-with-email-or-wallet';
56
56
  }
57
57
  if (isFullyConnected) {
58
- return 'wallet-list';
58
+ return isMultiWalletEnabled ? 'multi-wallet-wallet-list' : 'wallet-list';
59
59
  }
60
60
  if (isBridgeFlow && !connectedWallets.length) {
61
61
  return 'bridge-welcome';
@@ -12,15 +12,18 @@ var React = require('react');
12
12
  * "Connect" button in the WalletConnect modal, there is a uri ready to go
13
13
  * to immediately trigger the deep link on mobile
14
14
  */
15
- const useSetShowAuthFlowWithInit = ({ setShowAuthFlow, wallets, }) => {
15
+ const useSetShowAuthFlowWithInit = ({ setShowAuthFlow, wallets, user, isMultiWalletEnabled, }) => {
16
16
  const setShowAuthFlowWithInit = React.useCallback((value) => {
17
17
  var _a;
18
18
  if (value) {
19
+ // if the uer is already signed in but multiwallet is not enabled, do not change state
20
+ if (user && !isMultiWalletEnabled)
21
+ return;
19
22
  (_a = wallets
20
23
  .find((wallet) => wallet.walletConnector.key === 'walletconnect')) === null || _a === void 0 ? void 0 : _a.walletConnector.init();
21
24
  }
22
25
  setShowAuthFlow(value);
23
- }, [setShowAuthFlow, wallets]);
26
+ }, [setShowAuthFlow, wallets, user, isMultiWalletEnabled]);
24
27
  return setShowAuthFlowWithInit;
25
28
  };
26
29
 
@@ -1,5 +1,5 @@
1
1
  import { Dispatch, SetStateAction } from 'react';
2
- import { WalletOption } from '../../../../shared';
2
+ import { UserProfile, WalletOption } from '../../../../shared';
3
3
  /**
4
4
  * this hook wraps `setShowAuthFlow`. WalletConnect requires initialization
5
5
  * before we can connect a wallet. The goal here is that when a user clicks
@@ -8,7 +8,9 @@ import { WalletOption } from '../../../../shared';
8
8
  * "Connect" button in the WalletConnect modal, there is a uri ready to go
9
9
  * to immediately trigger the deep link on mobile
10
10
  */
11
- export declare const useSetShowAuthFlowWithInit: ({ setShowAuthFlow, wallets, }: {
11
+ export declare const useSetShowAuthFlowWithInit: ({ setShowAuthFlow, wallets, user, isMultiWalletEnabled, }: {
12
12
  setShowAuthFlow: Dispatch<SetStateAction<boolean>>;
13
13
  wallets: WalletOption[];
14
+ user?: UserProfile | undefined;
15
+ isMultiWalletEnabled?: boolean | undefined;
14
16
  }) => Dispatch<SetStateAction<boolean>>;
@@ -8,15 +8,18 @@ import { useCallback } from 'react';
8
8
  * "Connect" button in the WalletConnect modal, there is a uri ready to go
9
9
  * to immediately trigger the deep link on mobile
10
10
  */
11
- const useSetShowAuthFlowWithInit = ({ setShowAuthFlow, wallets, }) => {
11
+ const useSetShowAuthFlowWithInit = ({ setShowAuthFlow, wallets, user, isMultiWalletEnabled, }) => {
12
12
  const setShowAuthFlowWithInit = useCallback((value) => {
13
13
  var _a;
14
14
  if (value) {
15
+ // if the uer is already signed in but multiwallet is not enabled, do not change state
16
+ if (user && !isMultiWalletEnabled)
17
+ return;
15
18
  (_a = wallets
16
19
  .find((wallet) => wallet.walletConnector.key === 'walletconnect')) === null || _a === void 0 ? void 0 : _a.walletConnector.init();
17
20
  }
18
21
  setShowAuthFlow(value);
19
- }, [setShowAuthFlow, wallets]);
22
+ }, [setShowAuthFlow, wallets, user, isMultiWalletEnabled]);
20
23
  return setShowAuthFlowWithInit;
21
24
  };
22
25
 
@@ -98,6 +98,8 @@ export interface IDynamicContext {
98
98
  setSelectedWalletConnector: (connector: WalletConnector | null) => void;
99
99
  setSelectedWalletWithAction: (walletWithAction: WalletWithAction | null) => void;
100
100
  setShowAuthFlow: Dispatch<SetStateAction<boolean>>;
101
+ /** The unwrapped version of setShowAuthFlow. See useSetShowAuthFlowWithInit.ts for context */
102
+ internalSetShowAuthFlow: Dispatch<SetStateAction<boolean>>;
101
103
  setShowDynamicUserProfile: Dispatch<SetStateAction<boolean>>;
102
104
  setShowQrcodeModal: Dispatch<SetStateAction<boolean>>;
103
105
  setShowWidgetStatePopup: Dispatch<SetStateAction<boolean>>;
@@ -113,6 +115,7 @@ export interface IDynamicContext {
113
115
  * The boolean value representing the state of displaying the bridge widget
114
116
  */
115
117
  showBridgeWidget: boolean;
118
+ showLockedWalletView?: boolean;
116
119
  showQrcodeModal: boolean;
117
120
  showWidgetStatePopup: boolean;
118
121
  signWithEmailWalletName?: string;
@@ -1,5 +1,5 @@
1
1
  import { SetStateAction, Dispatch, PropsWithChildren, FC } from 'react';
2
- export type ViewType = 'captcha' | 'chainalysis-blocked-wallet' | 'collect-user-data' | 'collect-user-data-login-with-email' | 'login-with-email-or-wallet-full-wallet-list' | 'login-with-email-or-wallet' | 'login-with-email-verification' | 'network-not-supported' | 'network-not-supported-manual' | 'no-access' | 'no-qr-not-installed' | 'pending-connect' | 'pending-signature-without-back-button' | 'pending-signature' | 'qr-code' | 'update-email' | 'verify-email' | 'wallet-connect-mobile-wallets-list' | 'wallet-list' | 'wallet-sign' | 'wallet-used' | 'wallet-group' | 'wait-for-email-confirmation-view' | 'email-wallet-otp-verification-view' | 'social-redirect-view' | 'wallet-locked-view' | 'social-wrong-account' | 'gate-blocked-wallet' | 'bridge-welcome' | 'bridge-summary' | 'bridge-next-wallet-connection' | 'account-exists' | 'merge-user-accounts';
2
+ export type ViewType = 'captcha' | 'chainalysis-blocked-wallet' | 'collect-user-data' | 'collect-user-data-login-with-email' | 'login-with-email-or-wallet-full-wallet-list' | 'login-with-email-or-wallet' | 'login-with-email-verification' | 'network-not-supported' | 'network-not-supported-manual' | 'no-access' | 'no-qr-not-installed' | 'pending-connect' | 'pending-signature-without-back-button' | 'pending-signature' | 'qr-code' | 'update-email' | 'verify-email' | 'wallet-connect-mobile-wallets-list' | 'wallet-list' | 'multi-wallet-wallet-list' | 'wallet-sign' | 'wallet-used' | 'wallet-group' | 'wait-for-email-confirmation-view' | 'email-wallet-otp-verification-view' | 'social-redirect-view' | 'wallet-locked-view' | 'social-wrong-account' | 'gate-blocked-wallet' | 'bridge-welcome' | 'bridge-summary' | 'bridge-next-wallet-connection' | 'account-exists' | 'merge-user-accounts';
3
3
  export type ViewContextProps = {
4
4
  setView: Dispatch<SetStateAction<ViewType>>;
5
5
  view: ViewType;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
  var React = require('react');
7
- var useInternalDynamicContext = require('../DynamicContext/useInternalDynamicContext.cjs');
7
+ require('../DynamicContext/DynamicContext.cjs');
8
8
  require('@dynamic-labs/sdk-api');
9
9
  require('../../shared/logger.cjs');
10
10
  require('@dynamic-labs/iconic');
@@ -26,21 +26,7 @@ var useSyncPrimaryWallet = require('../../utils/hooks/multiWallet/useSyncPrimary
26
26
 
27
27
  const WalletContext = React.createContext(undefined);
28
28
  const WalletContextProvider = ({ children, canSync, }) => {
29
- const { computeConnectedStateForWallets, handleLogOut, multiWalletWidgetState, primaryWallet, secondaryWallets, setMultiWalletWidgetState, setPrimaryWallet, setShowWidgetStatePopup, showWidgetStatePopup, authMode, connectWallet, } = useInternalDynamicContext.useInternalDynamicContext();
30
- useSyncPrimaryWallet.useSyncPrimaryWallet({
31
- authMode,
32
- canSync,
33
- computeConnectedStateForWallets,
34
- connectWallet,
35
- handleLogOut,
36
- multiWalletWidgetState,
37
- primaryWallet,
38
- secondaryWallets,
39
- setMultiWalletWidgetState,
40
- setPrimaryWallet,
41
- setShowWidgetStatePopup,
42
- showWidgetStatePopup,
43
- });
29
+ useSyncPrimaryWallet.useSyncPrimaryWallet(canSync);
44
30
  const value = undefined;
45
31
  return (jsxRuntime.jsx(WalletContext.Provider, Object.assign({ value: value }, { children: children })));
46
32
  };
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { createContext } from 'react';
3
- import { useInternalDynamicContext } from '../DynamicContext/useInternalDynamicContext.js';
3
+ import '../DynamicContext/DynamicContext.js';
4
4
  import '@dynamic-labs/sdk-api';
5
5
  import '../../shared/logger.js';
6
6
  import '@dynamic-labs/iconic';
@@ -22,21 +22,7 @@ import { useSyncPrimaryWallet } from '../../utils/hooks/multiWallet/useSyncPrima
22
22
 
23
23
  const WalletContext = createContext(undefined);
24
24
  const WalletContextProvider = ({ children, canSync, }) => {
25
- const { computeConnectedStateForWallets, handleLogOut, multiWalletWidgetState, primaryWallet, secondaryWallets, setMultiWalletWidgetState, setPrimaryWallet, setShowWidgetStatePopup, showWidgetStatePopup, authMode, connectWallet, } = useInternalDynamicContext();
26
- useSyncPrimaryWallet({
27
- authMode,
28
- canSync,
29
- computeConnectedStateForWallets,
30
- connectWallet,
31
- handleLogOut,
32
- multiWalletWidgetState,
33
- primaryWallet,
34
- secondaryWallets,
35
- setMultiWalletWidgetState,
36
- setPrimaryWallet,
37
- setShowWidgetStatePopup,
38
- showWidgetStatePopup,
39
- });
25
+ useSyncPrimaryWallet(canSync);
40
26
  const value = undefined;
41
27
  return (jsx(WalletContext.Provider, Object.assign({ value: value }, { children: children })));
42
28
  };
@@ -142,6 +142,10 @@ export type DynamicRPCProviders = {
142
142
  solanaProviders: SolanaRpcProvider[] | undefined;
143
143
  };
144
144
  export type DynamicEventsCallbacks = {
145
+ onSignedMessage?: (params: {
146
+ messageToSign: string;
147
+ signedMessage: string;
148
+ }) => void;
145
149
  onAuthFlowClose?: () => void;
146
150
  onAuthFlowOpen?: () => void;
147
151
  onAuthSuccess?: OnAuthSuccess;
@@ -44,10 +44,15 @@ const getDynamicLayoutData = ({ view }) => {
44
44
  'login-with-email-or-wallet-full-wallet-list': {
45
45
  heading: 'Select your wallet',
46
46
  },
47
+ 'multi-wallet-wallet-list': {
48
+ heading: 'Link a new wallet',
49
+ },
47
50
  'wallet-connect-mobile-wallets-list': {
48
51
  heading: (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(iconic.WalletConnectIcon, { style: { height: '1.5rem', width: '1.5rem' } }), ' ', "WalletConnect wallets"] })),
49
52
  },
50
- 'wallet-list': { heading: 'Select your wallet' },
53
+ 'wallet-list': {
54
+ heading: 'Select your wallet',
55
+ },
51
56
  'wallet-sign': { heading: 'Sign to confirm transfer' },
52
57
  };
53
58
  const helpHeaderData = helpHeaderMap[view];
@@ -40,10 +40,15 @@ const getDynamicLayoutData = ({ view }) => {
40
40
  'login-with-email-or-wallet-full-wallet-list': {
41
41
  heading: 'Select your wallet',
42
42
  },
43
+ 'multi-wallet-wallet-list': {
44
+ heading: 'Link a new wallet',
45
+ },
43
46
  'wallet-connect-mobile-wallets-list': {
44
47
  heading: (jsxs(Fragment, { children: [jsx(WalletConnectIcon, { style: { height: '1.5rem', width: '1.5rem' } }), ' ', "WalletConnect wallets"] })),
45
48
  },
46
- 'wallet-list': { heading: 'Select your wallet' },
49
+ 'wallet-list': {
50
+ heading: 'Select your wallet',
51
+ },
47
52
  'wallet-sign': { heading: 'Sign to confirm transfer' },
48
53
  };
49
54
  const helpHeaderData = helpHeaderMap[view];
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _tslib = require('../../../../../../_virtual/_tslib.cjs');
6
+ var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
6
7
  var useInternalDynamicContext = require('../../../../context/DynamicContext/useInternalDynamicContext.cjs');
7
8
  var ViewContext = require('../../../../context/ViewContext/ViewContext.cjs');
8
9
  var ErrorContext = require('../../../../context/ErrorContext/ErrorContext.cjs');
@@ -10,7 +11,6 @@ var useVerifyWallet = require('../../useVerifyWallet/useVerifyWallet.cjs');
10
11
  require('@dynamic-labs/sdk-api');
11
12
  var logger = require('../../../../shared/logger.cjs');
12
13
  require('@dynamic-labs/iconic');
13
- require('@dynamic-labs/wallet-connector-core');
14
14
  require('react/jsx-runtime');
15
15
  require('react');
16
16
  require('@dynamic-labs/wallet-book');
@@ -23,7 +23,7 @@ require('../../../../shared/consts/index.cjs');
23
23
  const useSignConnectOnlyUser = () => {
24
24
  const { setView } = ViewContext.useViewContext();
25
25
  const { setErrorMessage } = ErrorContext.useErrorContext();
26
- const { connectWallet, consumeNonce, displaySiweStatement, projectSettings, environmentId, setIsSingleWalletAccount, setShowAuthFlow, setSelectedWalletConnector, } = useInternalDynamicContext.useInternalDynamicContext();
26
+ const { connectWallet, consumeNonce, displaySiweStatement, projectSettings, environmentId, setIsSingleWalletAccount, setShowAuthFlow, setSelectedWalletConnector, walletUiUtils, } = useInternalDynamicContext.useInternalDynamicContext();
27
27
  const verifyWallet = useVerifyWallet.useVerifyWallet({
28
28
  consumeNonce,
29
29
  displaySiweStatement,
@@ -33,6 +33,10 @@ const useSignConnectOnlyUser = () => {
33
33
  });
34
34
  return ({ walletConnector, fetchPublicAddressOpts = undefined, }) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
35
35
  try {
36
+ if (walletConnectorCore.isEmbeddedConnector(walletConnector) &&
37
+ !walletConnectorCore.isBloctoConnector(walletConnector)) {
38
+ walletUiUtils.disabledConfirmationOnce();
39
+ }
36
40
  // Prepare states to show the pending signature view (without back button)
37
41
  // We need this because in connect-only we don't want to show wallet-list
38
42
  // We don't want to show the back button in the pending signature view
@@ -1,4 +1,5 @@
1
1
  import { __awaiter } from '../../../../../../_virtual/_tslib.js';
2
+ import { isEmbeddedConnector, isBloctoConnector } from '@dynamic-labs/wallet-connector-core';
2
3
  import { useInternalDynamicContext } from '../../../../context/DynamicContext/useInternalDynamicContext.js';
3
4
  import { useViewContext } from '../../../../context/ViewContext/ViewContext.js';
4
5
  import { useErrorContext } from '../../../../context/ErrorContext/ErrorContext.js';
@@ -6,7 +7,6 @@ import { useVerifyWallet } from '../../useVerifyWallet/useVerifyWallet.js';
6
7
  import '@dynamic-labs/sdk-api';
7
8
  import { logger } from '../../../../shared/logger.js';
8
9
  import '@dynamic-labs/iconic';
9
- import '@dynamic-labs/wallet-connector-core';
10
10
  import 'react/jsx-runtime';
11
11
  import 'react';
12
12
  import '@dynamic-labs/wallet-book';
@@ -19,7 +19,7 @@ import '../../../../shared/consts/index.js';
19
19
  const useSignConnectOnlyUser = () => {
20
20
  const { setView } = useViewContext();
21
21
  const { setErrorMessage } = useErrorContext();
22
- const { connectWallet, consumeNonce, displaySiweStatement, projectSettings, environmentId, setIsSingleWalletAccount, setShowAuthFlow, setSelectedWalletConnector, } = useInternalDynamicContext();
22
+ const { connectWallet, consumeNonce, displaySiweStatement, projectSettings, environmentId, setIsSingleWalletAccount, setShowAuthFlow, setSelectedWalletConnector, walletUiUtils, } = useInternalDynamicContext();
23
23
  const verifyWallet = useVerifyWallet({
24
24
  consumeNonce,
25
25
  displaySiweStatement,
@@ -29,6 +29,10 @@ const useSignConnectOnlyUser = () => {
29
29
  });
30
30
  return ({ walletConnector, fetchPublicAddressOpts = undefined, }) => __awaiter(void 0, void 0, void 0, function* () {
31
31
  try {
32
+ if (isEmbeddedConnector(walletConnector) &&
33
+ !isBloctoConnector(walletConnector)) {
34
+ walletUiUtils.disabledConfirmationOnce();
35
+ }
32
36
  // Prepare states to show the pending signature view (without back button)
33
37
  // We need this because in connect-only we don't want to show wallet-list
34
38
  // We don't want to show the back button in the pending signature view
@@ -10,8 +10,8 @@ var ViewContext = require('../../../../context/ViewContext/ViewContext.cjs');
10
10
  var useInternalDynamicContext = require('../../../../context/DynamicContext/useInternalDynamicContext.cjs');
11
11
  var errors = require('../../../constants/errors.cjs');
12
12
 
13
- const useSyncPrimaryWallet = ({ connectWallet, computeConnectedStateForWallets, handleLogOut, multiWalletWidgetState, primaryWallet, secondaryWallets, setMultiWalletWidgetState, setPrimaryWallet, setShowWidgetStatePopup, showWidgetStatePopup, canSync = true, authMode, }) => {
14
- const { setShowAuthFlow, isAuthenticated } = useInternalDynamicContext.useInternalDynamicContext();
13
+ const useSyncPrimaryWallet = (canSync = true) => {
14
+ const { setShowAuthFlow, isAuthenticated, authMode, computeConnectedStateForWallets, connectWallet, handleLogOut, multiWalletWidgetState, primaryWallet, secondaryWallets, setMultiWalletWidgetState, setPrimaryWallet, setShowWidgetStatePopup, showLockedWalletView, showWidgetStatePopup, } = useInternalDynamicContext.useInternalDynamicContext();
15
15
  const { setView } = ViewContext.useViewContext();
16
16
  const handlePrimaryWalletNotActive = React.useCallback((connectedAddress) => {
17
17
  if (!primaryWallet)
@@ -97,8 +97,12 @@ const useSyncPrimaryWallet = ({ connectWallet, computeConnectedStateForWallets,
97
97
  handleLogOut();
98
98
  return;
99
99
  }
100
- setShowAuthFlow(true);
101
- setView('wallet-locked-view');
100
+ if (showLockedWalletView) {
101
+ setShowAuthFlow(true);
102
+ setView('wallet-locked-view');
103
+ return;
104
+ }
105
+ handleLogOut();
102
106
  }
103
107
  });
104
108
  }, [
@@ -115,6 +119,7 @@ const useSyncPrimaryWallet = ({ connectWallet, computeConnectedStateForWallets,
115
119
  setShowAuthFlow,
116
120
  authMode,
117
121
  isAuthenticated,
122
+ showLockedWalletView,
118
123
  ]);
119
124
  };
120
125
 
@@ -1,19 +1 @@
1
- import { Dispatch, SetStateAction } from 'react';
2
- import { FetchPublicAddressOpts, WalletConnector } from '@dynamic-labs/wallet-connector-core';
3
- import { AuthModeType, MultiWalletWidgetState, Wallet } from '../../../../shared/types';
4
- import { MultiWalletWidgetStateSetter } from '../useMultiWalletWidgetState';
5
- export type UseSyncPrimaryWalletArgs = {
6
- canSync?: boolean;
7
- connectWallet: (walletConnector: WalletConnector, fetchPublicAddressOpts?: FetchPublicAddressOpts, shouldCallCallback?: boolean) => Promise<string | undefined>;
8
- computeConnectedStateForWallets: () => Promise<void>;
9
- handleLogOut: () => Promise<void>;
10
- multiWalletWidgetState: MultiWalletWidgetState;
11
- primaryWallet: Wallet | null;
12
- secondaryWallets: Wallet[];
13
- setMultiWalletWidgetState: MultiWalletWidgetStateSetter;
14
- setPrimaryWallet: (walletId: string) => Promise<void>;
15
- setShowWidgetStatePopup: Dispatch<SetStateAction<boolean>>;
16
- showWidgetStatePopup: boolean;
17
- authMode: AuthModeType;
18
- };
19
- export declare const useSyncPrimaryWallet: ({ connectWallet, computeConnectedStateForWallets, handleLogOut, multiWalletWidgetState, primaryWallet, secondaryWallets, setMultiWalletWidgetState, setPrimaryWallet, setShowWidgetStatePopup, showWidgetStatePopup, canSync, authMode, }: UseSyncPrimaryWalletArgs) => void;
1
+ export declare const useSyncPrimaryWallet: (canSync?: boolean) => void;
@@ -6,8 +6,8 @@ import { useViewContext } from '../../../../context/ViewContext/ViewContext.js';
6
6
  import { useInternalDynamicContext } from '../../../../context/DynamicContext/useInternalDynamicContext.js';
7
7
  import { MISSING_ADDRESS_ERROR } from '../../../constants/errors.js';
8
8
 
9
- const useSyncPrimaryWallet = ({ connectWallet, computeConnectedStateForWallets, handleLogOut, multiWalletWidgetState, primaryWallet, secondaryWallets, setMultiWalletWidgetState, setPrimaryWallet, setShowWidgetStatePopup, showWidgetStatePopup, canSync = true, authMode, }) => {
10
- const { setShowAuthFlow, isAuthenticated } = useInternalDynamicContext();
9
+ const useSyncPrimaryWallet = (canSync = true) => {
10
+ const { setShowAuthFlow, isAuthenticated, authMode, computeConnectedStateForWallets, connectWallet, handleLogOut, multiWalletWidgetState, primaryWallet, secondaryWallets, setMultiWalletWidgetState, setPrimaryWallet, setShowWidgetStatePopup, showLockedWalletView, showWidgetStatePopup, } = useInternalDynamicContext();
11
11
  const { setView } = useViewContext();
12
12
  const handlePrimaryWalletNotActive = useCallback((connectedAddress) => {
13
13
  if (!primaryWallet)
@@ -93,8 +93,12 @@ const useSyncPrimaryWallet = ({ connectWallet, computeConnectedStateForWallets,
93
93
  handleLogOut();
94
94
  return;
95
95
  }
96
- setShowAuthFlow(true);
97
- setView('wallet-locked-view');
96
+ if (showLockedWalletView) {
97
+ setShowAuthFlow(true);
98
+ setView('wallet-locked-view');
99
+ return;
100
+ }
101
+ handleLogOut();
98
102
  }
99
103
  });
100
104
  }, [
@@ -111,6 +115,7 @@ const useSyncPrimaryWallet = ({ connectWallet, computeConnectedStateForWallets,
111
115
  setShowAuthFlow,
112
116
  authMode,
113
117
  isAuthenticated,
118
+ showLockedWalletView,
114
119
  ]);
115
120
  };
116
121
 
@@ -38,7 +38,7 @@ const useVerifyWallet = ({ consumeNonce, displaySiweStatement, environmentId, pr
38
38
  const { setExistentAccountData } = AccountExistsContext.useAccountExistsContext();
39
39
  const { setView, goToInitialView } = ViewContext.useViewContext();
40
40
  const { setErrorMessage, setError } = ErrorContext.useErrorContext();
41
- const { setUser, multiWalletWidgetState, debugError, multiWallet: multiWalletEnabled, appName, primaryWalletId, setCallback, setShowAuthFlow, setPrimaryWalletId, siweStatement, connectedWallet, authMode, setOnboardingOnlyJwt, authToken, setAuthMode, removeConnectedWalletsInfo, setIsVerificationInProgress, } = useInternalDynamicContext.useInternalDynamicContext();
41
+ const { setUser, multiWalletWidgetState, debugError, multiWallet: multiWalletEnabled, appName, primaryWalletId, setCallback, setShowAuthFlow, setPrimaryWalletId, siweStatement, connectedWallet, authMode, setOnboardingOnlyJwt, authToken, setAuthMode, removeConnectedWalletsInfo, setIsVerificationInProgress, eventsCallbacks, } = useInternalDynamicContext.useInternalDynamicContext();
42
42
  // If the user is not already logged it means that we only need to verify
43
43
  // We need this boolean for the part of the logic where we already persisted a new authToken,
44
44
  // and need to distinguish between logic for verify or linking.
@@ -68,7 +68,7 @@ const useVerifyWallet = ({ consumeNonce, displaySiweStatement, environmentId, pr
68
68
  if (Jwt === undefined)
69
69
  throw new utils.DynamicError('Could not obtain a valid JWT');
70
70
  // TODO DYN-523: add verification here that the JWT is valid with the publicKey
71
- return Jwt;
71
+ return { Jwt, verifyArgs };
72
72
  });
73
73
  // Overrides the stored primary wallet id when the
74
74
  // user logs in for the first time.
@@ -143,13 +143,23 @@ const useVerifyWallet = ({ consumeNonce, displaySiweStatement, environmentId, pr
143
143
  }
144
144
  };
145
145
  return ({ walletConnector, fetchPublicAddressOpts, publicWalletAddress, captchaToken, oauth, }) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
146
+ var _a;
146
147
  const walletProvider = getWalletProvider.getWalletProvider(walletConnector);
147
148
  try {
148
149
  setIsVerificationInProgress(true);
149
- const Jwt = yield generateJWT(walletConnector, walletProvider, fetchPublicAddressOpts, publicWalletAddress, captchaToken, oauth);
150
+ const { Jwt, verifyArgs } = yield generateJWT(walletConnector, walletProvider, fetchPublicAddressOpts, publicWalletAddress, captchaToken, oauth);
150
151
  const decodedJwt = decodeJwt.decodeJwt(Jwt);
151
152
  if (decodedJwt === undefined)
152
153
  throw new utils.DynamicError('Invalid token!');
154
+ try {
155
+ (_a = eventsCallbacks === null || eventsCallbacks === void 0 ? void 0 : eventsCallbacks.onSignedMessage) === null || _a === void 0 ? void 0 : _a.call(eventsCallbacks, {
156
+ messageToSign: verifyArgs.messageToSign,
157
+ signedMessage: verifyArgs.signedMessage,
158
+ });
159
+ }
160
+ catch (_b) {
161
+ logger.logger.warn('Error calling onSignedMessage callback');
162
+ }
153
163
  const user = yield createUserProfile.createUserProfile(decodedJwt);
154
164
  const isKycRequired = decodedJwt.missingFields.length;
155
165
  setOnboardingOnlyJwt(Jwt);
@@ -34,7 +34,7 @@ const useVerifyWallet = ({ consumeNonce, displaySiweStatement, environmentId, pr
34
34
  const { setExistentAccountData } = useAccountExistsContext();
35
35
  const { setView, goToInitialView } = useViewContext();
36
36
  const { setErrorMessage, setError } = useErrorContext();
37
- const { setUser, multiWalletWidgetState, debugError, multiWallet: multiWalletEnabled, appName, primaryWalletId, setCallback, setShowAuthFlow, setPrimaryWalletId, siweStatement, connectedWallet, authMode, setOnboardingOnlyJwt, authToken, setAuthMode, removeConnectedWalletsInfo, setIsVerificationInProgress, } = useInternalDynamicContext();
37
+ const { setUser, multiWalletWidgetState, debugError, multiWallet: multiWalletEnabled, appName, primaryWalletId, setCallback, setShowAuthFlow, setPrimaryWalletId, siweStatement, connectedWallet, authMode, setOnboardingOnlyJwt, authToken, setAuthMode, removeConnectedWalletsInfo, setIsVerificationInProgress, eventsCallbacks, } = useInternalDynamicContext();
38
38
  // If the user is not already logged it means that we only need to verify
39
39
  // We need this boolean for the part of the logic where we already persisted a new authToken,
40
40
  // and need to distinguish between logic for verify or linking.
@@ -64,7 +64,7 @@ const useVerifyWallet = ({ consumeNonce, displaySiweStatement, environmentId, pr
64
64
  if (Jwt === undefined)
65
65
  throw new DynamicError('Could not obtain a valid JWT');
66
66
  // TODO DYN-523: add verification here that the JWT is valid with the publicKey
67
- return Jwt;
67
+ return { Jwt, verifyArgs };
68
68
  });
69
69
  // Overrides the stored primary wallet id when the
70
70
  // user logs in for the first time.
@@ -139,13 +139,23 @@ const useVerifyWallet = ({ consumeNonce, displaySiweStatement, environmentId, pr
139
139
  }
140
140
  };
141
141
  return ({ walletConnector, fetchPublicAddressOpts, publicWalletAddress, captchaToken, oauth, }) => __awaiter(void 0, void 0, void 0, function* () {
142
+ var _a;
142
143
  const walletProvider = getWalletProvider(walletConnector);
143
144
  try {
144
145
  setIsVerificationInProgress(true);
145
- const Jwt = yield generateJWT(walletConnector, walletProvider, fetchPublicAddressOpts, publicWalletAddress, captchaToken, oauth);
146
+ const { Jwt, verifyArgs } = yield generateJWT(walletConnector, walletProvider, fetchPublicAddressOpts, publicWalletAddress, captchaToken, oauth);
146
147
  const decodedJwt = decodeJwt(Jwt);
147
148
  if (decodedJwt === undefined)
148
149
  throw new DynamicError('Invalid token!');
150
+ try {
151
+ (_a = eventsCallbacks === null || eventsCallbacks === void 0 ? void 0 : eventsCallbacks.onSignedMessage) === null || _a === void 0 ? void 0 : _a.call(eventsCallbacks, {
152
+ messageToSign: verifyArgs.messageToSign,
153
+ signedMessage: verifyArgs.signedMessage,
154
+ });
155
+ }
156
+ catch (_b) {
157
+ logger.warn('Error calling onSignedMessage callback');
158
+ }
149
159
  const user = yield createUserProfile(decodedJwt);
150
160
  const isKycRequired = decodedJwt.missingFields.length;
151
161
  setOnboardingOnlyJwt(Jwt);
@@ -48,7 +48,7 @@ var index = require('../UserDataFields/index.cjs');
48
48
  var useUserDataForm = require('../../../utils/hooks/useUserDataForm/useUserDataForm.cjs');
49
49
 
50
50
  const OnboardingUserDataForm = ({ children, userProfile, disableSubmit, }) => {
51
- const { policiesConsentInnerComponent, onboardingOnlyJwt, setShowAuthFlow, setCallback, } = useInternalDynamicContext.useInternalDynamicContext();
51
+ const { policiesConsentInnerComponent, onboardingOnlyJwt, internalSetShowAuthFlow, setCallback, } = useInternalDynamicContext.useInternalDynamicContext();
52
52
  const { setView, view } = ViewContext.useViewContext();
53
53
  const decodedJwt = decodeJwt.decodeJwt(onboardingOnlyJwt);
54
54
  const { updateUser } = useUserUpdateRequest.useUserUpdateRequestInternal({
@@ -67,9 +67,9 @@ const OnboardingUserDataForm = ({ children, userProfile, disableSubmit, }) => {
67
67
  setView(view);
68
68
  return;
69
69
  }
70
- setShowAuthFlow(false);
70
+ internalSetShowAuthFlow(false);
71
71
  setCallback('authSuccess');
72
- }), [setCallback, setShowAuthFlow, setView, updateUser]);
72
+ }), [setCallback, internalSetShowAuthFlow, setView, updateUser]);
73
73
  const { fetch: loading, formikInitialValues, formikValidationSchema, enforcePolicies, onFormSubmit, } = useUserDataForm.useUserDataForm({
74
74
  fields: (decodedJwt === null || decodedJwt === void 0 ? void 0 : decodedJwt.missingFields) || [],
75
75
  onSubmit,
@@ -44,7 +44,7 @@ import { UserDataFields } from '../UserDataFields/index.js';
44
44
  import { useUserDataForm } from '../../../utils/hooks/useUserDataForm/useUserDataForm.js';
45
45
 
46
46
  const OnboardingUserDataForm = ({ children, userProfile, disableSubmit, }) => {
47
- const { policiesConsentInnerComponent, onboardingOnlyJwt, setShowAuthFlow, setCallback, } = useInternalDynamicContext();
47
+ const { policiesConsentInnerComponent, onboardingOnlyJwt, internalSetShowAuthFlow, setCallback, } = useInternalDynamicContext();
48
48
  const { setView, view } = useViewContext();
49
49
  const decodedJwt = decodeJwt(onboardingOnlyJwt);
50
50
  const { updateUser } = useUserUpdateRequestInternal({
@@ -63,9 +63,9 @@ const OnboardingUserDataForm = ({ children, userProfile, disableSubmit, }) => {
63
63
  setView(view);
64
64
  return;
65
65
  }
66
- setShowAuthFlow(false);
66
+ internalSetShowAuthFlow(false);
67
67
  setCallback('authSuccess');
68
- }), [setCallback, setShowAuthFlow, setView, updateUser]);
68
+ }), [setCallback, internalSetShowAuthFlow, setView, updateUser]);
69
69
  const { fetch: loading, formikInitialValues, formikValidationSchema, enforcePolicies, onFormSubmit, } = useUserDataForm({
70
70
  fields: (decodedJwt === null || decodedJwt === void 0 ? void 0 : decodedJwt.missingFields) || [],
71
71
  onSubmit,
@@ -46,6 +46,7 @@ const viewToComponentMap = {
46
46
  'login-with-email-or-wallet-full-wallet-list': jsxRuntime.jsx(WalletList.WalletList, {}),
47
47
  'login-with-email-verification': jsxRuntime.jsx(EmailVerification.EmailVerification, {}),
48
48
  'merge-user-accounts': jsxRuntime.jsx(MergeUserAccountsView.MergeUserAccountsView, {}),
49
+ 'multi-wallet-wallet-list': jsxRuntime.jsx(WalletList.WalletList, {}),
49
50
  'network-not-supported': jsxRuntime.jsx(NetworkNotSupported.NetworkNotSupported, {}),
50
51
  'network-not-supported-manual': jsxRuntime.jsx(NetworkNotSupportedSwitchManual.NetworkNotSupportedSwitchManual, {}),
51
52
  'no-access': jsxRuntime.jsx(NoAccess.NoAccess, {}),
@@ -42,6 +42,7 @@ const viewToComponentMap = {
42
42
  'login-with-email-or-wallet-full-wallet-list': jsx(WalletList, {}),
43
43
  'login-with-email-verification': jsx(EmailVerification, {}),
44
44
  'merge-user-accounts': jsx(MergeUserAccountsView, {}),
45
+ 'multi-wallet-wallet-list': jsx(WalletList, {}),
45
46
  'network-not-supported': jsx(NetworkNotSupported, {}),
46
47
  'network-not-supported-manual': jsx(NetworkNotSupportedSwitchManual, {}),
47
48
  'no-access': jsx(NoAccess, {}),
@@ -14,7 +14,7 @@ var UserProfileForm = require('../../../../components/UserProfileForm/UserProfil
14
14
  const EditProfileView = () => {
15
15
  const { setView } = ViewContext.useViewContext();
16
16
  const { goToProfileView } = DynamicBridgeWidgetContext.useDynamicBridgeWidgetContext();
17
- const { setShowAuthFlow } = useInternalDynamicContext.useInternalDynamicContext();
17
+ const { internalSetShowAuthFlow } = useInternalDynamicContext.useInternalDynamicContext();
18
18
  const { updateUser } = useUserUpdateRequest.useUserUpdateRequestInternal({
19
19
  validationSchemaStripUnknown: true,
20
20
  });
@@ -22,10 +22,10 @@ const EditProfileView = () => {
22
22
  const { isEmailVerificationRequired } = yield updateUser(formValues);
23
23
  goToProfileView();
24
24
  if (isEmailVerificationRequired) {
25
- setShowAuthFlow(true);
25
+ internalSetShowAuthFlow(true);
26
26
  setView('verify-email');
27
27
  }
28
- }), [goToProfileView, setShowAuthFlow, setView, updateUser]);
28
+ }), [goToProfileView, internalSetShowAuthFlow, setView, updateUser]);
29
29
  return (jsxRuntime.jsx(UserProfileForm.UserProfileForm, { onEditProfileSubmit: onEditProfileFormSubmit, onEditProfileCancel: goToProfileView }));
30
30
  };
31
31
 
@@ -10,7 +10,7 @@ import { UserProfileForm } from '../../../../components/UserProfileForm/UserProf
10
10
  const EditProfileView = () => {
11
11
  const { setView } = useViewContext();
12
12
  const { goToProfileView } = useDynamicBridgeWidgetContext();
13
- const { setShowAuthFlow } = useInternalDynamicContext();
13
+ const { internalSetShowAuthFlow } = useInternalDynamicContext();
14
14
  const { updateUser } = useUserUpdateRequestInternal({
15
15
  validationSchemaStripUnknown: true,
16
16
  });
@@ -18,10 +18,10 @@ const EditProfileView = () => {
18
18
  const { isEmailVerificationRequired } = yield updateUser(formValues);
19
19
  goToProfileView();
20
20
  if (isEmailVerificationRequired) {
21
- setShowAuthFlow(true);
21
+ internalSetShowAuthFlow(true);
22
22
  setView('verify-email');
23
23
  }
24
- }), [goToProfileView, setShowAuthFlow, setView, updateUser]);
24
+ }), [goToProfileView, internalSetShowAuthFlow, setView, updateUser]);
25
25
  return (jsx(UserProfileForm, { onEditProfileSubmit: onEditProfileFormSubmit, onEditProfileCancel: goToProfileView }));
26
26
  };
27
27
 
@@ -50,7 +50,7 @@ var UserProfileForm = require('../../../../components/UserProfileForm/UserProfil
50
50
 
51
51
  const EditProfileView = ({ rootClassName, }) => {
52
52
  const { setView } = ViewContext.useViewContext();
53
- const { setShowAuthFlow } = useInternalDynamicContext.useInternalDynamicContext();
53
+ const { internalSetShowAuthFlow } = useInternalDynamicContext.useInternalDynamicContext();
54
54
  const { goToProfileView } = DynamicWidgetContext.useWidgetContext();
55
55
  const { updateUser } = useUserUpdateRequest.useUserUpdateRequestInternal({
56
56
  validationSchemaStripUnknown: true,
@@ -59,10 +59,10 @@ const EditProfileView = ({ rootClassName, }) => {
59
59
  const { isEmailVerificationRequired } = yield updateUser(formValues);
60
60
  goToProfileView();
61
61
  if (isEmailVerificationRequired) {
62
- setShowAuthFlow(true);
62
+ internalSetShowAuthFlow(true);
63
63
  setView('verify-email');
64
64
  }
65
- }), [goToProfileView, setShowAuthFlow, setView, updateUser]);
65
+ }), [goToProfileView, internalSetShowAuthFlow, setView, updateUser]);
66
66
  const isKYCEnabled = useKYCFlag.useKYCFlag();
67
67
  const isMultiWalletEnabled = useMultiWalletFlag.useMultiWalletFlag();
68
68
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [!isMultiWalletEnabled && isKYCEnabled && (jsxRuntime.jsx(Typography.Typography, Object.assign({ weight: 'regular', color: 'secondary', variant: 'body_normal', className: 'dynamic-widget-edit-profile-view__profile-title' }, { children: "My profile" }))), jsxRuntime.jsx(UserProfileForm.UserProfileForm, { formClassName: rootClassName, onEditProfileSubmit: onEditProfileFormSubmit, onEditProfileCancel: goToProfileView })] }));
@@ -46,7 +46,7 @@ import { UserProfileForm } from '../../../../components/UserProfileForm/UserProf
46
46
 
47
47
  const EditProfileView = ({ rootClassName, }) => {
48
48
  const { setView } = useViewContext();
49
- const { setShowAuthFlow } = useInternalDynamicContext();
49
+ const { internalSetShowAuthFlow } = useInternalDynamicContext();
50
50
  const { goToProfileView } = useWidgetContext();
51
51
  const { updateUser } = useUserUpdateRequestInternal({
52
52
  validationSchemaStripUnknown: true,
@@ -55,10 +55,10 @@ const EditProfileView = ({ rootClassName, }) => {
55
55
  const { isEmailVerificationRequired } = yield updateUser(formValues);
56
56
  goToProfileView();
57
57
  if (isEmailVerificationRequired) {
58
- setShowAuthFlow(true);
58
+ internalSetShowAuthFlow(true);
59
59
  setView('verify-email');
60
60
  }
61
- }), [goToProfileView, setShowAuthFlow, setView, updateUser]);
61
+ }), [goToProfileView, internalSetShowAuthFlow, setView, updateUser]);
62
62
  const isKYCEnabled = useKYCFlag();
63
63
  const isMultiWalletEnabled = useMultiWalletFlag();
64
64
  return (jsxs(Fragment, { children: [!isMultiWalletEnabled && isKYCEnabled && (jsx(Typography, Object.assign({ weight: 'regular', color: 'secondary', variant: 'body_normal', className: 'dynamic-widget-edit-profile-view__profile-title' }, { children: "My profile" }))), jsx(UserProfileForm, { formClassName: rootClassName, onEditProfileSubmit: onEditProfileFormSubmit, onEditProfileCancel: goToProfileView })] }));