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

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 (34) 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 +4 -0
  6. package/src/index.d.ts +2 -0
  7. package/src/index.js +2 -0
  8. package/src/lib/Main.cjs +1 -0
  9. package/src/lib/Main.js +1 -0
  10. package/src/lib/components/TransactionOriginDestination/TransactionOriginDestination.d.ts +0 -11
  11. package/src/lib/context/DynamicContext/DynamicContext.cjs +2 -1
  12. package/src/lib/context/DynamicContext/DynamicContext.js +3 -2
  13. package/src/lib/context/ReinitializeContext/ReinitializeContextProvider.cjs +113 -0
  14. package/src/lib/context/ReinitializeContext/ReinitializeContextProvider.d.ts +22 -0
  15. package/src/lib/context/ReinitializeContext/ReinitializeContextProvider.js +107 -0
  16. package/src/lib/context/ReinitializeContext/index.d.ts +1 -0
  17. package/src/lib/context/WalletContext/WalletContext.cjs +1 -1
  18. package/src/lib/context/WalletContext/WalletContext.js +1 -1
  19. package/src/lib/data/api/externalAuth/externalAuth.cjs +44 -0
  20. package/src/lib/data/api/externalAuth/externalAuth.js +40 -0
  21. package/src/lib/events/multiWallet.d.ts +1 -0
  22. package/src/lib/store/index.d.ts +1 -1
  23. package/src/lib/store/store.cjs +6 -0
  24. package/src/lib/store/store.d.ts +1 -0
  25. package/src/lib/store/store.js +6 -1
  26. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.d.ts +1 -1
  27. package/src/lib/utils/hooks/multiWallet/useVerifyOnAwaitingSignature/useVerifyOnAwaitingSignature.cjs +39 -13
  28. package/src/lib/utils/hooks/multiWallet/useVerifyOnAwaitingSignature/useVerifyOnAwaitingSignature.js +40 -14
  29. package/src/lib/utils/hooks/useExternalAuth/useExternalAuth.cjs +115 -0
  30. package/src/lib/utils/hooks/useExternalAuth/useExternalAuth.js +111 -0
  31. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.cjs +76 -0
  32. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.js +76 -0
  33. package/src/lib/utils/hooks/useWalletItemActions/useWalletItemActions.cjs +20 -1
  34. package/src/lib/utils/hooks/useWalletItemActions/useWalletItemActions.js +20 -1
@@ -13,6 +13,11 @@ const getStore = () => {
13
13
  }
14
14
  return store;
15
15
  };
