@dynamic-labs/sdk-react-core 3.0.0-alpha.6 → 3.0.0-alpha.7

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 (72) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +10 -10
  5. package/src/index.cjs +7 -1
  6. package/src/index.d.ts +3 -1
  7. package/src/index.js +4 -1
  8. package/src/lib/Main.cjs +1 -0
  9. package/src/lib/Main.js +1 -0
  10. package/src/lib/context/DynamicContext/DynamicContext.cjs +14 -8
  11. package/src/lib/context/DynamicContext/DynamicContext.js +14 -8
  12. package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.cjs +15 -6
  13. package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.js +15 -6
  14. package/src/lib/context/DynamicContext/types/index.d.ts +4 -2
  15. package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.cjs +3 -2
  16. package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.d.ts +1 -1
  17. package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.js +3 -2
  18. package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.cjs +128 -0
  19. package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.d.ts +6 -0
  20. package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.js +122 -0
  21. package/src/lib/context/WidgetRegistry/index.d.ts +1 -0
  22. package/src/lib/data/api/wallets/wallets.cjs +2 -1
  23. package/src/lib/data/api/wallets/wallets.d.ts +2 -1
  24. package/src/lib/data/api/wallets/wallets.js +2 -1
  25. package/src/lib/events/dynamicEvents.d.ts +2 -1
  26. package/src/lib/events/multiWallet.d.ts +5 -0
  27. package/src/lib/styles/index.shadow.cjs +1 -1
  28. package/src/lib/styles/index.shadow.js +1 -1
  29. package/src/lib/utils/functions/index.d.ts +1 -0
  30. package/src/lib/utils/functions/logVerboseTroubleshootingMessage/index.d.ts +1 -0
  31. package/src/lib/utils/functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.cjs +28 -0
  32. package/src/lib/utils/functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.d.ts +1 -0
  33. package/src/lib/utils/functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.js +24 -0
  34. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.cjs +20 -0
  35. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.d.ts +2 -2
  36. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.js +20 -1
  37. package/src/lib/utils/hooks/index.d.ts +1 -0
  38. package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.cjs +3 -1
  39. package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.js +3 -1
  40. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.cjs +6 -2
  41. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.js +6 -2
  42. package/src/lib/utils/hooks/useRefreshUser/index.d.ts +1 -0
  43. package/src/lib/utils/hooks/useRefreshUser/useRefreshUser.cjs +90 -0
  44. package/src/lib/utils/hooks/useRefreshUser/useRefreshUser.d.ts +8 -0
  45. package/src/lib/utils/hooks/useRefreshUser/useRefreshUser.js +86 -0
  46. package/src/lib/utils/hooks/useSwitchNetwork/index.d.ts +1 -0
  47. package/src/lib/utils/hooks/useSwitchNetwork/useSwitchNetwork.cjs +26 -0
  48. package/src/lib/utils/hooks/useSwitchNetwork/useSwitchNetwork.d.ts +5 -0
  49. package/src/lib/utils/hooks/useSwitchNetwork/useSwitchNetwork.js +22 -0
  50. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.cjs +7 -6
  51. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.js +7 -6
  52. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.cjs +44 -27
  53. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.js +45 -28
  54. package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.cjs +4 -14
  55. package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.js +5 -15
  56. package/src/lib/views/TransactionConfirmationView/TransactionConfirmationView.cjs +3 -1
  57. package/src/lib/views/TransactionConfirmationView/TransactionConfirmationView.js +3 -1
  58. package/src/lib/views/WalletList/WalletList.cjs +1 -3
  59. package/src/lib/views/WalletList/WalletList.js +1 -3
  60. package/src/lib/views/WalletList/hooks/useTabState.cjs +6 -81
  61. package/src/lib/views/WalletList/hooks/useTabState.d.ts +6 -3
  62. package/src/lib/views/WalletList/hooks/useTabState.js +6 -81
  63. package/src/lib/widgets/DynamicMultiWalletPromptsWidget/DynamicMultiWalletPromptsWidget.cjs +5 -5
  64. package/src/lib/widgets/DynamicMultiWalletPromptsWidget/DynamicMultiWalletPromptsWidget.js +5 -5
  65. package/src/lib/widgets/DynamicWidget/components/DynamicUserProfile/DynamicUserProfile.cjs +4 -1
  66. package/src/lib/widgets/DynamicWidget/components/DynamicUserProfile/DynamicUserProfile.js +4 -1
  67. package/src/lib/widgets/DynamicWidget/prompts/PrimaryNotConnectedModal/PrimaryNotConnectedModal.cjs +1 -1
  68. package/src/lib/widgets/DynamicWidget/prompts/PrimaryNotConnectedModal/PrimaryNotConnectedModal.js +1 -1
  69. package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.cjs +0 -22
  70. package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.d.ts +0 -2
  71. package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.js +0 -18
  72. package/src/lib/views/WalletList/utils/getInitialTabIndex/index.d.ts +0 -1
