@dynamic-labs/sdk-react-core 1.1.0-alpha.8 → 1.1.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.
- package/CHANGELOG.md +14 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +11 -11
- package/src/index.cjs +2 -2
- package/src/index.js +1 -1
- package/src/lib/Main.cjs +4 -5
- package/src/lib/Main.js +4 -5
- package/src/lib/components/Toggle/Toggle.cjs +14 -0
- package/src/lib/components/Toggle/Toggle.d.ts +7 -0
- package/src/lib/components/Toggle/Toggle.js +10 -0
- package/src/lib/components/Toggle/index.d.ts +1 -0
- package/src/lib/context/DynamicContext/DynamicContext.cjs +35 -42
- package/src/lib/context/DynamicContext/DynamicContext.js +36 -43
- package/src/lib/context/DynamicContext/hooks/index.d.ts +1 -1
- package/src/lib/context/DynamicContext/hooks/useSetShowLinkNewWalletModal/index.d.ts +1 -0
- package/src/lib/context/DynamicContext/hooks/{useSetShowLinkNewWalletModalWithInit/useSetShowLinkNewWalletModalWithInit.cjs → useSetShowLinkNewWalletModal/useSetShowLinkNewWalletModal.cjs} +11 -17
- package/src/lib/context/DynamicContext/hooks/{useSetShowLinkNewWalletModalWithInit/useSetShowLinkNewWalletModalWithInit.d.ts → useSetShowLinkNewWalletModal/useSetShowLinkNewWalletModal.d.ts} +3 -6
- package/src/lib/context/DynamicContext/hooks/{useSetShowLinkNewWalletModalWithInit/useSetShowLinkNewWalletModalWithInit.js → useSetShowLinkNewWalletModal/useSetShowLinkNewWalletModal.js} +11 -17
- package/src/lib/context/DynamicContext/hooks/useShowAuthFlow/index.d.ts +1 -0
- package/src/lib/context/DynamicContext/hooks/useShowAuthFlow/useShowAuthFlow.cjs +59 -0
- package/src/lib/context/DynamicContext/hooks/useShowAuthFlow/useShowAuthFlow.d.ts +37 -0
- package/src/lib/context/DynamicContext/hooks/useShowAuthFlow/useShowAuthFlow.js +55 -0
- package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.cjs +1 -0
- package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.js +1 -0
- package/src/lib/context/DynamicContext/types/index.d.ts +10 -7
- package/src/lib/context/DynamicContext/useDynamicContext.cjs +6 -1
- package/src/lib/context/DynamicContext/useDynamicContext.d.ts +4 -1
- package/src/lib/context/DynamicContext/useDynamicContext.js +6 -1
- package/src/lib/context/SocialRedirectContext/SocialRedirectContext.cjs +1 -1
- package/src/lib/context/SocialRedirectContext/SocialRedirectContext.js +1 -1
- package/src/lib/events/dynamicEvents.d.ts +3 -0
- package/src/lib/layout/DynamicAuthLayout/HelpContent/WalletListHelpContent/WalletExtensionOrAppContinueButton/WalletExtensionOrAppContinueButton.cjs +2 -2
- package/src/lib/layout/DynamicAuthLayout/HelpContent/WalletListHelpContent/WalletExtensionOrAppContinueButton/WalletExtensionOrAppContinueButton.js +2 -2
- package/src/lib/layout/DynamicAuthLayout/HelpContent/WalletListHelpContent/WalletListHelpContent.cjs +5 -5
- package/src/lib/layout/DynamicAuthLayout/HelpContent/WalletListHelpContent/WalletListHelpContent.js +5 -5
- package/src/lib/locale/en/translation.cjs +0 -2
- package/src/lib/locale/en/translation.d.ts +0 -2
- package/src/lib/locale/en/translation.js +0 -2
- package/src/lib/shared/types/index.d.ts +3 -0
- package/src/lib/styles/index.shadow.cjs +1 -1
- package/src/lib/styles/index.shadow.js +1 -1
- package/src/lib/utils/functions/isSelectedWalletAlreadyConnected/isSelectedWalletAlreadyConnected.cjs +2 -4
- package/src/lib/utils/functions/isSelectedWalletAlreadyConnected/isSelectedWalletAlreadyConnected.js +2 -4
- package/src/lib/utils/functions/walletListBuilder/walletListBuilder.cjs +3 -3
- package/src/lib/utils/functions/walletListBuilder/walletListBuilder.js +4 -4
- package/src/lib/utils/hooks/authenticationHooks/useSignConnectOnlyUser/useSignConnectOnlyUser.cjs +1 -1
- package/src/lib/utils/hooks/authenticationHooks/useSignConnectOnlyUser/useSignConnectOnlyUser.js +1 -1
- package/src/lib/utils/hooks/useClearWalletConnectSessions/useClearWalletConnectSessions.cjs +3 -3
- package/src/lib/utils/hooks/useClearWalletConnectSessions/useClearWalletConnectSessions.js +3 -3
- package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.cjs +1 -1
- package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.d.ts +2 -2
- package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.js +1 -1
- package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.cjs +2 -2
- package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.js +2 -2
- package/src/lib/utils/hooks/useEmbeddedReveal/useEmbeddedReveal.cjs +6 -3
- package/src/lib/utils/hooks/useEmbeddedReveal/useEmbeddedReveal.js +6 -3
- package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +9 -6
- package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +9 -6
- package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.cjs +5 -3
- package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.js +5 -3
- package/src/lib/utils/hooks/usePasskeyRecovery/usePasskeyRecovery.cjs +6 -8
- package/src/lib/utils/hooks/usePasskeyRecovery/usePasskeyRecovery.js +6 -8
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +1 -1
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +1 -1
- package/src/lib/utils/hooks/useUserUpdateRequest/useUpdateUserWithModal/useUpdateUserWithModal.cjs +8 -5
- package/src/lib/utils/hooks/useUserUpdateRequest/useUpdateUserWithModal/useUpdateUserWithModal.js +8 -5
- package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.cjs +2 -2
- package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.js +2 -2
- package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.cjs +2 -2
- package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.js +2 -2
- package/src/lib/utils/hooks/useWalletConnectors/utils/findWallet/findWallet.cjs +5 -2
- package/src/lib/utils/hooks/useWalletConnectors/utils/findWallet/findWallet.js +5 -2
- package/src/lib/views/BridgeNextWalletConnectionView/BridgeNextWalletConnectionView.cjs +1 -1
- package/src/lib/views/BridgeNextWalletConnectionView/BridgeNextWalletConnectionView.js +1 -1
- package/src/lib/views/BridgeSummaryView/BridgeSummaryView.cjs +1 -1
- package/src/lib/views/BridgeSummaryView/BridgeSummaryView.js +1 -1
- package/src/lib/views/BridgeWelcomeView/BridgeWelcomeView.cjs +1 -1
- package/src/lib/views/BridgeWelcomeView/BridgeWelcomeView.js +1 -1
- package/src/lib/views/EmailVerification/EmailVerification.cjs +1 -1
- package/src/lib/views/EmailVerification/EmailVerification.js +1 -1
- package/src/lib/views/EmbeddedReveal/EmbeddedRevealView/EmbeddedRevealView.cjs +1 -1
- package/src/lib/views/EmbeddedReveal/EmbeddedRevealView/EmbeddedRevealView.js +1 -1
- package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.cjs +1 -1
- package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.js +1 -1
- package/src/lib/views/Passkey/PasskeyRecovery/InitRecovery/PasskeyInitRecovery.cjs +1 -1
- package/src/lib/views/Passkey/PasskeyRecovery/InitRecovery/PasskeyInitRecovery.js +1 -1
- package/src/lib/views/QrCodeView/QRCode.cjs +2 -3
- package/src/lib/views/QrCodeView/QRCode.js +2 -3
- package/src/lib/views/WalletGroupView/WalletGroupView.cjs +3 -1
- package/src/lib/views/WalletGroupView/WalletGroupView.js +3 -1
- package/src/lib/views/WalletGroupView/components/HardwareWalletToggle/HardwareWalletToggle.cjs +8 -6
- package/src/lib/views/WalletGroupView/components/HardwareWalletToggle/HardwareWalletToggle.js +9 -7
- package/src/lib/views/WalletUsedView/WalletUsedView.cjs +5 -5
- package/src/lib/views/WalletUsedView/WalletUsedView.js +5 -5
- package/src/lib/widgets/DynamicBridgeWidget/views/EditProfileView/EditProfileView.cjs +6 -3
- package/src/lib/widgets/DynamicBridgeWidget/views/EditProfileView/EditProfileView.js +6 -3
- package/src/lib/widgets/DynamicWidget/components/ActiveWalletInformation/ActiveWalletInformation.cjs +2 -3
- package/src/lib/widgets/DynamicWidget/components/ActiveWalletInformation/ActiveWalletInformation.js +2 -3
- package/src/lib/widgets/DynamicWidget/hooks/useFetchBalance/useFetchBalance.cjs +66 -21
- package/src/lib/widgets/DynamicWidget/hooks/useFetchBalance/useFetchBalance.d.ts +1 -1
- package/src/lib/widgets/DynamicWidget/hooks/useFetchBalance/useFetchBalance.js +67 -22
- package/src/lib/widgets/DynamicWidget/prompts/QrCodeModalView/QrCodeModalView.cjs +2 -2
- package/src/lib/widgets/DynamicWidget/prompts/QrCodeModalView/QrCodeModalView.js +2 -2
- package/src/lib/widgets/DynamicWidget/views/EditProfileView/EditProfileView.cjs +7 -3
- package/src/lib/widgets/DynamicWidget/views/EditProfileView/EditProfileView.js +7 -3
- package/src/lib/context/DynamicContext/hooks/useSetShowAuthFlowWithInit/index.d.ts +0 -1
- package/src/lib/context/DynamicContext/hooks/useSetShowAuthFlowWithInit/useSetShowAuthFlowWithInit.cjs +0 -55
- package/src/lib/context/DynamicContext/hooks/useSetShowAuthFlowWithInit/useSetShowAuthFlowWithInit.d.ts +0 -18
- package/src/lib/context/DynamicContext/hooks/useSetShowAuthFlowWithInit/useSetShowAuthFlowWithInit.js +0 -51
- package/src/lib/context/DynamicContext/hooks/useSetShowLinkNewWalletModalWithInit/index.d.ts +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __awaiter } from '../../../../_virtual/_tslib.js';
|
|
2
2
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
-
import { createContext, useState, useEffect, useCallback,
|
|
3
|
+
import { createContext, useState, useRef, useEffect, useCallback, useMemo } from 'react';
|
|
4
4
|
import { I18nextProvider } from 'react-i18next';
|
|
5
5
|
import { ICONIC_SPRITE_URL } from '@dynamic-labs/iconic';
|
|
6
6
|
import { MissingEnvironmentIdError } from '@dynamic-labs/utils';
|
|
@@ -30,7 +30,6 @@ import { AccountExistsContextProvider } from '../AccountExistsContext/AccountExi
|
|
|
30
30
|
import { revokeSession, sendDynamicProps } from '../../data/api.js';
|
|
31
31
|
import { EmailVerificationContextProvider } from '../EmailVerificationContext/EmailVerificationContext.js';
|
|
32
32
|
import 'react-dom';
|
|
33
|
-
import { isSameWalletName } from '../../utils/functions/isSameWalletName/isSameWalletName.js';
|
|
34
33
|
import { useFetchNonce } from '../../utils/hooks/useFetchNonce/useFetchNonce.js';
|
|
35
34
|
import { useFetchProjectSettings } from '../../utils/hooks/useFetchProjectSettings/useFetchProjectSettings.js';
|
|
36
35
|
import { ThemeContextProvider } from '../ThemeContext/ThemeContext.js';
|
|
@@ -68,10 +67,10 @@ import { useMultiWalletWidgetState } from '../../utils/hooks/multiWallet/useMult
|
|
|
68
67
|
import { useMultiWallet } from '../../utils/hooks/multiWallet/useMultiWallet/useMultiWallet.js';
|
|
69
68
|
import { useClearWalletConnectSessions } from '../../utils/hooks/useClearWalletConnectSessions/useClearWalletConnectSessions.js';
|
|
70
69
|
import { useConnectWallet } from '../../utils/hooks/useConnectWallet/useConnectWallet.js';
|
|
71
|
-
import { useProcessNetworkConfigurations } from '../../utils/hooks/useProcessNetworkConfigurations/useProcessNetworkConfigurations.js';
|
|
72
70
|
import { useFetchWalletsForChainsMap } from '../../utils/hooks/useFetchWalletsForChainsMap/useFetchWalletsForChainsMap.js';
|
|
73
71
|
import { useHandleUnlinkWallet } from '../../utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.js';
|
|
74
72
|
import { usePrimaryWalletId } from '../../utils/hooks/usePrimaryWalletId/usePrimaryWalletId.js';
|
|
73
|
+
import { useProcessNetworkConfigurations } from '../../utils/hooks/useProcessNetworkConfigurations/useProcessNetworkConfigurations.js';
|
|
75
74
|
import { useRpcProviders } from '../../utils/hooks/useRpcProviders/useRpcProviders.js';
|
|
76
75
|
import { useWalletEventListeners } from '../../utils/hooks/useWalletEventListeners/useWalletEventListeners.js';
|
|
77
76
|
import { DynamicBridgeWidgetContextProvider } from '../../widgets/DynamicBridgeWidget/context/DynamicBridgeWidgetContext/DynamicBridgeWidgetContext.js';
|
|
@@ -90,24 +89,24 @@ import '../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/P
|
|
|
90
89
|
import '../../views/WalletList/WalletList.js';
|
|
91
90
|
import '../../views/viewToComponentMap.js';
|
|
92
91
|
import { FundingWidget } from '../../widgets/FundingWidget/FundingWidget.js';
|
|
92
|
+
import { ConnectWithEmailOtpProvider } from '../ConnectWithEmailOtpContext/ConnectWithEmailOtpProvider.js';
|
|
93
|
+
import '../ConnectWithEmailOtpContext/connectWithEmailOtpContext.js';
|
|
93
94
|
import { FundingContextProvider } from '../FundingContext/FundingContext.js';
|
|
94
95
|
import { SendBalanceContextProvider } from '../SendBalanceContext/SendBalanceContext.js';
|
|
95
96
|
import { UseNetworkValidation } from '../UseNetworkValidation/UseNetworkValidation.js';
|
|
96
97
|
import { UserWalletsProvider } from '../UserWalletsContext/UserWalletsContext.js';
|
|
97
98
|
import { WalletContextProvider } from '../WalletContext/WalletContext.js';
|
|
98
|
-
import { ConnectWithEmailOtpProvider } from '../ConnectWithEmailOtpContext/ConnectWithEmailOtpProvider.js';
|
|
99
|
-
import '../ConnectWithEmailOtpContext/connectWithEmailOtpContext.js';
|
|
100
99
|
import { handleDisconnectWallet } from './handleDisconnectWallet/handleDisconnectWallet.js';
|
|
101
100
|
import { initExpirationTime, getInitialView } from './helpers.js';
|
|
102
101
|
import { useDisplayOrderState } from './hooks/useDisplayOrderState/useDisplayOrderState.js';
|
|
103
102
|
import { useEmailLoginState } from './hooks/useEmailLoginState/useEmailLoginState.js';
|
|
104
103
|
import { useNameService } from './hooks/useNameService/useNameService.js';
|
|
105
104
|
import { useSelectedWalletConnector } from './hooks/useSelectedWalletConnector/useSelectedWalletConnector.js';
|
|
106
|
-
import {
|
|
105
|
+
import { useShowAuthFlow } from './hooks/useShowAuthFlow/useShowAuthFlow.js';
|
|
107
106
|
import { useShowPasskeyCreateSuccess } from './hooks/useShowPasskeyCreateSuccess/useShowPasskeyCreateSuccess.js';
|
|
108
107
|
import { useTieCallbacksToEvents } from './hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.js';
|
|
109
108
|
import { useVerificationInProgress } from './hooks/useVerificationInProgress/useVerificationInProgress.js';
|
|
110
|
-
import {
|
|
109
|
+
import { useSetShowLinkNewWalletModal } from './hooks/useSetShowLinkNewWalletModal/useSetShowLinkNewWalletModal.js';
|
|
111
110
|
import { useCustomerCallbacks } from './useCustomerCallbacks/useCustomerCallbacks.js';
|
|
112
111
|
import { useCustomerAuthFlowCallbacks } from './useCustomerCallbacks/useCustomerAuthFlowCallbacks.js';
|
|
113
112
|
import { validateAuthUser } from './validators.js';
|
|
@@ -117,7 +116,7 @@ const EMPTY_INITIAL_USER = undefined;
|
|
|
117
116
|
const DynamicContext = createContext(undefined);
|
|
118
117
|
/** The context provider itself we only use internally */
|
|
119
118
|
const InnerDynamicContextProvider = ({ children, theme, settings, locale, }) => {
|
|
120
|
-
var _a, _b, _c, _d, _e, _f
|
|
119
|
+
var _a, _b, _c, _d, _e, _f;
|
|
121
120
|
const { accessDeniedMessagePrimary, accessDeniedMessageSecondary, accessDeniedButton, apiBaseUrl, enableForcedNetworkValidation: enableForcedNetworkValidationProp = false, deepLinkPreference = 'native', bridgeChains, cssOverrides, defaultNumberOfWalletsToShow = DEFAULT_NUMBER_OF_WALLETS_TO_SHOW, flowNetwork, initialAuthenticationMode = 'connect-and-sign', debugError = false, displaySiweStatement = true, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly = true, environmentId, localStorageSuffix, eventsCallbacks, evmNetworks, walletsFilter, logLevel = 'WARN', notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, customPrivacyPolicy, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, customTermsOfServices, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled = true, walletConnectors: walletConnectorsProp, socialProvidersFilter, showLockedWalletView = true, walletConnectPreferredChains, walletConnectorExtensions, } = settings;
|
|
122
121
|
let enableForcedNetworkValidation = enableForcedNetworkValidationProp;
|
|
123
122
|
if (bridgeChains) {
|
|
@@ -126,7 +125,8 @@ const InnerDynamicContextProvider = ({ children, theme, settings, locale, }) =>
|
|
|
126
125
|
// Ties all client callbacks to dynamic's events, such that
|
|
127
126
|
// when our events are triggered, so are the client callbacks
|
|
128
127
|
useTieCallbacksToEvents(eventsCallbacks);
|
|
129
|
-
let {
|
|
128
|
+
let { appLogoUrl = 'https://demo.dynamic.xyz/assets/dynamic-logo.svg', appName = 'Dynamic Example', } = settings;
|
|
129
|
+
const { walletConnectV1Bridge } = settings;
|
|
130
130
|
if (!environmentId) {
|
|
131
131
|
throw new MissingEnvironmentIdError();
|
|
132
132
|
}
|
|
@@ -141,7 +141,6 @@ const InnerDynamicContextProvider = ({ children, theme, settings, locale, }) =>
|
|
|
141
141
|
const isAuthenticated = Boolean(getAuthToken());
|
|
142
142
|
const isBridgeFlow = Boolean(bridgeChains);
|
|
143
143
|
const [onboardingOnlyJwt, setOnboardingOnlyJwt] = useState(undefined);
|
|
144
|
-
const [showAuthFlow, setShowAuthFlow] = useState(false);
|
|
145
144
|
// state to track the full connectivity status of the individual's wallets.
|
|
146
145
|
// Set to true once the predetermined number of wallets is connected.
|
|
147
146
|
const [isFullyConnected, setIsFullyConnected, removeIsFullyConnected] = useLocalStorage(IS_FULLY_CONNECTED, false);
|
|
@@ -166,14 +165,6 @@ const InnerDynamicContextProvider = ({ children, theme, settings, locale, }) =>
|
|
|
166
165
|
multiWalletSettings: (_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _b === void 0 ? void 0 : _b.multiWallet,
|
|
167
166
|
toolkitEnabled: toolkitEnabled || false,
|
|
168
167
|
});
|
|
169
|
-
// for demo proposes when running single wallet
|
|
170
|
-
// it should not use bridge even having walletConnectV1Bridge set on settings
|
|
171
|
-
// but v2 if enabled
|
|
172
|
-
if (toolkitEnabled &&
|
|
173
|
-
((_d = (_c = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _c === void 0 ? void 0 : _c.walletConnect) === null || _d === void 0 ? void 0 : _d.v2Enabled) &&
|
|
174
|
-
!multiWallet) {
|
|
175
|
-
walletConnectV1Bridge = undefined;
|
|
176
|
-
}
|
|
177
168
|
// ensures that when user comes back to site and primary wallet is out of sync, we don't show widget popup
|
|
178
169
|
const [showWidgetStatePopup, setShowWidgetStatePopup] = useState(!multiWallet);
|
|
179
170
|
// Used inside useVerifyOnAwaitingSignature. Is legacy and should be removed asap
|
|
@@ -213,6 +204,14 @@ const InnerDynamicContextProvider = ({ children, theme, settings, locale, }) =>
|
|
|
213
204
|
});
|
|
214
205
|
const [authMode, setAuthMode] = useLocalStorage(AUTH_MODE, initialAuthenticationMode);
|
|
215
206
|
const { clearPrimaryWalletId, primaryWalletId, setPrimaryWalletId } = usePrimaryWalletId();
|
|
207
|
+
const isUserAuthenticated = Boolean(authMode === 'connect-and-sign' ? user : isFullyConnected);
|
|
208
|
+
const isRenderingEmbeddedAuthFlow = useRef(false);
|
|
209
|
+
const [showAuthFlow, setShowAuthFlow] = useShowAuthFlow({
|
|
210
|
+
isAuthenticated: isUserAuthenticated,
|
|
211
|
+
isMultiWalletEnabled: multiWallet,
|
|
212
|
+
isRenderingEmbeddedAuthFlow,
|
|
213
|
+
walletConnectorOptions,
|
|
214
|
+
});
|
|
216
215
|
const { connectWallet, removeConnectedWalletsInfo, connectedWalletsInfo, getConnectedWalletById, connectedWallets, disconnectWallet, refreshConnectedWallet, } = useConnectWallet({
|
|
217
216
|
authMode,
|
|
218
217
|
clearPrimaryWalletId,
|
|
@@ -244,7 +243,7 @@ const InnerDynamicContextProvider = ({ children, theme, settings, locale, }) =>
|
|
|
244
243
|
removeUser();
|
|
245
244
|
}, [removeUser]);
|
|
246
245
|
// until user completes onboarding, jwt is only stored in onboardingOnlyJwt
|
|
247
|
-
const authToken = (
|
|
246
|
+
const authToken = (_c = getAuthToken()) !== null && _c !== void 0 ? _c : onboardingOnlyJwt;
|
|
248
247
|
useSetWalletConnectorVerifiedCredentials(authToken, walletConnectorOptions);
|
|
249
248
|
const { didConnectedStateLoad, primaryWallet, showQrcodeModal, secondaryWallets, setPrimaryWallet, setShowQrcodeModal, wallets: linkedOrConnectedWallets, } = useWalletConnectors({
|
|
250
249
|
authMode,
|
|
@@ -271,21 +270,10 @@ const InnerDynamicContextProvider = ({ children, theme, settings, locale, }) =>
|
|
|
271
270
|
user,
|
|
272
271
|
walletBook,
|
|
273
272
|
});
|
|
274
|
-
const
|
|
275
|
-
const isUserAuthenticated = Boolean(authMode === 'connect-and-sign' ? user : isFullyConnected);
|
|
276
|
-
const setShowAuthFlowWithInit = useSetShowAuthFlowWithInit({
|
|
273
|
+
const setShowLinkNewWalletModal = useSetShowLinkNewWalletModal({
|
|
277
274
|
isAuthenticated: isUserAuthenticated,
|
|
278
275
|
isMultiWalletEnabled: multiWallet,
|
|
279
|
-
isRenderingEmbeddedAuthFlow,
|
|
280
276
|
setShowAuthFlow,
|
|
281
|
-
walletConnectorOptions,
|
|
282
|
-
});
|
|
283
|
-
const setShowLinkNewWalletModalWithInit = useSetShowLinkNewWalletModalWithInit({
|
|
284
|
-
isAuthenticated: isUserAuthenticated,
|
|
285
|
-
isMultiWalletEnabled: multiWallet,
|
|
286
|
-
isRenderingEmbeddedAuthFlow,
|
|
287
|
-
setShowAuthFlow,
|
|
288
|
-
walletConnectorOptions,
|
|
289
277
|
});
|
|
290
278
|
const { getNameService, removeConnectedNameService } = useNameService({
|
|
291
279
|
authToken,
|
|
@@ -298,7 +286,7 @@ const InnerDynamicContextProvider = ({ children, theme, settings, locale, }) =>
|
|
|
298
286
|
clearOphanedWalletConnectSessions,
|
|
299
287
|
]);
|
|
300
288
|
const handleLogOut = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
301
|
-
var
|
|
289
|
+
var _g, _h;
|
|
302
290
|
setSdkHasLoaded(false);
|
|
303
291
|
clearAllWalletConnectSessions();
|
|
304
292
|
setBridgeChainsToConnect(bridgeChains);
|
|
@@ -324,7 +312,12 @@ const InnerDynamicContextProvider = ({ children, theme, settings, locale, }) =>
|
|
|
324
312
|
setIsVerificationInProgress(false);
|
|
325
313
|
setLegacyIsVerifying(false);
|
|
326
314
|
setAuthMode(initialAuthenticationMode);
|
|
327
|
-
setShowAuthFlow(false
|
|
315
|
+
setShowAuthFlow(false, {
|
|
316
|
+
emitCancelAuth: false,
|
|
317
|
+
ignoreIfIsEmbeddedWidget: false,
|
|
318
|
+
initializeWalletConnect: false,
|
|
319
|
+
performMultiWalletChecks: false,
|
|
320
|
+
});
|
|
328
321
|
setMultiWalletWidgetState('idle');
|
|
329
322
|
removeAuthTokenAndUser();
|
|
330
323
|
removeLsSettings();
|
|
@@ -335,12 +328,12 @@ const InnerDynamicContextProvider = ({ children, theme, settings, locale, }) =>
|
|
|
335
328
|
clearPrimaryWalletId();
|
|
336
329
|
removeConnectedNameService();
|
|
337
330
|
for (const connectedWallet of connectedWallets) {
|
|
338
|
-
(
|
|
331
|
+
(_g = eventsCallbacks === null || eventsCallbacks === void 0 ? void 0 : eventsCallbacks.onDisconnect) === null || _g === void 0 ? void 0 : _g.call(eventsCallbacks, {
|
|
339
332
|
wallet: connectedWallet,
|
|
340
333
|
walletConnector: connectedWallet === null || connectedWallet === void 0 ? void 0 : connectedWallet.connector,
|
|
341
334
|
});
|
|
342
335
|
}
|
|
343
|
-
(
|
|
336
|
+
(_h = eventsCallbacks === null || eventsCallbacks === void 0 ? void 0 : eventsCallbacks.onLogout) === null || _h === void 0 ? void 0 : _h.call(eventsCallbacks, user);
|
|
344
337
|
dynamicEvents.emit('logout');
|
|
345
338
|
}), [
|
|
346
339
|
setSdkHasLoaded,
|
|
@@ -352,6 +345,7 @@ const InnerDynamicContextProvider = ({ children, theme, settings, locale, }) =>
|
|
|
352
345
|
setIsVerificationInProgress,
|
|
353
346
|
setAuthMode,
|
|
354
347
|
initialAuthenticationMode,
|
|
348
|
+
setShowAuthFlow,
|
|
355
349
|
setMultiWalletWidgetState,
|
|
356
350
|
removeAuthTokenAndUser,
|
|
357
351
|
removeLsSettings,
|
|
@@ -369,7 +363,7 @@ const InnerDynamicContextProvider = ({ children, theme, settings, locale, }) =>
|
|
|
369
363
|
let wcVersion;
|
|
370
364
|
if (projectSettings) {
|
|
371
365
|
wcVersion =
|
|
372
|
-
((
|
|
366
|
+
((_e = (_d = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _d === void 0 ? void 0 : _d.walletConnect) === null || _e === void 0 ? void 0 : _e.v2Enabled) && !walletConnectV1Bridge
|
|
373
367
|
? 2
|
|
374
368
|
: 1;
|
|
375
369
|
}
|
|
@@ -457,7 +451,7 @@ const InnerDynamicContextProvider = ({ children, theme, settings, locale, }) =>
|
|
|
457
451
|
}
|
|
458
452
|
if (selectedWalletConnector &&
|
|
459
453
|
(!primaryWallet ||
|
|
460
|
-
|
|
454
|
+
primaryWallet.connector.key !== selectedWalletConnector.key)) {
|
|
461
455
|
yield (selectedWalletConnector === null || selectedWalletConnector === void 0 ? void 0 : selectedWalletConnector.endSession());
|
|
462
456
|
}
|
|
463
457
|
}), [
|
|
@@ -508,7 +502,6 @@ const InnerDynamicContextProvider = ({ children, theme, settings, locale, }) =>
|
|
|
508
502
|
handleLogOut,
|
|
509
503
|
handleUnlinkWallet: authMode === 'connect-only' ? disconnectWallet : handleUnlinkWallet,
|
|
510
504
|
i18nSDKInstance,
|
|
511
|
-
internalSetShowAuthFlow: setShowAuthFlow,
|
|
512
505
|
isAuthenticated,
|
|
513
506
|
isBridgeFlow,
|
|
514
507
|
isFullyConnected,
|
|
@@ -564,10 +557,10 @@ const InnerDynamicContextProvider = ({ children, theme, settings, locale, }) =>
|
|
|
564
557
|
setSdkHasLoaded,
|
|
565
558
|
setSelectedWalletConnectorKey,
|
|
566
559
|
setSelectedWalletWithAction,
|
|
567
|
-
setShowAuthFlow
|
|
560
|
+
setShowAuthFlow,
|
|
568
561
|
setShowBridgeWidget,
|
|
569
562
|
setShowDynamicUserProfile,
|
|
570
|
-
setShowLinkNewWalletModal
|
|
563
|
+
setShowLinkNewWalletModal,
|
|
571
564
|
setShowPasskeyCreatedSuccess,
|
|
572
565
|
setShowQrcodeModal,
|
|
573
566
|
setShowWidgetStatePopup,
|
|
@@ -673,8 +666,8 @@ const InnerDynamicContextProvider = ({ children, theme, settings, locale, }) =>
|
|
|
673
666
|
setPrimaryWalletId,
|
|
674
667
|
setSdkHasLoaded,
|
|
675
668
|
setSelectedWalletConnectorKey,
|
|
676
|
-
|
|
677
|
-
|
|
669
|
+
setShowAuthFlow,
|
|
670
|
+
setShowLinkNewWalletModal,
|
|
678
671
|
setShowPasskeyCreatedSuccess,
|
|
679
672
|
setShowQrcodeModal,
|
|
680
673
|
setUser,
|
|
@@ -735,7 +728,7 @@ const InnerDynamicContextProvider = ({ children, theme, settings, locale, }) =>
|
|
|
735
728
|
setShowDynamicUserProfile(true);
|
|
736
729
|
}
|
|
737
730
|
}, [multiWallet, multiWalletWidgetState, showDynamicUserProfile, user]);
|
|
738
|
-
return (jsx(I18nextProvider, { i18n: i18nSDKInstance, children: jsx(DynamicContext.Provider, { value: value, children: jsx(WalletBookContextProvider, { walletBook: walletBook, children: jsx(ThemeContextProvider, { customerTheme: parseTheme(theme, ((
|
|
731
|
+
return (jsx(I18nextProvider, { i18n: i18nSDKInstance, children: jsx(DynamicContext.Provider, { value: value, children: jsx(WalletBookContextProvider, { walletBook: walletBook, children: jsx(ThemeContextProvider, { customerTheme: parseTheme(theme, ((_f = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design) === null || _f === void 0 ? void 0 : _f.modal) || undefined), designSettings: projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design, children: jsx(LoadingContextProvider, { children: jsx(ErrorContextProvider, { children: jsxs(ViewContextProvider, { initialView: getInitialView({
|
|
739
732
|
connectedWallets,
|
|
740
733
|
isAuthenticated,
|
|
741
734
|
isBridgeFlow,
|
|
@@ -2,7 +2,7 @@ export * from './useDisplayOrderState';
|
|
|
2
2
|
export * from './useEmailLoginState';
|
|
3
3
|
export * from './useNameService';
|
|
4
4
|
export * from './useSelectedWalletConnector';
|
|
5
|
-
export * from './
|
|
5
|
+
export * from './useShowAuthFlow';
|
|
6
6
|
export * from './useShowPasskeyCreateSuccess';
|
|
7
7
|
export * from './useTieCallbacksToEvents';
|
|
8
8
|
export * from './useVerificationInProgress';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useSetShowLinkNewWalletModal';
|
|
@@ -24,31 +24,25 @@ require('../../../../shared/consts/index.cjs');
|
|
|
24
24
|
* "Connect" button in the WalletConnect modal, there is a uri ready to go
|
|
25
25
|
* to immediately trigger the deep link on mobile
|
|
26
26
|
*/
|
|
27
|
-
const
|
|
27
|
+
const useSetShowLinkNewWalletModal = ({ setShowAuthFlow, isMultiWalletEnabled, isAuthenticated, }) => {
|
|
28
28
|
const setSetShowLinkNewWalletModalWithInit = React.useCallback((value) => {
|
|
29
|
-
var _a;
|
|
30
29
|
if (value) {
|
|
31
|
-
// Do not change state if
|
|
32
|
-
|
|
33
|
-
// 2. An embedded auth flow is already being rendered
|
|
34
|
-
if (!isAuthenticated || isRenderingEmbeddedAuthFlow.current)
|
|
30
|
+
// Do not change state if the user is already signed in and multi-wallet is not enabled
|
|
31
|
+
if (!isAuthenticated)
|
|
35
32
|
return;
|
|
36
33
|
if (!isMultiWalletEnabled) {
|
|
37
34
|
logger.logger.warn('setShowLinkNewWalletModal was called while the user was not logged in. This results in a no-op. To log the user in, use setShowAuthFlow. For more information, see: https://docs.dynamic.xyz/react-sdk/hooks/usedynamiccontext');
|
|
38
35
|
return;
|
|
39
36
|
}
|
|
40
|
-
(_a = walletConnectorOptions
|
|
41
|
-
.find((wallet) => wallet.walletConnector.key === 'walletconnect')) === null || _a === void 0 ? void 0 : _a.walletConnector.init();
|
|
42
37
|
}
|
|
43
|
-
setShowAuthFlow(value
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
]);
|
|
38
|
+
setShowAuthFlow(value, {
|
|
39
|
+
emitCancelAuth: true,
|
|
40
|
+
ignoreIfIsEmbeddedWidget: true,
|
|
41
|
+
initializeWalletConnect: true,
|
|
42
|
+
performMultiWalletChecks: false,
|
|
43
|
+
});
|
|
44
|
+
}, [setShowAuthFlow, isAuthenticated, isMultiWalletEnabled]);
|
|
51
45
|
return setSetShowLinkNewWalletModalWithInit;
|
|
52
46
|
};
|
|
53
47
|
|
|
54
|
-
exports.
|
|
48
|
+
exports.useSetShowLinkNewWalletModal = useSetShowLinkNewWalletModal;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Dispatch, SetStateAction } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import { IDynamicContext } from '../../types';
|
|
2
|
+
import { SetShowAuthFlow } from '../useShowAuthFlow';
|
|
4
3
|
/**
|
|
5
4
|
* this hook wraps `setShowAuthFlow`. WalletConnect requires initialization
|
|
6
5
|
* before we can connect a wallet. The goal here is that when a user clicks
|
|
@@ -9,10 +8,8 @@ import { IDynamicContext } from '../../types';
|
|
|
9
8
|
* "Connect" button in the WalletConnect modal, there is a uri ready to go
|
|
10
9
|
* to immediately trigger the deep link on mobile
|
|
11
10
|
*/
|
|
12
|
-
export declare const
|
|
13
|
-
setShowAuthFlow:
|
|
14
|
-
isRenderingEmbeddedAuthFlow: IDynamicContext['isRenderingEmbeddedAuthFlow'];
|
|
15
|
-
walletConnectorOptions: WalletOption[];
|
|
11
|
+
export declare const useSetShowLinkNewWalletModal: ({ setShowAuthFlow, isMultiWalletEnabled, isAuthenticated, }: {
|
|
12
|
+
setShowAuthFlow: SetShowAuthFlow;
|
|
16
13
|
isMultiWalletEnabled?: boolean | undefined;
|
|
17
14
|
isAuthenticated: boolean;
|
|
18
15
|
}) => Dispatch<SetStateAction<boolean>>;
|
|
@@ -20,31 +20,25 @@ import '../../../../shared/consts/index.js';
|
|
|
20
20
|
* "Connect" button in the WalletConnect modal, there is a uri ready to go
|
|
21
21
|
* to immediately trigger the deep link on mobile
|
|
22
22
|
*/
|
|
23
|
-
const
|
|
23
|
+
const useSetShowLinkNewWalletModal = ({ setShowAuthFlow, isMultiWalletEnabled, isAuthenticated, }) => {
|
|
24
24
|
const setSetShowLinkNewWalletModalWithInit = useCallback((value) => {
|
|
25
|
-
var _a;
|
|
26
25
|
if (value) {
|
|
27
|
-
// Do not change state if
|
|
28
|
-
|
|
29
|
-
// 2. An embedded auth flow is already being rendered
|
|
30
|
-
if (!isAuthenticated || isRenderingEmbeddedAuthFlow.current)
|
|
26
|
+
// Do not change state if the user is already signed in and multi-wallet is not enabled
|
|
27
|
+
if (!isAuthenticated)
|
|
31
28
|
return;
|
|
32
29
|
if (!isMultiWalletEnabled) {
|
|
33
30
|
logger.warn('setShowLinkNewWalletModal was called while the user was not logged in. This results in a no-op. To log the user in, use setShowAuthFlow. For more information, see: https://docs.dynamic.xyz/react-sdk/hooks/usedynamiccontext');
|
|
34
31
|
return;
|
|
35
32
|
}
|
|
36
|
-
(_a = walletConnectorOptions
|
|
37
|
-
.find((wallet) => wallet.walletConnector.key === 'walletconnect')) === null || _a === void 0 ? void 0 : _a.walletConnector.init();
|
|
38
33
|
}
|
|
39
|
-
setShowAuthFlow(value
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
]);
|
|
34
|
+
setShowAuthFlow(value, {
|
|
35
|
+
emitCancelAuth: true,
|
|
36
|
+
ignoreIfIsEmbeddedWidget: true,
|
|
37
|
+
initializeWalletConnect: true,
|
|
38
|
+
performMultiWalletChecks: false,
|
|
39
|
+
});
|
|
40
|
+
}, [setShowAuthFlow, isAuthenticated, isMultiWalletEnabled]);
|
|
47
41
|
return setSetShowLinkNewWalletModalWithInit;
|
|
48
42
|
};
|
|
49
43
|
|
|
50
|
-
export {
|
|
44
|
+
export { useSetShowLinkNewWalletModal };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useShowAuthFlow';
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var dynamicEvents = require('../../../../events/dynamicEvents.cjs');
|
|
7
|
+
require('@dynamic-labs/sdk-api');
|
|
8
|
+
var logger = require('../../../../shared/logger.cjs');
|
|
9
|
+
require('@dynamic-labs/iconic');
|
|
10
|
+
require('@dynamic-labs/wallet-connector-core');
|
|
11
|
+
require('react/jsx-runtime');
|
|
12
|
+
require('../../../ViewContext/ViewContext.cjs');
|
|
13
|
+
require('@dynamic-labs/wallet-book');
|
|
14
|
+
require('../../../../utils/constants/colors.cjs');
|
|
15
|
+
require('../../../../shared/utils/classes/storage/localStorage.cjs');
|
|
16
|
+
require('viem');
|
|
17
|
+
require('@dynamic-labs/utils');
|
|
18
|
+
require('../../../../shared/consts/index.cjs');
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* There are a multitude of scenarios where we want to ignore or insert functionality to calls
|
|
22
|
+
* to setShowAuthFlow. This hook wraps it with an options parameter to allow encapsulating these
|
|
23
|
+
* different scenarios and makes it especially easy to customize exactly which version of this method
|
|
24
|
+
* is being passed to useDynamicContext.
|
|
25
|
+
*/
|
|
26
|
+
const useShowAuthFlow = ({ isAuthenticated, isRenderingEmbeddedAuthFlow, isMultiWalletEnabled, walletConnectorOptions, }) => {
|
|
27
|
+
const [showAuthFlow, _setShowAuthFlow] = React.useState(false);
|
|
28
|
+
const setShowAuthFlow = React.useCallback((value, options = {}) => {
|
|
29
|
+
var _a;
|
|
30
|
+
const { emitCancelAuth, ignoreIfIsEmbeddedWidget, initializeWalletConnect, performMultiWalletChecks, } = Object.assign({ emitCancelAuth: false, ignoreIfIsEmbeddedWidget: true, initializeWalletConnect: true, performMultiWalletChecks: false }, options);
|
|
31
|
+
if (value) {
|
|
32
|
+
if (ignoreIfIsEmbeddedWidget && isRenderingEmbeddedAuthFlow.current)
|
|
33
|
+
return;
|
|
34
|
+
if (performMultiWalletChecks && isAuthenticated) {
|
|
35
|
+
if (!isMultiWalletEnabled) {
|
|
36
|
+
logger.logger.warn('setShowAuthFlow was called while the user is logged in, but Dynamic is not configured with multi-wallet enabled. This results in a no-op.');
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
logger.logger.warn('Using setShowAuthFlow to render the wallet list when the user is logged in is deprecated. Use setShowLinkNewWalletModal instead. For more information, see: https://docs.dynamic.xyz/react-sdk/hooks/usedynamiccontext');
|
|
40
|
+
}
|
|
41
|
+
if (initializeWalletConnect) {
|
|
42
|
+
(_a = walletConnectorOptions
|
|
43
|
+
.find((wallet) => wallet.walletConnector.key === 'walletconnect')) === null || _a === void 0 ? void 0 : _a.walletConnector.init();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else if (emitCancelAuth && showAuthFlow)
|
|
47
|
+
dynamicEvents.dynamicEvents.emit('authFlowCancelled');
|
|
48
|
+
_setShowAuthFlow(value);
|
|
49
|
+
}, [
|
|
50
|
+
isAuthenticated,
|
|
51
|
+
isMultiWalletEnabled,
|
|
52
|
+
isRenderingEmbeddedAuthFlow,
|
|
53
|
+
showAuthFlow,
|
|
54
|
+
walletConnectorOptions,
|
|
55
|
+
]);
|
|
56
|
+
return [showAuthFlow, setShowAuthFlow];
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
exports.useShowAuthFlow = useShowAuthFlow;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { SetStateAction } from 'react';
|
|
2
|
+
import { WalletOption } from '../../../../shared';
|
|
3
|
+
import { IDynamicContext } from '../../types';
|
|
4
|
+
export type SetShowAuthFlowOptions = {
|
|
5
|
+
/**
|
|
6
|
+
* WalletConnect requires initialization before we can connect a wallet.
|
|
7
|
+
* The goal here is that when the auth flow opens, the
|
|
8
|
+
* SDK starts initializing WalletConnect and will prime it for connection.
|
|
9
|
+
* This way, when the user clicks on the "Connect" button in the WalletConnect modal,
|
|
10
|
+
* there is a uri ready to go to immediately trigger the deep link on mobile
|
|
11
|
+
*/
|
|
12
|
+
initializeWalletConnect?: boolean;
|
|
13
|
+
/** Makes this call be ignored if setting to true when there is an embedded widget on screen */
|
|
14
|
+
ignoreIfIsEmbeddedWidget?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* When setting to true while logged in:
|
|
17
|
+
* 1. If multi wallet is false, ignores the call — handy to prevent users from
|
|
18
|
+
* getting to the link new wallet screen without multi wallet
|
|
19
|
+
* 2. If multi wallet is true, logs a warning to use setShowLinkNewWalletModal instead
|
|
20
|
+
*/
|
|
21
|
+
performMultiWalletChecks?: boolean;
|
|
22
|
+
/** When setting to false, emits authFlowCancelled event and callback */
|
|
23
|
+
emitCancelAuth?: boolean;
|
|
24
|
+
};
|
|
25
|
+
export type SetShowAuthFlow = (value: SetStateAction<boolean>, options?: SetShowAuthFlowOptions) => void;
|
|
26
|
+
/**
|
|
27
|
+
* There are a multitude of scenarios where we want to ignore or insert functionality to calls
|
|
28
|
+
* to setShowAuthFlow. This hook wraps it with an options parameter to allow encapsulating these
|
|
29
|
+
* different scenarios and makes it especially easy to customize exactly which version of this method
|
|
30
|
+
* is being passed to useDynamicContext.
|
|
31
|
+
*/
|
|
32
|
+
export declare const useShowAuthFlow: ({ isAuthenticated, isRenderingEmbeddedAuthFlow, isMultiWalletEnabled, walletConnectorOptions, }: {
|
|
33
|
+
isMultiWalletEnabled: boolean;
|
|
34
|
+
isRenderingEmbeddedAuthFlow: IDynamicContext['isRenderingEmbeddedAuthFlow'];
|
|
35
|
+
walletConnectorOptions: WalletOption[];
|
|
36
|
+
isAuthenticated: boolean;
|
|
37
|
+
}) => [boolean, SetShowAuthFlow];
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { useState, useCallback } from 'react';
|
|
2
|
+
import { dynamicEvents } from '../../../../events/dynamicEvents.js';
|
|
3
|
+
import '@dynamic-labs/sdk-api';
|
|
4
|
+
import { logger } from '../../../../shared/logger.js';
|
|
5
|
+
import '@dynamic-labs/iconic';
|
|
6
|
+
import '@dynamic-labs/wallet-connector-core';
|
|
7
|
+
import 'react/jsx-runtime';
|
|
8
|
+
import '../../../ViewContext/ViewContext.js';
|
|
9
|
+
import '@dynamic-labs/wallet-book';
|
|
10
|
+
import '../../../../utils/constants/colors.js';
|
|
11
|
+
import '../../../../shared/utils/classes/storage/localStorage.js';
|
|
12
|
+
import 'viem';
|
|
13
|
+
import '@dynamic-labs/utils';
|
|
14
|
+
import '../../../../shared/consts/index.js';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* There are a multitude of scenarios where we want to ignore or insert functionality to calls
|
|
18
|
+
* to setShowAuthFlow. This hook wraps it with an options parameter to allow encapsulating these
|
|
19
|
+
* different scenarios and makes it especially easy to customize exactly which version of this method
|
|
20
|
+
* is being passed to useDynamicContext.
|
|
21
|
+
*/
|
|
22
|
+
const useShowAuthFlow = ({ isAuthenticated, isRenderingEmbeddedAuthFlow, isMultiWalletEnabled, walletConnectorOptions, }) => {
|
|
23
|
+
const [showAuthFlow, _setShowAuthFlow] = useState(false);
|
|
24
|
+
const setShowAuthFlow = useCallback((value, options = {}) => {
|
|
25
|
+
var _a;
|
|
26
|
+
const { emitCancelAuth, ignoreIfIsEmbeddedWidget, initializeWalletConnect, performMultiWalletChecks, } = Object.assign({ emitCancelAuth: false, ignoreIfIsEmbeddedWidget: true, initializeWalletConnect: true, performMultiWalletChecks: false }, options);
|
|
27
|
+
if (value) {
|
|
28
|
+
if (ignoreIfIsEmbeddedWidget && isRenderingEmbeddedAuthFlow.current)
|
|
29
|
+
return;
|
|
30
|
+
if (performMultiWalletChecks && isAuthenticated) {
|
|
31
|
+
if (!isMultiWalletEnabled) {
|
|
32
|
+
logger.warn('setShowAuthFlow was called while the user is logged in, but Dynamic is not configured with multi-wallet enabled. This results in a no-op.');
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
logger.warn('Using setShowAuthFlow to render the wallet list when the user is logged in is deprecated. Use setShowLinkNewWalletModal instead. For more information, see: https://docs.dynamic.xyz/react-sdk/hooks/usedynamiccontext');
|
|
36
|
+
}
|
|
37
|
+
if (initializeWalletConnect) {
|
|
38
|
+
(_a = walletConnectorOptions
|
|
39
|
+
.find((wallet) => wallet.walletConnector.key === 'walletconnect')) === null || _a === void 0 ? void 0 : _a.walletConnector.init();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else if (emitCancelAuth && showAuthFlow)
|
|
43
|
+
dynamicEvents.emit('authFlowCancelled');
|
|
44
|
+
_setShowAuthFlow(value);
|
|
45
|
+
}, [
|
|
46
|
+
isAuthenticated,
|
|
47
|
+
isMultiWalletEnabled,
|
|
48
|
+
isRenderingEmbeddedAuthFlow,
|
|
49
|
+
showAuthFlow,
|
|
50
|
+
walletConnectorOptions,
|
|
51
|
+
]);
|
|
52
|
+
return [showAuthFlow, setShowAuthFlow];
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export { useShowAuthFlow };
|
package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.cjs
CHANGED
|
@@ -70,6 +70,7 @@ const useTieCallbacksToEvents = (clientCallbacks) => {
|
|
|
70
70
|
else
|
|
71
71
|
(_b = clientCallbacks === null || clientCallbacks === void 0 ? void 0 : clientCallbacks.onEmailVerificationFailure) === null || _b === void 0 ? void 0 : _b.call(clientCallbacks, email);
|
|
72
72
|
});
|
|
73
|
+
useDynamicEvents.useInternalDynamicEvents('authFlowCancelled', () => { var _a; return (_a = clientCallbacks === null || clientCallbacks === void 0 ? void 0 : clientCallbacks.onAuthFlowCancel) === null || _a === void 0 ? void 0 : _a.call(clientCallbacks); });
|
|
73
74
|
};
|
|
74
75
|
|
|
75
76
|
exports.useTieCallbacksToEvents = useTieCallbacksToEvents;
|
package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.js
CHANGED
|
@@ -66,6 +66,7 @@ const useTieCallbacksToEvents = (clientCallbacks) => {
|
|
|
66
66
|
else
|
|
67
67
|
(_b = clientCallbacks === null || clientCallbacks === void 0 ? void 0 : clientCallbacks.onEmailVerificationFailure) === null || _b === void 0 ? void 0 : _b.call(clientCallbacks, email);
|
|
68
68
|
});
|
|
69
|
+
useInternalDynamicEvents('authFlowCancelled', () => { var _a; return (_a = clientCallbacks === null || clientCallbacks === void 0 ? void 0 : clientCallbacks.onAuthFlowCancel) === null || _a === void 0 ? void 0 : _a.call(clientCallbacks); });
|
|
69
70
|
};
|
|
70
71
|
|
|
71
72
|
export { useTieCallbacksToEvents };
|
|
@@ -6,7 +6,7 @@ import { AccessDeniedCustomButton, AccountSwitchState, AuthModeType, AwaitingSig
|
|
|
6
6
|
import { SocialNetworkIconType } from '../../../utils/functions/getSocialNetworkIcon';
|
|
7
7
|
import { MultiWalletWidgetStateSetter } from '../../../utils/hooks/multiWallet';
|
|
8
8
|
import { ThemeData, ThemeSetting } from '../../ThemeContext';
|
|
9
|
-
import { DisplayOrder, SetDisplayOrderPriority } from '../hooks';
|
|
9
|
+
import { DisplayOrder, SetDisplayOrderPriority, SetShowAuthFlow } from '../hooks';
|
|
10
10
|
import { SetCallbackType } from '../useCustomerCallbacks';
|
|
11
11
|
export type ChainsToConnect = {
|
|
12
12
|
chain: Chain;
|
|
@@ -101,9 +101,7 @@ export interface IDynamicContext {
|
|
|
101
101
|
setQrcodeUri: Dispatch<SetStateAction<string>>;
|
|
102
102
|
setSelectedWalletConnectorKey: (key: string | null) => void;
|
|
103
103
|
setSelectedWalletWithAction: (walletWithAction: WalletWithAction | null) => void;
|
|
104
|
-
setShowAuthFlow:
|
|
105
|
-
/** The unwrapped version of setShowAuthFlow. See useSetShowAuthFlowWithInit.ts for context */
|
|
106
|
-
internalSetShowAuthFlow: Dispatch<SetStateAction<boolean>>;
|
|
104
|
+
setShowAuthFlow: SetShowAuthFlow;
|
|
107
105
|
setShowLinkNewWalletModal: Dispatch<SetStateAction<boolean>>;
|
|
108
106
|
setShowDynamicUserProfile: Dispatch<SetStateAction<boolean>>;
|
|
109
107
|
setShowPasskeyCreatedSuccess: VoidFunction;
|
|
@@ -141,18 +139,23 @@ export interface IDynamicContext {
|
|
|
141
139
|
walletConnectorOptions: WalletOption[];
|
|
142
140
|
walletsFilter?: (options: WalletOption[]) => WalletOption[];
|
|
143
141
|
removeConnectedWalletsInfo: () => void;
|
|
144
|
-
/** Whether any verifications are ongoing for the current user (ex. connect, sign and email login verifications
|
|
142
|
+
/** Whether any verifications are ongoing for the current user (ex. connect, sign and email login verifications
|
|
143
|
+
* @deprecated Listen to our callbacks instead: https://docs.dynamic.xyz/react-sdk/callbacks/callbacks-introduction
|
|
144
|
+
*/
|
|
145
145
|
isVerificationInProgress: boolean;
|
|
146
146
|
/** State setter for isVerificationInProgress
|
|
147
147
|
* @param checkWasSetOnDisable when true, if newValue is false, logs a message if the flag wasn't set to true before
|
|
148
|
+
* @deprecated This will be dropped in v2
|
|
148
149
|
*/
|
|
149
150
|
setIsVerificationInProgress: (newValue: boolean, checkWasSetOnDisable?: boolean) => void;
|
|
150
151
|
/** Legacy boolean flag used in useVerifyOnAwaitingSignature. Used to be called "isVerifying".
|
|
151
152
|
* Was meant to prevent an effect from accidentally triggering again when it shouldn't.
|
|
152
|
-
* Should be removed asap.
|
|
153
|
+
* @deprecated Should be removed asap.
|
|
153
154
|
*/
|
|
154
155
|
legacyIsVerifying: boolean;
|
|
155
|
-
/** Legacy setter for legacyIsVerifying
|
|
156
|
+
/** Legacy setter for legacyIsVerifying
|
|
157
|
+
* @deprecated Should be removed asap.
|
|
158
|
+
*/
|
|
156
159
|
setLegacyIsVerifying: Dispatch<SetStateAction<boolean>>;
|
|
157
160
|
/** Whether there is an instance of DynamicEmbeddedAuthFlow being rendered */
|
|
158
161
|
isRenderingEmbeddedAuthFlow: MutableRefObject<boolean>;
|
|
@@ -40,7 +40,12 @@ const useDynamicContext = () => {
|
|
|
40
40
|
setMultiWalletWidgetState,
|
|
41
41
|
setNetwork,
|
|
42
42
|
setPrimaryWallet,
|
|
43
|
-
setShowAuthFlow,
|
|
43
|
+
setShowAuthFlow: (value) => setShowAuthFlow(value, {
|
|
44
|
+
emitCancelAuth: true,
|
|
45
|
+
ignoreIfIsEmbeddedWidget: true,
|
|
46
|
+
initializeWalletConnect: true,
|
|
47
|
+
performMultiWalletChecks: true,
|
|
48
|
+
}),
|
|
44
49
|
setShowBridgeWidget,
|
|
45
50
|
setShowDynamicUserProfile,
|
|
46
51
|
setShowLinkNewWalletModal,
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { Dispatch, SetStateAction } from 'react';
|
|
1
2
|
import { IDynamicContext } from './types';
|
|
2
|
-
export type UseDynamicContext = Pick<IDynamicContext, 'accountSwitchState' | 'authMode' | 'authToken' | 'awaitingSignatureState' | 'getNameService' | 'handleLogOut' | 'handleUnlinkWallet' | 'isAuthenticated' | 'isFullyConnected' | 'isVerificationInProgress' | 'loadingNetwork' | 'locale' | 'loginWithEmail' | 'multiWalletWidgetState' | 'network' | 'networkConfigurations' | 'primaryWallet' | 'qrcodeUri' | 'rpcProviders' | 'sdkHasLoaded' | 'setLogInWithEmail' | 'setMultiWalletWidgetState' | 'setNetwork' | 'setPrimaryWallet' | '
|
|
3
|
+
export type UseDynamicContext = Pick<IDynamicContext, 'accountSwitchState' | 'authMode' | 'authToken' | 'awaitingSignatureState' | 'getNameService' | 'handleLogOut' | 'handleUnlinkWallet' | 'isAuthenticated' | 'isFullyConnected' | 'isVerificationInProgress' | 'loadingNetwork' | 'locale' | 'loginWithEmail' | 'multiWalletWidgetState' | 'network' | 'networkConfigurations' | 'primaryWallet' | 'qrcodeUri' | 'rpcProviders' | 'sdkHasLoaded' | 'setLogInWithEmail' | 'setMultiWalletWidgetState' | 'setNetwork' | 'setPrimaryWallet' | 'setShowDynamicUserProfile' | 'setShowQrcodeModal' | 'shadowDOMEnabled' | 'showAuthFlow' | 'showQrcodeModal' | 'user' | 'walletConnector' | 'walletConnectorOptions' | 'bridgeChains' | 'bridgeChainsToConnect' | 'setShowBridgeWidget' | 'sendWagmiSettings' | 'showDynamicUserProfile' | 'setShowLinkNewWalletModal'> & {
|
|
4
|
+
setShowAuthFlow: Dispatch<SetStateAction<boolean>>;
|
|
5
|
+
};
|
|
3
6
|
export declare const useDynamicContext: () => UseDynamicContext;
|