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

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 (86) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +10 -10
  5. package/src/index.cjs +9 -1
  6. package/src/index.d.ts +4 -1
  7. package/src/index.js +5 -1
  8. package/src/lib/Main.cjs +2 -0
  9. package/src/lib/Main.js +2 -0
  10. package/src/lib/context/DynamicContext/DynamicContext.cjs +15 -8
  11. package/src/lib/context/DynamicContext/DynamicContext.js +16 -9
  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/ReinitializeContext/ReinitializeContextProvider.cjs +113 -0
  19. package/src/lib/context/ReinitializeContext/ReinitializeContextProvider.d.ts +22 -0
  20. package/src/lib/context/ReinitializeContext/ReinitializeContextProvider.js +107 -0
  21. package/src/lib/context/ReinitializeContext/index.d.ts +1 -0
  22. package/src/lib/context/WalletContext/WalletContext.cjs +1 -1
  23. package/src/lib/context/WalletContext/WalletContext.js +1 -1
  24. package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.cjs +128 -0
  25. package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.d.ts +6 -0
  26. package/src/lib/context/WidgetRegistry/WidgetRegistryContextProvider.js +122 -0
  27. package/src/lib/context/WidgetRegistry/index.d.ts +1 -0
  28. package/src/lib/data/api/wallets/wallets.cjs +2 -1
  29. package/src/lib/data/api/wallets/wallets.d.ts +2 -1
  30. package/src/lib/data/api/wallets/wallets.js +2 -1
  31. package/src/lib/events/dynamicEvents.d.ts +2 -1
  32. package/src/lib/events/multiWallet.d.ts +6 -0
  33. package/src/lib/store/index.d.ts +1 -1
  34. package/src/lib/store/store.cjs +6 -0
  35. package/src/lib/store/store.d.ts +1 -0
  36. package/src/lib/store/store.js +6 -1
  37. package/src/lib/styles/index.shadow.cjs +1 -1
  38. package/src/lib/styles/index.shadow.js +1 -1
  39. package/src/lib/utils/functions/index.d.ts +1 -0
  40. package/src/lib/utils/functions/logVerboseTroubleshootingMessage/index.d.ts +1 -0
  41. package/src/lib/utils/functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.cjs +28 -0
  42. package/src/lib/utils/functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.d.ts +1 -0
  43. package/src/lib/utils/functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.js +24 -0
  44. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.cjs +20 -0
  45. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.d.ts +2 -2
  46. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.js +20 -1
  47. package/src/lib/utils/hooks/index.d.ts +1 -0
  48. package/src/lib/utils/hooks/multiWallet/useVerifyOnAwaitingSignature/useVerifyOnAwaitingSignature.cjs +39 -13
  49. package/src/lib/utils/hooks/multiWallet/useVerifyOnAwaitingSignature/useVerifyOnAwaitingSignature.js +40 -14
  50. package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.cjs +3 -1
  51. package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.js +3 -1
  52. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.cjs +6 -2
  53. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.js +6 -2
  54. package/src/lib/utils/hooks/useRefreshUser/index.d.ts +1 -0
  55. package/src/lib/utils/hooks/useRefreshUser/useRefreshUser.cjs +90 -0
  56. package/src/lib/utils/hooks/useRefreshUser/useRefreshUser.d.ts +8 -0
  57. package/src/lib/utils/hooks/useRefreshUser/useRefreshUser.js +86 -0
  58. package/src/lib/utils/hooks/useSwitchNetwork/index.d.ts +1 -0
  59. package/src/lib/utils/hooks/useSwitchNetwork/useSwitchNetwork.cjs +26 -0
  60. package/src/lib/utils/hooks/useSwitchNetwork/useSwitchNetwork.d.ts +5 -0
  61. package/src/lib/utils/hooks/useSwitchNetwork/useSwitchNetwork.js +22 -0
  62. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.cjs +7 -6
  63. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.js +7 -6
  64. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.cjs +118 -25
  65. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.js +119 -26
  66. package/src/lib/utils/hooks/useWalletItemActions/useWalletItemActions.cjs +20 -1
  67. package/src/lib/utils/hooks/useWalletItemActions/useWalletItemActions.js +20 -1
  68. package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.cjs +4 -14
  69. package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.js +5 -15
  70. package/src/lib/views/TransactionConfirmationView/TransactionConfirmationView.cjs +3 -1
  71. package/src/lib/views/TransactionConfirmationView/TransactionConfirmationView.js +3 -1
  72. package/src/lib/views/WalletList/WalletList.cjs +1 -3
  73. package/src/lib/views/WalletList/WalletList.js +1 -3
  74. package/src/lib/views/WalletList/hooks/useTabState.cjs +6 -81
  75. package/src/lib/views/WalletList/hooks/useTabState.d.ts +6 -3
  76. package/src/lib/views/WalletList/hooks/useTabState.js +6 -81
  77. package/src/lib/widgets/DynamicMultiWalletPromptsWidget/DynamicMultiWalletPromptsWidget.cjs +5 -5
  78. package/src/lib/widgets/DynamicMultiWalletPromptsWidget/DynamicMultiWalletPromptsWidget.js +5 -5
  79. package/src/lib/widgets/DynamicWidget/components/DynamicUserProfile/DynamicUserProfile.cjs +4 -1
  80. package/src/lib/widgets/DynamicWidget/components/DynamicUserProfile/DynamicUserProfile.js +4 -1
  81. package/src/lib/widgets/DynamicWidget/prompts/PrimaryNotConnectedModal/PrimaryNotConnectedModal.cjs +1 -1
  82. package/src/lib/widgets/DynamicWidget/prompts/PrimaryNotConnectedModal/PrimaryNotConnectedModal.js +1 -1
  83. package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.cjs +0 -22
  84. package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.d.ts +0 -2
  85. package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.js +0 -18
  86. 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 | keyof import("../../../../events/multiWallet").MultiWalletInternalEvents>(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';
@@ -3,6 +3,7 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
+ var _tslib = require('../../../../../../_virtual/_tslib.cjs');
6
7
  var React = require('react');
7
8
  require('../../../../context/DynamicContext/DynamicContext.cjs');
8
9
  require('@dynamic-labs/sdk-api-core');
@@ -18,8 +19,7 @@ require('../../../../shared/utils/classes/storage/localStorage.cjs');
18
19
  require('../../../../shared/utils/classes/storage/sessionStorage.cjs');
19
20
  require('@dynamic-labs/utils');
20
21
  require('../../../../shared/consts/index.cjs');
21
- require('../../../../events/dynamicEvents.cjs');
22
- require('../../../../../../_virtual/_tslib.cjs');
22
+ var useDynamicEvents = require('../../events/useDynamicEvents/useDynamicEvents.cjs');
23
23
  var useConnectAndSign = require('../../authenticationHooks/useConnectAndSign/useConnectAndSign.cjs');
24
24
  require('../../../../context/ErrorContext/ErrorContext.cjs');
25
25
  require('../../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
@@ -31,6 +31,7 @@ require('react-international-phone');
31
31
  var requiresTwoStepAuthentication = require('../../../functions/requiresTwoStepAuthentication/requiresTwoStepAuthentication.cjs');
32
32
  require('@dynamic-labs/store');
33
33
  require('../../../../locale/locale.cjs');
34
+ require('../../../../events/dynamicEvents.cjs');
34
35
  require('../../../../context/CaptchaContext/CaptchaContext.cjs');
35
36
  require('../../../../context/VerificationContext/VerificationContext.cjs');
36
37
  require('react-dom');
@@ -82,29 +83,54 @@ var useInternalDynamicContext = require('../../../../context/DynamicContext/useD
82
83
  const useVerifyOnAwaitingSignature = () => {
83
84
  const { awaitingSignatureState, multiWalletWidgetState, setMultiWalletWidgetState, legacyIsVerifying, setLegacyIsVerifying, selectedWalletConnector, } = useInternalDynamicContext.useInternalDynamicContext();
84
85
  const triggerConnectAndSign = useConnectAndSign.useConnectAndSign();
86
+ // this is to prevent calling runConnectAndSign multiple times
87
+ // due to changes in legacyIsVerifying
88
+ const isVerifying = React.useRef(false);
89
+ const runConnectAndSign = React.useCallback(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
90
+ logger.logger.debug('runConnectAndSign', {
91
+ selectedWalletConnector,
92
+ });
93
+ if (!selectedWalletConnector) {
94
+ return;
95
+ }
96
+ isVerifying.current = true;
97
+ setLegacyIsVerifying(true);
98
+ try {
99
+ yield triggerConnectAndSign({
100
+ walletConnector: selectedWalletConnector,
101
+ });
102
+ }
103
+ catch (e) {
104
+ logger.logger.error(e);
105
+ }
106
+ setMultiWalletWidgetState('idle');
107
+ setLegacyIsVerifying(false);
108
+ isVerifying.current = false;
109
+ }), [
110
+ selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.key,
111
+ setLegacyIsVerifying,
112
+ setMultiWalletWidgetState,
113
+ triggerConnectAndSign,
114
+ ]);
85
115
  React.useEffect(() => {
86
116
  if (!legacyIsVerifying &&
117
+ !isVerifying.current &&
87
118
  multiWalletWidgetState === 'awaiting_signature' &&
88
119
  selectedWalletConnector &&
89
120
  awaitingSignatureState === 'linking_new_wallet' &&
90
121
  !requiresTwoStepAuthentication.requiresTwoStepAuthentication(selectedWalletConnector)) {
91
- setLegacyIsVerifying(true);
92
- triggerConnectAndSign({ walletConnector: selectedWalletConnector })
93
- .catch((e) => {
94
- logger.logger.error(e);
95
- })
96
- .finally(() => {
97
- setMultiWalletWidgetState('idle');
98
- setLegacyIsVerifying(false);
99
- });
122
+ runConnectAndSign();
100
123
  }
101
124
  }, [
125
+ runConnectAndSign,
102
126
  awaitingSignatureState,
103
- selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.key,
127
+ legacyIsVerifying,
104
128
  multiWalletWidgetState,
129
+ selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.key,
130
+ setLegacyIsVerifying,
105
131
  setMultiWalletWidgetState,
106
- legacyIsVerifying,
107
132
  ]);
133
+ useDynamicEvents.useInternalDynamicEvents('triggerConnectAndSign', runConnectAndSign);
108
134
  };
109
135
 
110
136
  exports.useVerifyOnAwaitingSignature = useVerifyOnAwaitingSignature;
@@ -1,5 +1,6 @@
1
1
  'use client'
2
- import { useEffect } from 'react';
2
+ import { __awaiter } from '../../../../../../_virtual/_tslib.js';
3
+ import { useRef, useCallback, useEffect } from 'react';
3
4
  import '../../../../context/DynamicContext/DynamicContext.js';
4
5
  import '@dynamic-labs/sdk-api-core';
5
6
  import { logger } from '../../../../shared/logger.js';
@@ -14,8 +15,7 @@ import '../../../../shared/utils/classes/storage/localStorage.js';
14
15
  import '../../../../shared/utils/classes/storage/sessionStorage.js';
15
16
  import '@dynamic-labs/utils';
16
17
  import '../../../../shared/consts/index.js';
17
- import '../../../../events/dynamicEvents.js';
18
- import '../../../../../../_virtual/_tslib.js';
18
+ import { useInternalDynamicEvents } from '../../events/useDynamicEvents/useDynamicEvents.js';
19
19
  import { useConnectAndSign } from '../../authenticationHooks/useConnectAndSign/useConnectAndSign.js';
20
20
  import '../../../../context/ErrorContext/ErrorContext.js';
21
21
  import '../../../../context/AccessDeniedContext/AccessDeniedContext.js';
@@ -27,6 +27,7 @@ import 'react-international-phone';
27
27
  import { requiresTwoStepAuthentication } from '../../../functions/requiresTwoStepAuthentication/requiresTwoStepAuthentication.js';
28
28
  import '@dynamic-labs/store';
29
29
  import '../../../../locale/locale.js';
30
+ import '../../../../events/dynamicEvents.js';
30
31
  import '../../../../context/CaptchaContext/CaptchaContext.js';
31
32
  import '../../../../context/VerificationContext/VerificationContext.js';
32
33
  import 'react-dom';
@@ -78,29 +79,54 @@ import { useInternalDynamicContext } from '../../../../context/DynamicContext/us
78
79
  const useVerifyOnAwaitingSignature = () => {
79
80
  const { awaitingSignatureState, multiWalletWidgetState, setMultiWalletWidgetState, legacyIsVerifying, setLegacyIsVerifying, selectedWalletConnector, } = useInternalDynamicContext();
80
81
  const triggerConnectAndSign = useConnectAndSign();
82
+ // this is to prevent calling runConnectAndSign multiple times
83
+ // due to changes in legacyIsVerifying
84
+ const isVerifying = useRef(false);
85
+ const runConnectAndSign = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
86
+ logger.debug('runConnectAndSign', {
87
+ selectedWalletConnector,
88
+ });
89
+ if (!selectedWalletConnector) {
90
+ return;
91
+ }
92
+ isVerifying.current = true;
93
+ setLegacyIsVerifying(true);
94
+ try {
95
+ yield triggerConnectAndSign({
96
+ walletConnector: selectedWalletConnector,
97
+ });
98
+ }
99
+ catch (e) {
100
+ logger.error(e);
101
+ }
102
+ setMultiWalletWidgetState('idle');
103
+ setLegacyIsVerifying(false);
104
+ isVerifying.current = false;
105
+ }), [
106
+ selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.key,
107
+ setLegacyIsVerifying,
108
+ setMultiWalletWidgetState,
109
+ triggerConnectAndSign,
110
+ ]);
81
111
  useEffect(() => {
82
112
  if (!legacyIsVerifying &&
113
+ !isVerifying.current &&
83
114
  multiWalletWidgetState === 'awaiting_signature' &&
84
115
  selectedWalletConnector &&
85
116
  awaitingSignatureState === 'linking_new_wallet' &&
86
117
  !requiresTwoStepAuthentication(selectedWalletConnector)) {
87
- setLegacyIsVerifying(true);
88
- triggerConnectAndSign({ walletConnector: selectedWalletConnector })
89
- .catch((e) => {
90
- logger.error(e);
91
- })
92
- .finally(() => {
93
- setMultiWalletWidgetState('idle');
94
- setLegacyIsVerifying(false);
95
- });
118
+ runConnectAndSign();
96
119
  }
97
120
  }, [
121
+ runConnectAndSign,
98
122
  awaitingSignatureState,
99
- selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.key,
123
+ legacyIsVerifying,
100
124
  multiWalletWidgetState,
125
+ selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.key,
126
+ setLegacyIsVerifying,
101
127
  setMultiWalletWidgetState,
102
- legacyIsVerifying,
103
128
  ]);
129
+ useInternalDynamicEvents('triggerConnectAndSign', runConnectAndSign);
104
130
  };
105
131
 
106
132
  export { useVerifyOnAwaitingSignature };
@@ -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';