@@ -77,3 +77,4 @@ export * from './storeExpiresAt';
77
77
  export * from './getExpiresAt';
78
78
  export * from './getSupportedCountriesForVerificationFromProjectSettings';
79
79
  export * from './getDefaultCountriesIfEmpty';
80
+ export * from './logVerboseTroubleshootingMessage';
@@ -0,0 +1 @@
1
+ export * from './logVerboseTroubleshootingMessage';
@@ -0,0 +1,28 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ require('@dynamic-labs/sdk-api-core');
7
+ var logger = require('../../../shared/logger.cjs');
8
+ require('@dynamic-labs/iconic');
9
+ require('@dynamic-labs/wallet-connector-core');
10
+ require('react/jsx-runtime');
11
+ require('../../../context/ViewContext/ViewContext.cjs');
12
+ require('react');
13
+ require('@dynamic-labs/wallet-book');
14
+ require('../../constants/colors.cjs');
15
+ require('../../constants/values.cjs');
16
+ require('../../../shared/utils/classes/storage/localStorage.cjs');
17
+ require('../../../shared/utils/classes/storage/sessionStorage.cjs');
18
+ require('@dynamic-labs/utils');
19
+ require('../../../shared/consts/index.cjs');
20
+
21
+ // use this in conjuction with dynamic_enableTroubleshootMode to see
22
+ // more verbose logging to help troubleshoot issues
23
+ // i.e: window.dynamic_enableTroubleshootMode = true
24
+ const logVerboseTroubleshootingMessage = (message, ...args) => {
25
+ logger.logger.log(-1, message, ...args);
26
+ };
27
+
28
+ exports.logVerboseTroubleshootingMessage = logVerboseTroubleshootingMessage;
@@ -0,0 +1 @@
1
+ export declare const logVerboseTroubleshootingMessage: (message: string | Error | unknown, ...args: any[]) => void;
@@ -0,0 +1,24 @@
1
+ 'use client'
2
+ import '@dynamic-labs/sdk-api-core';
3
+ import { logger } from '../../../shared/logger.js';
4
+ import '@dynamic-labs/iconic';
5
+ import '@dynamic-labs/wallet-connector-core';
6
+ import 'react/jsx-runtime';
7
+ import '../../../context/ViewContext/ViewContext.js';
8
+ import 'react';
9
+ import '@dynamic-labs/wallet-book';
10
+ import '../../constants/colors.js';
11
+ import '../../constants/values.js';
12
+ import '../../../shared/utils/classes/storage/localStorage.js';
13
+ import '../../../shared/utils/classes/storage/sessionStorage.js';
14
+ import '@dynamic-labs/utils';
15
+ import '../../../shared/consts/index.js';
16
+
17
+ // use this in conjuction with dynamic_enableTroubleshootMode to see
18
+ // more verbose logging to help troubleshoot issues
19
+ // i.e: window.dynamic_enableTroubleshootMode = true
20
+ const logVerboseTroubleshootingMessage = (message, ...args) => {
21
+ logger.log(-1, message, ...args);
22
+ };
23
+
24
+ export { logVerboseTroubleshootingMessage };
@@ -18,5 +18,25 @@ const useInternalDynamicEvents = (event, listener) => {
18
18
  };
19
19
  }, [event]);
20
20
  };
21
+ // ATTENTION
22
+ // Everything below should be made public soon, but we need to plan this out first
23
+ // Main issues:
24
+ // 1. How should we map customer callback names to our dynamic event names?
25
+ // -> Gui's suggestion: breaking change to rename customer callbacks so they fit these events names
26
+ // 2. We would have to remove these callbacks from the useCustomerCallbacks hook
27
+ /** Which events are accessible by our clients */
28
+ const externalEvents = [
29
+ 'emailVerificationResult',
30
+ 'embeddedWalletCreated',
31
+ 'logout',
32
+ 'walletAdded',
33
+ ];
34
+ /** Allows subscribing to dynamic events directly inside components with a hook */
35
+ const useDynamicEvents = (event, listener) => {
36
+ if (!externalEvents.includes(event))
37
+ throw new Error(`Unrecognized event "${event}" used with useDynamicEvents`);
38
+ useInternalDynamicEvents(event, listener);
39
+ };
21
40
 
41
+ exports.useDynamicEvents = useDynamicEvents;
22
42
  exports.useInternalDynamicEvents = useInternalDynamicEvents;
@@ -2,7 +2,7 @@ import { DynamicEvents } from '../../../../events';
2
2
  import { EventArgs } from '../types';