16
+ const removeStoreInstance = () => {
17
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
18
+ // @ts-ignore
19
+ store = undefined;
20
+ };
16
21
  const initializeStore = ({ storageSuffix, environmentId, }) => {
17
22
  if (store) {
18
23
  return;
@@ -41,4 +46,4 @@ const getStorage = () => {
41
46
  return window.localStorage;
42
47
  };
43
48
 
44
- export { getStore, initializeStore };
49
+ export { getStore, initializeStore, removeStoreInstance };
@@ -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 | "triggerComputePrimaryWalletMultiWalletStateFromAccounts">(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
7
  export declare const useDynamicEvents: <E extends "logout" | "emailVerificationResult" | "walletAdded" | "embeddedWalletCreated">(event: E, listener: DynamicEventListener<E>) => void;
8
8
  export {};
@@ -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 };
@@ -0,0 +1,115 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../../../../../_virtual/_tslib.cjs');
7
+ require('@dynamic-labs/utils');
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('react');
15
+ require('@dynamic-labs/wallet-book');
16
+ require('../../constants/colors.cjs');
17
+ require('../../constants/values.cjs');
18
+ require('../../../shared/utils/classes/storage/localStorage.cjs');
19
+ require('../../../shared/utils/classes/storage/sessionStorage.cjs');
20
+ require('../../../shared/consts/index.cjs');
21
+ require('../../../config/ApiEndpoint.cjs');
22
+ require('@dynamic-labs/multi-wallet');
23
+ require('react-international-phone');
24
+ require('@dynamic-labs/store');
25
+ var dynamicEvents = require('../../../events/dynamicEvents.cjs');
26
+ require('../../../context/DynamicContext/DynamicContext.cjs');
27
+ var useInternalDynamicContext = require('../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
28
+ require('../../../context/CaptchaContext/CaptchaContext.cjs');
29
+ require('../../../context/ErrorContext/ErrorContext.cjs');
30
+ require('../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
31
+ require('../../../context/AccountExistsContext/AccountExistsContext.cjs');
32
+ require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
33
+ require('../../../context/VerificationContext/VerificationContext.cjs');
34
+ require('react-dom');
35
+ require('../../../context/WalletContext/WalletContext.cjs');
36
+ require('../../../context/ThemeContext/ThemeContext.cjs');
37
+ require('../useUserUpdateRequest/useUpdateUser/userFieldsSchema.cjs');
38
+ require('@dynamic-labs/types');
39
+ require('../../../context/LoadingContext/LoadingContext.cjs');
40
+ require('yup');
41
+ require('../../../context/MockContext/MockContext.cjs');
42
+ require('../../../views/CollectUserDataView/useFields.cjs');
43
+ require('../../../context/FieldsStateContext/FieldsStateContext.cjs');
44
+ require('../../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
45
+ require('@dynamic-labs/rpc-providers');
46
+ require('react-i18next');
47
+ require('../../../components/Accordion/components/AccordionItem/AccordionItem.cjs');
48
+ require('../../../components/Alert/Alert.cjs');
49
+ require('../../../components/ShadowDOM/ShadowDOM.cjs');
50
+ require('../../../components/IconButton/IconButton.cjs');
51
+ require('../../../components/InlineWidget/InlineWidget.cjs');
52
+ require('../../../components/Input/Input.cjs');
53
+ require('../../../components/IsBrowser/IsBrowser.cjs');
54
+ require('../../../components/MenuList/Dropdown/Dropdown.cjs');
55
+ require('../../../components/Transition/ZoomTransition/ZoomTransition.cjs');
56
+ require('../../../components/Transition/SlideInUpTransition/SlideInUpTransition.cjs');
57
+ require('../../../components/Transition/OpacityTransition/OpacityTransition.cjs');
58
+ require('../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.cjs');
59
+ require('../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
60
+ require('../../../components/Popper/Popper/Popper.cjs');
61
+ require('../../../components/Popper/PopperContext/PopperContext.cjs');
62
+ require('react-focus-lock');
63
+ require('qrcode');
64
+ require('formik');
65
+ require('../../../views/WalletList/WalletList.cjs');
66
+ require('../../../context/SocialRedirectContext/SocialRedirectContext.cjs');
67
+ require('../../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
68
+ require('../../../locale/locale.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 externalAuth = require('../../../data/api/externalAuth/externalAuth.cjs');
80
+
81
+ const useExternalAuth = () => {
82
+ const { environmentId, setShowAuthFlow, setCallback } = useInternalDynamicContext.useInternalDynamicContext();
83
+ /**
84
+ * Uses a properly-conifigured non-Dynamic external JWT and user ID to sign-in to Dynamic.
85
+ * When successful, this should grant the user the ability to access Dynamic's functionality
86
+ * available to only signed-in users, such as wallet linking, etc.
87
+ *
88
+ * @param {string} props.externalJwt - JWT issued outside of Dynamic
89
+ * @param {string} props.externalUserId - User ID to identify the user outside of Dynamic
90
+ *
91
+ * @returns {UserProfile} - User profile for successfully signed in user
92
+ */
93
+ const signInWithExternalJwt = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ externalUserId, externalJwt, }) {
94
+ try {
95
+ const userProfile = yield externalAuth.externalAuthSignin({
96
+ environmentId,
97
+ externalJwt,
98
+ });
99
+ setCallback('authSuccess');
100
+ setShowAuthFlow(false);
101
+ return userProfile;
102
+ }
103
+ catch (e) {
104
+ dynamicEvents.dynamicEvents.emit('authFailure', {
105
+ externalUserId,
106
+ option: externalUserId,
107
+ type: 'externalAuth',
108
+ }, { error: e });
109
+ throw e;
110
+ }
111
+ });
112
+ return { signInWithExternalJwt };
113
+ };
114
+
115
+ exports.useExternalAuth = useExternalAuth;
@@ -0,0 +1,111 @@
1
+ 'use client'
2
+ import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
+ import '@dynamic-labs/utils';
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 'react';
11
+ import '@dynamic-labs/wallet-book';
12
+ import '../../constants/colors.js';
13
+ import '../../constants/values.js';
14
+ import '../../../shared/utils/classes/storage/localStorage.js';
15
+ import '../../../shared/utils/classes/storage/sessionStorage.js';
16
+ import '../../../shared/consts/index.js';
17
+ import '../../../config/ApiEndpoint.js';
18
+ import '@dynamic-labs/multi-wallet';
19
+ import 'react-international-phone';
20
+ import '@dynamic-labs/store';
21
+ import { dynamicEvents } from '../../../events/dynamicEvents.js';
22
+ import '../../../context/DynamicContext/DynamicContext.js';
23
+ import { useInternalDynamicContext } from '../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.js';
24
+ import '../../../context/CaptchaContext/CaptchaContext.js';
25
+ import '../../../context/ErrorContext/ErrorContext.js';
26
+ import '../../../context/AccessDeniedContext/AccessDeniedContext.js';
27
+ import '../../../context/AccountExistsContext/AccountExistsContext.js';
28
+ import '../../../context/UserWalletsContext/UserWalletsContext.js';
29
+ import '../../../context/VerificationContext/VerificationContext.js';
30
+ import 'react-dom';
31
+ import '../../../context/WalletContext/WalletContext.js';
32
+ import '../../../context/ThemeContext/ThemeContext.js';
33
+ import '../useUserUpdateRequest/useUpdateUser/userFieldsSchema.js';
34
+ import '@dynamic-labs/types';
35
+ import '../../../context/LoadingContext/LoadingContext.js';
36
+ import 'yup';
37
+ import '../../../context/MockContext/MockContext.js';
38
+ import '../../../views/CollectUserDataView/useFields.js';
39
+ import '../../../context/FieldsStateContext/FieldsStateContext.js';
40
+ import '../../../context/UserFieldEditorContext/UserFieldEditorContext.js';
41
+ import '@dynamic-labs/rpc-providers';
42
+ import 'react-i18next';
43
+ import '../../../components/Accordion/components/AccordionItem/AccordionItem.js';
44
+ import '../../../components/Alert/Alert.js';
45
+ import '../../../components/ShadowDOM/ShadowDOM.js';
46
+ import '../../../components/IconButton/IconButton.js';
47
+ import '../../../components/InlineWidget/InlineWidget.js';
48
+ import '../../../components/Input/Input.js';
49
+ import '../../../components/IsBrowser/IsBrowser.js';
50
+ import '../../../components/MenuList/Dropdown/Dropdown.js';
51
+ import '../../../components/Transition/ZoomTransition/ZoomTransition.js';
52
+ import '../../../components/Transition/SlideInUpTransition/SlideInUpTransition.js';
53
+ import '../../../components/Transition/OpacityTransition/OpacityTransition.js';
54
+ import '../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.js';
55
+ import '../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.js';
56
+ import '../../../components/Popper/Popper/Popper.js';
57
+ import '../../../components/Popper/PopperContext/PopperContext.js';
58
+ import 'react-focus-lock';
59
+ import 'qrcode';
60
+ import 'formik';
61
+ import '../../../views/WalletList/WalletList.js';
62
+ import '../../../context/SocialRedirectContext/SocialRedirectContext.js';
63
+ import '../../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.js';
64
+ import '../../../locale/locale.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 { externalAuthSignin } from '../../../data/api/externalAuth/externalAuth.js';
76
+
77
+ const useExternalAuth = () => {
78
+ const { environmentId, setShowAuthFlow, setCallback } = useInternalDynamicContext();
79
+ /**
80
+ * Uses a properly-conifigured non-Dynamic external JWT and user ID to sign-in to Dynamic.
81
+ * When successful, this should grant the user the ability to access Dynamic's functionality
82
+ * available to only signed-in users, such as wallet linking, etc.
83
+ *
84
+ * @param {string} props.externalJwt - JWT issued outside of Dynamic
85
+ * @param {string} props.externalUserId - User ID to identify the user outside of Dynamic
86
+ *
87
+ * @returns {UserProfile} - User profile for successfully signed in user
88
+ */
89
+ const signInWithExternalJwt = (_a) => __awaiter(void 0, [_a], void 0, function* ({ externalUserId, externalJwt, }) {
90
+ try {
91
+ const userProfile = yield externalAuthSignin({
92
+ environmentId,
93
+ externalJwt,
94
+ });
95
+ setCallback('authSuccess');
96
+ setShowAuthFlow(false);
97
+ return userProfile;
98
+ }
99
+ catch (e) {
100
+ dynamicEvents.emit('authFailure', {
101
+ externalUserId,
102
+ option: externalUserId,
103
+ type: 'externalAuth',
104
+ }, { error: e });
105
+ throw e;
106
+ }
107
+ });
108
+ return { signInWithExternalJwt };
109
+ };
110
+
111
+ export { useExternalAuth };
@@ -20,6 +20,64 @@ require('@dynamic-labs/utils');
20
20
  require('../../../shared/consts/index.cjs');
21
21
  var useDynamicEvents = require('../events/useDynamicEvents/useDynamicEvents.cjs');
22
22
  var useWalletConnectorEvent = require('../events/useWalletConnectorEvent/useWalletConnectorEvent.cjs');
23
+ require('@dynamic-labs/multi-wallet');
24
+ require('react-international-phone');
25
+ require('../../../config/ApiEndpoint.cjs');
26
+ require('@dynamic-labs/store');
27
+ require('../../../locale/locale.cjs');
28
+ require('../../../context/DynamicContext/DynamicContext.cjs');
29
+ require('../../../context/CaptchaContext/CaptchaContext.cjs');
30
+ require('../../../context/ErrorContext/ErrorContext.cjs');
31
+ require('../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
32
+ require('../../../context/AccountExistsContext/AccountExistsContext.cjs');
33
+ require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
34
+ var dynamicEvents = require('../../../events/dynamicEvents.cjs');
35
+ require('../../../context/VerificationContext/VerificationContext.cjs');
36
+ require('react-dom');
37
+ require('../../../context/WalletContext/WalletContext.cjs');
38
+ require('../../../context/ThemeContext/ThemeContext.cjs');
39
+ require('../useUserUpdateRequest/useUpdateUser/userFieldsSchema.cjs');
40
+ require('@dynamic-labs/types');
41
+ require('../../../context/LoadingContext/LoadingContext.cjs');
42
+ require('yup');
43
+ require('../../../context/MockContext/MockContext.cjs');
44
+ require('../../../views/CollectUserDataView/useFields.cjs');
45
+ require('../../../context/FieldsStateContext/FieldsStateContext.cjs');
46
+ require('../../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
47
+ require('@dynamic-labs/rpc-providers');
48
+ require('react-i18next');
49
+ require('../../../components/Accordion/components/AccordionItem/AccordionItem.cjs');
50
+ require('../../../components/Alert/Alert.cjs');
51
+ require('../../../components/ShadowDOM/ShadowDOM.cjs');
52
+ require('../../../components/IconButton/IconButton.cjs');
53
+ require('../../../components/InlineWidget/InlineWidget.cjs');
54
+ require('../../../components/Input/Input.cjs');
55
+ require('../../../components/IsBrowser/IsBrowser.cjs');
56
+ require('../../../components/MenuList/Dropdown/Dropdown.cjs');
57
+ require('../../../components/Transition/ZoomTransition/ZoomTransition.cjs');
58
+ require('../../../components/Transition/SlideInUpTransition/SlideInUpTransition.cjs');
59
+ require('../../../components/Transition/OpacityTransition/OpacityTransition.cjs');
60
+ require('../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.cjs');
61
+ require('../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
62
+ require('../../../components/Popper/Popper/Popper.cjs');
63
+ require('../../../components/Popper/PopperContext/PopperContext.cjs');
64
+ require('react-focus-lock');
65
+ require('qrcode');
66
+ require('formik');
67
+ require('../../../views/WalletList/WalletList.cjs');
68
+ require('../../../context/SocialRedirectContext/SocialRedirectContext.cjs');
69
+ require('../../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
70
+ require('@hcaptcha/react-hcaptcha');
71
+ require('../../../context/FooterAnimationContext/index.cjs');
72
+ require('../../../context/WalletGroupContext/WalletGroupContext.cjs');
73
+ require('../../../context/MfaSettingsContext/MfaSettingsContext.cjs');
74
+ require('../../../context/IpConfigurationContext/IpConfigurationContext.cjs');
75
+ require('../../../context/PasskeyContext/PasskeyContext.cjs');
76
+ require('../../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.cjs');
77
+ require('../../../widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
78
+ require('../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
79
+ require('../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
80
+ var logVerboseTroubleshootingMessage = require('../../functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.cjs');
23
81
 
24
82
  const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet, multiWalletWidgetState, primaryWallet, secondaryWallets, selectedWalletConnector, selectedWalletWithAction, setSelectedWalletConnectorKey, setSelectedWalletWithAction, setMultiWalletWidgetState, user, setPrimaryWalletId, authMode, refreshConnectedWallet, }) => {
25
83
  useWalletConnectorEvent.useWalletConnectorEvent(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, 'disconnect', () => {
@@ -34,7 +92,12 @@ const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet,
34
92
  refreshConnectedWallet(primaryWallet.id, primaryWallet.connector);
35
93
  });
36
94
  const handleAccountChangeWhenAwaitingAccountSwitch = React.useCallback((isPrimaryWallet, newAddress) => {
95
+ logger.logger.debug('handleAccountChangeWhenAwaitingAccountSwitch', {
96
+ isPrimaryWallet,
97
+ newAddress,
98
+ });
37
99
  const linkedSecondaryWallet = secondaryWallets.find((wallet) => walletConnectorCore.isSameAddress(wallet.address, newAddress, wallet.chain));
100
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('[handleAccountChangeWhenAwaitingAccountSwitch]', { linkedSecondaryWallet });
38
101
  // this means the user is linking a new account, so we need proof of ownership...
39
102
  if (!linkedSecondaryWallet) {
40
103
  setMultiWalletWidgetState('awaiting_signature', undefined, 'linking_new_wallet');
@@ -43,6 +106,12 @@ const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet,
43
106
  }
44
107
  return;
45
108
  }
109
+ const isTryingToUpdateUnkownWallet = linkedSecondaryWallet.connector.key === 'unknown';
110
+ if (isTryingToUpdateUnkownWallet) {
111
+ //prompt the user to connect and sign with the wallet
112
+ dynamicEvents.dynamicEvents.emit('triggerConnectAndSign');
113
+ return;
114
+ }
46
115
  // ...otherwise, the user is switching primary accounts betweeen the same wallet
47
116
  setSelectedWalletWithAction(null);
48
117
  setPrimaryWalletId(linkedSecondaryWallet.id);
@@ -56,6 +125,13 @@ const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet,
56
125
  setPrimaryWalletId,
57
126
  ]);
58
127
  const calculatePrimaryWalletMultiWalletStateFromAccounts = React.useCallback(({ accounts }) => {
128
+ logger.logger.debug('calculatePrimaryWalletMultiWalletStateFromAccounts', {
129
+ accounts,
130
+ authMode,
131
+ multiWallet,
132
+ multiWalletWidgetState,
133
+ primaryWallet,
134
+ });
59
135
  // change the api here
60
136
  if (!primaryWallet)
61
137
  return;