3
3
  type DynamicEventListener<E extends keyof DynamicEvents> = (...args: EventArgs<DynamicEvents, E>) => void;
4
4
  /** Allows us to subscribe to all dynamicEvents with a hook, even the internal ones */
5
- export declare const useInternalDynamicEvents: <E extends keyof import("../../../../events/auth").AuthEvents | keyof import("../../../../events/ui").UIEvents | keyof import("../../../../events/otp").OTPEvents | keyof import("../../../../events/wallets").WalletEvents | keyof import("../../../../events/passkey").PasskeyEvents | "farcasterConnectCancelled" | keyof import("../../../../events/embeddedWallet").EmbeddedWalletEvents>(event: E, listener: DynamicEventListener<E>) => void;
5
+ export declare const useInternalDynamicEvents: <E extends keyof import("../../../../events/auth").AuthEvents | keyof import("../../../../events/ui").UIEvents | keyof import("../../../../events/otp").OTPEvents | keyof import("../../../../events/wallets").WalletEvents | keyof import("../../../../events/passkey").PasskeyEvents | "farcasterConnectCancelled" | keyof import("../../../../events/embeddedWallet").EmbeddedWalletEvents | "triggerComputePrimaryWalletMultiWalletStateFromAccounts">(event: E, listener: DynamicEventListener<E>) => void;
6
6
  /** Allows subscribing to dynamic events directly inside components with a hook */
7
- export declare const useDynamicEvents: <E extends "logout" | "emailVerificationResult" | "embeddedWalletCreated">(event: E, listener: DynamicEventListener<E>) => void;
7
+ export declare const useDynamicEvents: <E extends "logout" | "emailVerificationResult" | "walletAdded" | "embeddedWalletCreated">(event: E, listener: DynamicEventListener<E>) => void;
8
8
  export {};
@@ -14,5 +14,24 @@ const useInternalDynamicEvents = (event, listener) => {
14
14
  };
15
15
  }, [event]);
16
16
  };
17
+ // ATTENTION
18
+ // Everything below should be made public soon, but we need to plan this out first
19
+ // Main issues:
20
+ // 1. How should we map customer callback names to our dynamic event names?
21
+ // -> Gui's suggestion: breaking change to rename customer callbacks so they fit these events names
22
+ // 2. We would have to remove these callbacks from the useCustomerCallbacks hook
23
+ /** Which events are accessible by our clients */
24
+ const externalEvents = [
25
+ 'emailVerificationResult',
26
+ 'embeddedWalletCreated',
27
+ 'logout',
28
+ 'walletAdded',
29
+ ];
30
+ /** Allows subscribing to dynamic events directly inside components with a hook */
31
+ const useDynamicEvents = (event, listener) => {
32
+ if (!externalEvents.includes(event))
33
+ throw new Error(`Unrecognized event "${event}" used with useDynamicEvents`);
34
+ useInternalDynamicEvents(event, listener);
35
+ };
17
36
 
18
- export { useInternalDynamicEvents };
37
+ export { useDynamicEvents, useInternalDynamicEvents };
@@ -59,3 +59,4 @@ export { useSwitchWallet } from './useSwitchWallet';
59
59
  export { useSyncEmbeddedWalletFlow } from './useSyncEmbeddedWalletFlow';
60
60
  export { useSyncOnboardingFlow } from './useSyncOnboardingFlow';
61
61
  export { useExternalAuth } from './useExternalAuth';
62
+ export { useRefreshUser } from './useRefreshUser';
@@ -96,6 +96,9 @@ const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWall
96
96
  return;
97
97
  yield wallets.unlinkWallet({
98
98
  environmentId,
99
+ onSuccess: () => {
100
+ removedWalletsIds.current.push(walletId);
101
+ },
99
102
  primaryWalletId: currentPrimaryWalletId,
100
103
  walletId,
101
104
  });
@@ -105,7 +108,6 @@ const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWall
105
108
  if (numberOfLinkedWallets === 1) {
106
109
  yield (wallet === null || wallet === void 0 ? void 0 : wallet.connector.endSession());
107
110
  }
108
- removedWalletsIds.current.push(walletId);
109
111
  }), [
110
112
  primaryWalletId,
111
113
  environmentId,
@@ -92,6 +92,9 @@ const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWall
92
92
  return;
93
93
  yield unlinkWallet({
94
94
  environmentId,
95
+ onSuccess: () => {
96
+ removedWalletsIds.current.push(walletId);
97
+ },
95
98
  primaryWalletId: currentPrimaryWalletId,
96
99
  walletId,
97
100
  });
@@ -101,7 +104,6 @@ const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWall
101
104
  if (numberOfLinkedWallets === 1) {
102
105
  yield (wallet === null || wallet === void 0 ? void 0 : wallet.connector.endSession());
103
106
  }
104
- removedWalletsIds.current.push(walletId);
105
107
  }), [
106
108
  primaryWalletId,
107
109
  environmentId,
@@ -22,7 +22,7 @@ require('../../../config/ApiEndpoint.cjs');
22
22
  require('@dynamic-labs/multi-wallet');
23
23
  require('react-international-phone');
24
24
  require('@dynamic-labs/store');
25
- require('../../../events/dynamicEvents.cjs');
25
+ var dynamicEvents = require('../../../events/dynamicEvents.cjs');
26
26
  require('../../../context/DynamicContext/DynamicContext.cjs');
27
27
  var useInternalDynamicContext = require('../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
28
28
  require('../../../context/CaptchaContext/CaptchaContext.cjs');
@@ -79,7 +79,7 @@ require('../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCa
79
79
  var user = require('../../../data/api/user/user.cjs');
80
80
 
81
81
  const useMergeUserAccounts = () => {
82
- const { environmentId, setShowAuthFlow } = useInternalDynamicContext.useInternalDynamicContext();
82
+ const { environmentId, setShowAuthFlow, selectedWalletConnector } = useInternalDynamicContext.useInternalDynamicContext();
83
83
  const { addedWalletsIds } = UserWalletsContext.useInternalUserWallets();
84
84
  const mergeUserAccounts = (mergeConflictResolutions) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
85
85
  const user$1 = yield user.verifyMergeUsers(environmentId, mergeConflictResolutions);
@@ -87,6 +87,10 @@ const useMergeUserAccounts = () => {
87
87
  if (walletId) {
88
88
  addedWalletsIds.current.push(walletId);
89
89
  }
90
+ const accounts = yield (selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.getConnectedAccounts());
91
+ if (accounts === null || accounts === void 0 ? void 0 : accounts.length) {
92
+ dynamicEvents.dynamicEvents.emit('triggerComputePrimaryWalletMultiWalletStateFromAccounts', { accounts });
93
+ }
90
94
  setShowAuthFlow(false);
91
95
  });
92
96
  return {
@@ -18,7 +18,7 @@ import '../../../config/ApiEndpoint.js';
18
18
  import '@dynamic-labs/multi-wallet';
19
19
  import 'react-international-phone';
20
20
  import '@dynamic-labs/store';
21
- import '../../../events/dynamicEvents.js';
21
+ import { dynamicEvents } from '../../../events/dynamicEvents.js';
22
22
  import '../../../context/DynamicContext/DynamicContext.js';
23
23
  import { useInternalDynamicContext } from '../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.js';
24
24
  import '../../../context/CaptchaContext/CaptchaContext.js';
@@ -75,7 +75,7 @@ import '../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCar
75
75
  import { verifyMergeUsers } from '../../../data/api/user/user.js';
76
76
 
77
77
  const useMergeUserAccounts = () => {
78
- const { environmentId, setShowAuthFlow } = useInternalDynamicContext();
78
+ const { environmentId, setShowAuthFlow, selectedWalletConnector } = useInternalDynamicContext();
79
79
  const { addedWalletsIds } = useInternalUserWallets();
80
80
  const mergeUserAccounts = (mergeConflictResolutions) => __awaiter(void 0, void 0, void 0, function* () {
81
81
  const user = yield verifyMergeUsers(environmentId, mergeConflictResolutions);
@@ -83,6 +83,10 @@ const useMergeUserAccounts = () => {
83
83
  if (walletId) {
84
84
  addedWalletsIds.current.push(walletId);
85
85
  }
86
+ const accounts = yield (selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.getConnectedAccounts());
87
+ if (accounts === null || accounts === void 0 ? void 0 : accounts.length) {
88
+ dynamicEvents.emit('triggerComputePrimaryWalletMultiWalletStateFromAccounts', { accounts });
89
+ }
86
90
  setShowAuthFlow(false);
87
91
  });
88
92
  return {
@@ -0,0 +1 @@
1
+ export { useRefreshUser } from './useRefreshUser';
@@ -0,0 +1,90 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var React = require('react');
7
+ require('../../../context/DynamicContext/DynamicContext.cjs');
8
+ require('@dynamic-labs/sdk-api-core');
9
+ require('../../../shared/logger.cjs');
10
+ require('@dynamic-labs/iconic');
11
+ require('@dynamic-labs/wallet-connector-core');
12
+ require('react/jsx-runtime');
13
+ require('../../../context/ViewContext/ViewContext.cjs');
14
+ require('@dynamic-labs/wallet-book');
15
+ require('../../constants/colors.cjs');
16
+ require('../../constants/values.cjs');
17
+ require('../../../shared/utils/classes/storage/localStorage.cjs');
18
+ require('../../../shared/utils/classes/storage/sessionStorage.cjs');
19
+ require('@dynamic-labs/utils');
20
+ require('../../../shared/consts/index.cjs');
21
+ require('../../../events/dynamicEvents.cjs');
22
+ require('../../../../../_virtual/_tslib.cjs');
23
+ require('../../../context/CaptchaContext/CaptchaContext.cjs');
24
+ require('../../../context/ErrorContext/ErrorContext.cjs');
25
+ require('@dynamic-labs/multi-wallet');
26
+ require('react-international-phone');
27
+ require('../../../config/ApiEndpoint.cjs');
28
+ require('@dynamic-labs/store');
29
+ require('../../../locale/locale.cjs');
30
+ var user = require('../../../data/api/user/user.cjs');
31
+ require('../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
32
+ require('../../../context/AccountExistsContext/AccountExistsContext.cjs');
33
+ require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
34
+ require('../../../context/VerificationContext/VerificationContext.cjs');
35
+ require('react-dom');
36
+ require('../../../context/WalletContext/WalletContext.cjs');
37
+ require('../../../context/ThemeContext/ThemeContext.cjs');
38
+ require('../useUserUpdateRequest/useUpdateUser/userFieldsSchema.cjs');
39
+ require('@dynamic-labs/types');
40
+ require('../../../context/LoadingContext/LoadingContext.cjs');
41
+ require('yup');
42
+ require('../../../context/MockContext/MockContext.cjs');
43
+ require('../../../views/CollectUserDataView/useFields.cjs');
44
+ require('../../../context/FieldsStateContext/FieldsStateContext.cjs');
45
+ require('../../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
46
+ require('@dynamic-labs/rpc-providers');
47
+ require('react-i18next');
48
+ require('../../../components/Accordion/components/AccordionItem/AccordionItem.cjs');
49
+ require('../../../components/Alert/Alert.cjs');
50
+ require('../../../components/ShadowDOM/ShadowDOM.cjs');
51
+ require('../../../components/IconButton/IconButton.cjs');
52
+ require('../../../components/InlineWidget/InlineWidget.cjs');
53
+ require('../../../components/Input/Input.cjs');
54
+ require('../../../components/IsBrowser/IsBrowser.cjs');
55
+ require('../../../components/MenuList/Dropdown/Dropdown.cjs');
56
+ require('../../../components/Transition/ZoomTransition/ZoomTransition.cjs');
57
+ require('../../../components/Transition/SlideInUpTransition/SlideInUpTransition.cjs');
58
+ require('../../../components/Transition/OpacityTransition/OpacityTransition.cjs');
59
+ require('../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.cjs');
60
+ require('../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
61
+ require('../../../components/Popper/Popper/Popper.cjs');
62
+ require('../../../components/Popper/PopperContext/PopperContext.cjs');
63
+ require('react-focus-lock');
64
+ require('qrcode');
65
+ require('formik');
66
+ require('../../../views/WalletList/WalletList.cjs');
67
+ require('../../../context/SocialRedirectContext/SocialRedirectContext.cjs');
68
+ require('../../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
69
+ require('@hcaptcha/react-hcaptcha');
70
+ require('../../../context/FooterAnimationContext/index.cjs');
71
+ require('../../../context/WalletGroupContext/WalletGroupContext.cjs');
72
+ require('../../../context/MfaSettingsContext/MfaSettingsContext.cjs');
73
+ require('../../../context/IpConfigurationContext/IpConfigurationContext.cjs');
74
+ require('../../../context/PasskeyContext/PasskeyContext.cjs');
75
+ require('../../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.cjs');
76
+ require('../../../widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
77
+ require('../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
78
+ require('../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
79
+ var useInternalDynamicContext = require('../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
80
+
81
+ /**
82
+ * Refresh user state
83
+ * @returns A callback function that can be used to refresh the user state
84
+ */
85
+ const useRefreshUser = () => {
86
+ const { environmentId } = useInternalDynamicContext.useInternalDynamicContext();
87
+ return React.useCallback(() => user.refreshUserJwt({ environmentId }), [environmentId]);
88
+ };
89
+
90
+ exports.useRefreshUser = useRefreshUser;
@@ -0,0 +1,8 @@
1
+ import { UserProfile } from '@dynamic-labs/types';
2
+ type RefreshUserCallback = () => Promise<UserProfile | undefined>;
3
+ /**
4
+ * Refresh user state
5
+ * @returns A callback function that can be used to refresh the user state
6
+ */
7
+ export declare const useRefreshUser: () => RefreshUserCallback;
8
+ export {};
@@ -0,0 +1,86 @@
1
+ 'use client'
2
+ import { useCallback } from 'react';
3
+ import '../../../context/DynamicContext/DynamicContext.js';
4
+ import '@dynamic-labs/sdk-api-core';
5
+ import '../../../shared/logger.js';
6
+ import '@dynamic-labs/iconic';
7
+ import '@dynamic-labs/wallet-connector-core';
8
+ import 'react/jsx-runtime';
9
+ import '../../../context/ViewContext/ViewContext.js';
10
+ import '@dynamic-labs/wallet-book';
11
+ import '../../constants/colors.js';
12
+ import '../../constants/values.js';
13
+ import '../../../shared/utils/classes/storage/localStorage.js';
14
+ import '../../../shared/utils/classes/storage/sessionStorage.js';
15
+ import '@dynamic-labs/utils';
16
+ import '../../../shared/consts/index.js';
17
+ import '../../../events/dynamicEvents.js';
18
+ import '../../../../../_virtual/_tslib.js';
19
+ import '../../../context/CaptchaContext/CaptchaContext.js';
20
+ import '../../../context/ErrorContext/ErrorContext.js';
21
+ import '@dynamic-labs/multi-wallet';
22
+ import 'react-international-phone';
23
+ import '../../../config/ApiEndpoint.js';
24
+ import '@dynamic-labs/store';
25
+ import '../../../locale/locale.js';
26
+ import { refreshUserJwt } from '../../../data/api/user/user.js';
27
+ import '../../../context/AccessDeniedContext/AccessDeniedContext.js';
28
+ import '../../../context/AccountExistsContext/AccountExistsContext.js';
29
+ import '../../../context/UserWalletsContext/UserWalletsContext.js';
30
+ import '../../../context/VerificationContext/VerificationContext.js';
31
+ import 'react-dom';
32
+ import '../../../context/WalletContext/WalletContext.js';
33
+ import '../../../context/ThemeContext/ThemeContext.js';
34
+ import '../useUserUpdateRequest/useUpdateUser/userFieldsSchema.js';
35
+ import '@dynamic-labs/types';
36
+ import '../../../context/LoadingContext/LoadingContext.js';
37
+ import 'yup';
38
+ import '../../../context/MockContext/MockContext.js';
39
+ import '../../../views/CollectUserDataView/useFields.js';
40
+ import '../../../context/FieldsStateContext/FieldsStateContext.js';
41
+ import '../../../context/UserFieldEditorContext/UserFieldEditorContext.js';
42
+ import '@dynamic-labs/rpc-providers';
43
+ import 'react-i18next';
44
+ import '../../../components/Accordion/components/AccordionItem/AccordionItem.js';
45
+ import '../../../components/Alert/Alert.js';
46
+ import '../../../components/ShadowDOM/ShadowDOM.js';
47
+ import '../../../components/IconButton/IconButton.js';
48
+ import '../../../components/InlineWidget/InlineWidget.js';
49
+ import '../../../components/Input/Input.js';
50
+ import '../../../components/IsBrowser/IsBrowser.js';
51
+ import '../../../components/MenuList/Dropdown/Dropdown.js';
52
+ import '../../../components/Transition/ZoomTransition/ZoomTransition.js';
53
+ import '../../../components/Transition/SlideInUpTransition/SlideInUpTransition.js';
54
+ import '../../../components/Transition/OpacityTransition/OpacityTransition.js';
55
+ import '../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.js';
56
+ import '../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.js';
57
+ import '../../../components/Popper/Popper/Popper.js';
58
+ import '../../../components/Popper/PopperContext/PopperContext.js';
59
+ import 'react-focus-lock';
60
+ import 'qrcode';
61
+ import 'formik';
62
+ import '../../../views/WalletList/WalletList.js';
63
+ import '../../../context/SocialRedirectContext/SocialRedirectContext.js';
64
+ import '../../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.js';
65
+ import '@hcaptcha/react-hcaptcha';
66
+ import '../../../context/FooterAnimationContext/index.js';
67
+ import '../../../context/WalletGroupContext/WalletGroupContext.js';
68
+ import '../../../context/MfaSettingsContext/MfaSettingsContext.js';
69
+ import '../../../context/IpConfigurationContext/IpConfigurationContext.js';
70
+ import '../../../context/PasskeyContext/PasskeyContext.js';
71
+ import '../../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.js';
72
+ import '../../../widgets/DynamicWidget/context/DynamicWidgetContext.js';
73
+ import '../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.js';
74
+ import '../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js';
75
+ import { useInternalDynamicContext } from '../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.js';
76
+
77
+ /**
78
+ * Refresh user state
79
+ * @returns A callback function that can be used to refresh the user state
80
+ */
81
+ const useRefreshUser = () => {
82
+ const { environmentId } = useInternalDynamicContext();
83
+ return useCallback(() => refreshUserJwt({ environmentId }), [environmentId]);
84
+ };
85
+
86
+ export { useRefreshUser };
@@ -0,0 +1 @@
1
+ export * from './useSwitchNetwork';
@@ -0,0 +1,26 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../../../../../_virtual/_tslib.cjs');
7
+ var React = require('react');
8
+ var useDynamicContext = require('../../../context/DynamicContext/useDynamicContext/useDynamicContext.cjs');
9
+ require('../../../context/DynamicContext/DynamicContext.cjs');
10
+ var ViewContext = require('../../../context/ViewContext/ViewContext.cjs');
11
+
12
+ const useSwitchNetwork = () => {
13
+ const { setShowAuthFlow } = useDynamicContext.useDynamicContext();
14
+ const { setView } = ViewContext.useViewContext();
15
+ const switchNetwork = React.useCallback((_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ wallet, network, }) {
16
+ if (wallet.connector.switchNetworkOnlyFromWallet) {
17
+ setShowAuthFlow(true);
18
+ setView('network-not-supported-manual');
19
+ return;
20
+ }
21
+ yield wallet.connector.switchNetwork({ networkChainId: network });
22
+ }), [setShowAuthFlow, setView]);
23
+ return switchNetwork;
24
+ };
25
+
26
+ exports.useSwitchNetwork = useSwitchNetwork;
@@ -0,0 +1,5 @@
1
+ import { Wallet } from '../../../shared';
2
+ export declare const useSwitchNetwork: () => ({ wallet, network, }: {
3
+ wallet: Wallet;
4
+ network: number | string;
5
+ }) => Promise<void>;
@@ -0,0 +1,22 @@
1
+ 'use client'
2
+ import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
+ import { useCallback } from 'react';
4
+ import { useDynamicContext } from '../../../context/DynamicContext/useDynamicContext/useDynamicContext.js';
5
+ import '../../../context/DynamicContext/DynamicContext.js';
6
+ import { useViewContext } from '../../../context/ViewContext/ViewContext.js';
7
+
8
+ const useSwitchNetwork = () => {
9
+ const { setShowAuthFlow } = useDynamicContext();
10
+ const { setView } = useViewContext();
11
+ const switchNetwork = useCallback((_a) => __awaiter(void 0, [_a], void 0, function* ({ wallet, network, }) {
12
+ if (wallet.connector.switchNetworkOnlyFromWallet) {
13
+ setShowAuthFlow(true);
14
+ setView('network-not-supported-manual');
15
+ return;
16
+ }
17
+ yield wallet.connector.switchNetwork({ networkChainId: network });
18
+ }), [setShowAuthFlow, setView]);
19
+ return switchNetwork;
20
+ };
21
+
22
+ export { useSwitchNetwork };
@@ -80,6 +80,7 @@ require('../../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWi
80
80
  require('../../../widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
81
81
  require('../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
82
82
  require('../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
83
+ var logVerboseTroubleshootingMessage = require('../../functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.cjs');
83
84
 
84
85
  const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOptions, multiWalletWidgetState, setDesktopUri, setMultiWalletWidgetState, setQrcodeUri, primaryWalletId, setPrimaryWalletId, user, canHaveMultipleWalletsConnected, }) => {
85
86
  const [showQrcodeModal, setShowQrcodeModal] = React.useState(false);
@@ -93,6 +94,7 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
93
94
  walletConnectorOptions,
94
95
  });
95
96
  }, [user, primaryWalletId, walletConnectorOptions]);
97
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('linkedWallets', linkedWallets);
96
98
  const walletsBasedOnAuthMode = React.useMemo(() => {
97
99
  // Before signing the first message we are using connected wallets list
98
100
  // This is because we want the first connected wallet to have events applied by useWalletEventListeners
@@ -112,6 +114,7 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
112
114
  }
113
115
  return connectedWallets !== null && connectedWallets !== void 0 ? connectedWallets : [];
114
116
  }, [authMode, connectedWallets, linkedWallets, user]);
117
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('walletsBasedOnAuthMode', walletsBasedOnAuthMode);
115
118
  /**
116
119
  * This useEffect is temporary.
117
120
  * While the wallet connectors don't use the event emitter, we need to manually
@@ -124,16 +127,14 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
124
127
  }), [walletsBasedOnAuthMode]);
125
128
  const { connectedWalletsMap, didConnectedStateLoad } = useWalletsConnectionState.useWalletsConnectionState(walletsBasedOnAuthMode);
126
129
  const wallets = React.useMemo(() => walletsBasedOnAuthMode.map((wallet) => (Object.assign(Object.assign({}, wallet), { connected: Boolean(connectedWalletsMap[getWalletIdentifier.getWalletIdentifier(wallet)]) }))), [connectedWalletsMap, walletsBasedOnAuthMode]);
130
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('wallets', wallets);
131
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('didConnectedStateLoad', didConnectedStateLoad);
127
132
  const { setUserWallets } = UserWalletsContext.useInternalUserWallets();
128
133
  // Keep userWallets in sync whenever linkedWallets changes
129
134
  React.useEffect(() => {
130
- // we don't want to set the user wallets until their connected states have been computed
131
- // but that doesn't matter if the wallets list is empty, and if we return early when
132
- // the wallets list is empty, we'll never set the user wallets correctly after logout
133
- if (!didConnectedStateLoad.current && wallets.length)
134
- return;
135
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('[useWalletConnectors] will call setUserWallets', wallets);
135
136
  setUserWallets((userWallets) => updateUserWalletsFromLinkedWallets.updateUserWalletsFromLinkedWallets(userWallets, wallets));
136
- }, [didConnectedStateLoad, setUserWallets, wallets]);
137
+ }, [setUserWallets, wallets]);
137
138
  const primaryWallet = React.useMemo(() => { var _a; return (_a = wallets.find((wallet) => wallet.id === primaryWalletId)) !== null && _a !== void 0 ? _a : null; }, [primaryWalletId, wallets]);
138
139
  const secondaryWallets = React.useMemo(() => canHaveMultipleWalletsConnected
139
140
  ? wallets.filter((wallet) => wallet.id !== primaryWalletId)
@@ -76,6 +76,7 @@ import '../../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWid
76
76
  import '../../../widgets/DynamicWidget/context/DynamicWidgetContext.js';
77
77
  import '../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.js';
78
78
  import '../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js';
79
+ import { logVerboseTroubleshootingMessage } from '../../functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.js';
79
80
 
80
81
  const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOptions, multiWalletWidgetState, setDesktopUri, setMultiWalletWidgetState, setQrcodeUri, primaryWalletId, setPrimaryWalletId, user, canHaveMultipleWalletsConnected, }) => {
81
82
  const [showQrcodeModal, setShowQrcodeModal] = useState(false);
@@ -89,6 +90,7 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
89
90
  walletConnectorOptions,
90
91
  });
91
92
  }, [user, primaryWalletId, walletConnectorOptions]);
93
+ logVerboseTroubleshootingMessage('linkedWallets', linkedWallets);
92
94
  const walletsBasedOnAuthMode = useMemo(() => {
93
95
  // Before signing the first message we are using connected wallets list
94
96
  // This is because we want the first connected wallet to have events applied by useWalletEventListeners
@@ -108,6 +110,7 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
108
110
  }
109
111
  return connectedWallets !== null && connectedWallets !== void 0 ? connectedWallets : [];
110
112
  }, [authMode, connectedWallets, linkedWallets, user]);
113
+ logVerboseTroubleshootingMessage('walletsBasedOnAuthMode', walletsBasedOnAuthMode);
111
114
  /**
112
115
  * This useEffect is temporary.
113
116
  * While the wallet connectors don't use the event emitter, we need to manually
@@ -120,16 +123,14 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
120
123
  }), [walletsBasedOnAuthMode]);
121
124
  const { connectedWalletsMap, didConnectedStateLoad } = useWalletsConnectionState(walletsBasedOnAuthMode);
122
125
  const wallets = useMemo(() => walletsBasedOnAuthMode.map((wallet) => (Object.assign(Object.assign({}, wallet), { connected: Boolean(connectedWalletsMap[getWalletIdentifier(wallet)]) }))), [connectedWalletsMap, walletsBasedOnAuthMode]);
126
+ logVerboseTroubleshootingMessage('wallets', wallets);
127
+ logVerboseTroubleshootingMessage('didConnectedStateLoad', didConnectedStateLoad);
123
128
  const { setUserWallets } = useInternalUserWallets();
124
129
  // Keep userWallets in sync whenever linkedWallets changes
125
130
  useEffect(() => {
126
- // we don't want to set the user wallets until their connected states have been computed
127
- // but that doesn't matter if the wallets list is empty, and if we return early when
128
- // the wallets list is empty, we'll never set the user wallets correctly after logout
129
- if (!didConnectedStateLoad.current && wallets.length)
130
- return;
131
+ logVerboseTroubleshootingMessage('[useWalletConnectors] will call setUserWallets', wallets);
131
132
  setUserWallets((userWallets) => updateUserWalletsFromLinkedWallets(userWallets, wallets));
132
- }, [didConnectedStateLoad, setUserWallets, wallets]);
133
+ }, [setUserWallets, wallets]);
133
134
  const primaryWallet = useMemo(() => { var _a; return (_a = wallets.find((wallet) => wallet.id === primaryWalletId)) !== null && _a !== void 0 ? _a : null; }, [primaryWalletId, wallets]);
134
135
  const secondaryWallets = useMemo(() => canHaveMultipleWalletsConnected
135
136
  ? wallets.filter((wallet) => wallet.id !== primaryWalletId)