@dynamic-labs/sdk-react-core 2.1.0-alpha.22 → 2.1.0-alpha.23
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 +15 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +13 -13
- package/src/index.d.ts +5 -1
- package/src/lib/components/AuthProviderIcon/AuthProviderIcon.cjs +2 -6
- package/src/lib/components/AuthProviderIcon/AuthProviderIcon.js +2 -6
- package/src/lib/components/SyncEmbeddedWalletAuthFlow/SyncEmbeddedWalletAuthFlow.cjs +11 -5
- package/src/lib/components/SyncEmbeddedWalletAuthFlow/SyncEmbeddedWalletAuthFlow.js +11 -5
- package/src/lib/context/DynamicContext/DynamicContext.cjs +8 -17
- package/src/lib/context/DynamicContext/DynamicContext.js +8 -17
- package/src/lib/context/DynamicContext/hooks/useHandleLogout/types.d.ts +0 -1
- package/src/lib/context/DynamicContext/hooks/useHandleLogout/useHandleLogout.cjs +0 -2
- package/src/lib/context/DynamicContext/hooks/useHandleLogout/useHandleLogout.js +1 -3
- package/src/lib/context/DynamicContext/hooks/useIsAuthenticated/index.d.ts +1 -0
- package/src/lib/context/DynamicContext/hooks/useIsAuthenticated/useIsAuthenticated.cjs +37 -0
- package/src/lib/context/DynamicContext/hooks/useIsAuthenticated/useIsAuthenticated.d.ts +1 -0
- package/src/lib/context/DynamicContext/hooks/useIsAuthenticated/useIsAuthenticated.js +33 -0
- package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.cjs +9 -1
- package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.js +9 -1
- package/src/lib/context/DynamicContext/types/index.d.ts +1 -4
- package/src/lib/context/LoadingContext/LoadingContext.cjs +1 -1
- package/src/lib/context/LoadingContext/LoadingContext.js +1 -1
- package/src/lib/context/PhantomRedirectContext/useResponseHandlers.cjs +1 -1
- package/src/lib/context/PhantomRedirectContext/useResponseHandlers.js +1 -1
- package/src/lib/context/SocialRedirectContext/SocialRedirectContext.cjs +1 -1
- package/src/lib/context/SocialRedirectContext/SocialRedirectContext.js +1 -1
- package/src/lib/data/api/api.cjs +1 -3
- package/src/lib/data/api/api.js +1 -3
- package/src/lib/data/api/user/user.cjs +9 -6
- package/src/lib/data/api/user/user.d.ts +5 -5
- package/src/lib/data/api/user/user.js +9 -6
- package/src/lib/data/api/wallets/wallets.cjs +6 -3
- package/src/lib/data/api/wallets/wallets.d.ts +3 -2
- package/src/lib/data/api/wallets/wallets.js +7 -4
- package/src/lib/events/auth.d.ts +38 -0
- package/src/lib/events/dynamicEvents.d.ts +8 -32
- package/src/lib/events/embeddedWallet.d.ts +14 -0
- package/src/lib/events/otp.d.ts +5 -0
- package/src/lib/events/passkey.d.ts +5 -0
- package/src/lib/events/social.d.ts +3 -0
- package/src/lib/events/ui.d.ts +10 -0
- package/src/lib/events/wallets.d.ts +7 -0
- package/src/lib/layout/DynamicAuthLayout/Header/header.cjs +6 -1
- package/src/lib/layout/DynamicAuthLayout/Header/header.js +6 -1
- package/src/lib/shared/types/dynamicEventsCallbacks.d.ts +11 -0
- package/src/lib/store/utils/storeAuthTokenAndUser/storeAuthTokenAndUser.cjs +1 -2
- package/src/lib/store/utils/storeAuthTokenAndUser/storeAuthTokenAndUser.d.ts +6 -2
- package/src/lib/store/utils/storeAuthTokenAndUser/storeAuthTokenAndUser.js +1 -2
- package/src/lib/utils/constants/index.d.ts +1 -1
- package/src/lib/utils/constants/localStorage.cjs +0 -2
- package/src/lib/utils/constants/localStorage.d.ts +0 -1
- package/src/lib/utils/constants/localStorage.js +1 -2
- package/src/lib/utils/functions/index.d.ts +0 -1
- package/src/lib/utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.cjs +1 -1
- package/src/lib/utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.js +1 -1
- package/src/lib/utils/hooks/authenticationHooks/useConnectAndSignSplitSteps/useConnectAndSignSplitSteps.cjs +1 -1
- package/src/lib/utils/hooks/authenticationHooks/useConnectAndSignSplitSteps/useConnectAndSignSplitSteps.js +1 -1
- package/src/lib/utils/hooks/authenticationHooks/useOtpVerificationRequest/useOtpVerificationRequest.cjs +12 -7
- package/src/lib/utils/hooks/authenticationHooks/useOtpVerificationRequest/useOtpVerificationRequest.js +13 -8
- 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/events/useDynamicEvents/useDynamicEvents.d.ts +2 -2
- package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.cjs +1 -2
- package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.d.ts +1 -2
- package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.js +1 -2
- package/src/lib/utils/hooks/useEmailProvider/useEmailProvider.cjs +29 -14
- package/src/lib/utils/hooks/useEmailProvider/useEmailProvider.js +29 -14
- package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +4 -3
- package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +4 -3
- package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.cjs +1 -1
- package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.js +2 -2
- package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.cjs +4 -5
- package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.js +5 -6
- package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.cjs +0 -1
- package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.js +0 -1
- package/src/lib/utils/hooks/useEmbeddedWalletPassword/useEmbeddedWalletPassword.cjs +2 -2
- package/src/lib/utils/hooks/useEmbeddedWalletPassword/useEmbeddedWalletPassword.js +2 -2
- package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.cjs +8 -6
- package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.js +8 -6
- package/src/lib/utils/hooks/useHandleVerificationRequired/useHandleVerificationRequired.cjs +4 -4
- package/src/lib/utils/hooks/useHandleVerificationRequired/useHandleVerificationRequired.d.ts +4 -3
- package/src/lib/utils/hooks/useHandleVerificationRequired/useHandleVerificationRequired.js +4 -4
- package/src/lib/utils/hooks/useHandleVerifiedUser/useHandleVerifiedUser.cjs +1 -16
- package/src/lib/utils/hooks/useHandleVerifiedUser/useHandleVerifiedUser.d.ts +1 -4
- package/src/lib/utils/hooks/useHandleVerifiedUser/useHandleVerifiedUser.js +1 -16
- package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.cjs +1 -1
- package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.js +1 -1
- package/src/lib/utils/hooks/useMfa/useMfa.cjs +37 -20
- package/src/lib/utils/hooks/useMfa/useMfa.js +37 -20
- package/src/lib/utils/hooks/useNetworkNotSupported/useNetworkNotSupported.cjs +1 -1
- package/src/lib/utils/hooks/useNetworkNotSupported/useNetworkNotSupported.js +1 -1
- package/src/lib/utils/hooks/usePasskeyRecovery/usePasskeyRecovery.cjs +13 -12
- package/src/lib/utils/hooks/usePasskeyRecovery/usePasskeyRecovery.js +13 -12
- package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.cjs +6 -11
- package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.d.ts +3 -2
- package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.js +6 -11
- package/src/lib/utils/hooks/useSetWalletConnectorVerifiedCredentials/useSetWalletConnectorVerifiedCredentials.cjs +3 -22
- package/src/lib/utils/hooks/useSetWalletConnectorVerifiedCredentials/useSetWalletConnectorVerifiedCredentials.d.ts +2 -1
- package/src/lib/utils/hooks/useSetWalletConnectorVerifiedCredentials/useSetWalletConnectorVerifiedCredentials.js +3 -22
- package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.cjs +8 -8
- package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.js +8 -8
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +39 -27
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.d.ts +5 -3
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +39 -27
- package/src/lib/utils/hooks/useUserAuth/useUserAuth.cjs +39 -33
- package/src/lib/utils/hooks/useUserAuth/useUserAuth.d.ts +2 -2
- package/src/lib/utils/hooks/useUserAuth/useUserAuth.js +39 -33
- package/src/lib/utils/hooks/useUserAuth/useUserAuth.types.d.ts +7 -24
- package/src/lib/utils/hooks/useUserDataForm/useUserDataForm.cjs +1 -1
- package/src/lib/utils/hooks/useUserDataForm/useUserDataForm.js +1 -1
- package/src/lib/utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.cjs +9 -16
- package/src/lib/utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.js +10 -17
- package/src/lib/utils/hooks/useValidateSession/useValidateSession.cjs +1 -1
- package/src/lib/utils/hooks/useValidateSession/useValidateSession.js +1 -1
- package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.cjs +21 -3
- package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.js +21 -3
- package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.cjs +10 -26
- package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.d.ts +1 -2
- package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.js +10 -26
- package/src/lib/views/CollectUserDataView/CollectUserDataView.cjs +4 -6
- package/src/lib/views/CollectUserDataView/CollectUserDataView.js +4 -6
- package/src/lib/views/CollectUserDataView/OnboardingUserDataForm/OnboardingUserDataForm.cjs +3 -5
- package/src/lib/views/CollectUserDataView/OnboardingUserDataForm/OnboardingUserDataForm.js +3 -5
- package/src/lib/views/CollectUserDataViewNoWallet/CollectUserDataViewNoWallet.cjs +3 -5
- package/src/lib/views/CollectUserDataViewNoWallet/CollectUserDataViewNoWallet.js +3 -5
- package/src/lib/views/EmailVerification/EmailVerification.cjs +8 -5
- package/src/lib/views/EmailVerification/EmailVerification.js +8 -5
- package/src/lib/views/EmailWalletOTPVerificationView/EmailWalletOTPVerificationView.cjs +5 -0
- package/src/lib/views/EmailWalletOTPVerificationView/EmailWalletOTPVerificationView.js +5 -0
- package/src/lib/views/EmbeddedReveal/EmbeddedRevealView/EmbeddedRevealView.cjs +3 -6
- package/src/lib/views/EmbeddedReveal/EmbeddedRevealView/EmbeddedRevealView.js +3 -6
- package/src/lib/views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.cjs +7 -13
- package/src/lib/views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.d.ts +3 -3
- package/src/lib/views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.js +8 -14
- package/src/lib/views/LoginView/LoginView.cjs +3 -21
- package/src/lib/views/LoginView/LoginView.js +4 -22
- package/src/lib/views/LoginView/sections/PhoneNumberSignInSection/useSubmitPhoneNumber/useSubmitPhoneNumber.cjs +11 -1
- package/src/lib/views/LoginView/sections/PhoneNumberSignInSection/useSubmitPhoneNumber/useSubmitPhoneNumber.js +11 -1
- package/src/lib/views/MergeUserAccountsWithSameEmailView/MergeUserAccountsWithSameEmailView.cjs +3 -3
- package/src/lib/views/MergeUserAccountsWithSameEmailView/MergeUserAccountsWithSameEmailView.js +3 -3
- package/src/lib/views/NoAccess/NoAccess.cjs +2 -2
- package/src/lib/views/NoAccess/NoAccess.js +2 -2
- package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.cjs +2 -8
- package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.js +2 -8
- package/src/lib/views/Passkey/PasskeyRecovery/BundleValidation/PasskeyBundleRecovery.cjs +3 -3
- package/src/lib/views/Passkey/PasskeyRecovery/BundleValidation/PasskeyBundleRecovery.js +3 -3
- package/src/lib/views/Passkey/PasskeyRecovery/CompleteRecovery/PasskeyCompleteRecovery.cjs +1 -2
- package/src/lib/views/Passkey/PasskeyRecovery/CompleteRecovery/PasskeyCompleteRecovery.js +1 -2
- package/src/lib/views/Passkey/utils/createEmbeddedWalletRequest/createEmbeddedWalletRequest.cjs +1 -4
- package/src/lib/views/Passkey/utils/createEmbeddedWalletRequest/createEmbeddedWalletRequest.d.ts +1 -2
- package/src/lib/views/Passkey/utils/createEmbeddedWalletRequest/createEmbeddedWalletRequest.js +1 -4
- package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.cjs +15 -20
- package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.d.ts +8 -13
- package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.js +15 -20
- package/src/lib/views/SmsVerification/useSmsVerification/useSmsVerification.cjs +11 -8
- package/src/lib/views/SmsVerification/useSmsVerification/useSmsVerification.js +11 -8
- package/src/lib/views/viewToComponentMap.cjs +1 -1
- package/src/lib/views/viewToComponentMap.d.ts +1 -1
- package/src/lib/views/viewToComponentMap.js +1 -1
- package/src/lib/widgets/DynamicWidget/context/DynamicWidgetContext.cjs +1 -1
- package/src/lib/widgets/DynamicWidget/context/DynamicWidgetContext.js +1 -1
- package/src/lib/utils/functions/getOnboardingAuthToken/getOnboardingAuthToken.cjs +0 -31
- package/src/lib/utils/functions/getOnboardingAuthToken/getOnboardingAuthToken.d.ts +0 -1
- package/src/lib/utils/functions/getOnboardingAuthToken/getOnboardingAuthToken.js +0 -27
- package/src/lib/utils/functions/getOnboardingAuthToken/index.d.ts +0 -1
- package/src/lib/utils/functions/handleUnlinkHelper/handleUnlinkHelper.cjs +0 -49
- package/src/lib/utils/functions/handleUnlinkHelper/handleUnlinkHelper.d.ts +0 -13
- package/src/lib/utils/functions/handleUnlinkHelper/handleUnlinkHelper.js +0 -45
- package/src/lib/utils/functions/handleUnlinkHelper/index.d.ts +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import { __awaiter } from '../../../../../_virtual/_tslib.js';
|
|
3
3
|
import { DynamicError, EmailAlreadyExistsError, CustomFieldNotUniqueError, UsernameAlreadyExistsError, TooManyEmailVerificationsError, InvalidPhoneNumberError, NoAccessError, AccountExistsError, UserHasAccountWithEmailError, sleep } from '@dynamic-labs/utils';
|
|
4
|
+
import { useAccountExistsContext } from '../../../context/AccountExistsContext/AccountExistsContext.js';
|
|
4
5
|
import 'react';
|
|
5
6
|
import '../../../context/DynamicContext/DynamicContext.js';
|
|
6
7
|
import '@dynamic-labs/sdk-api-core';
|
|
@@ -10,27 +11,25 @@ import '@dynamic-labs/wallet-connector-core';
|
|
|
10
11
|
import 'react/jsx-runtime';
|
|
11
12
|
import { useViewContext } from '../../../context/ViewContext/ViewContext.js';
|
|
12
13
|
import '@dynamic-labs/wallet-book';
|
|
13
|
-
import { AUTH_ONBOARDING_TOKEN } from '../../constants/localStorage.js';
|
|
14
14
|
import '../../constants/colors.js';
|
|
15
15
|
import '../../constants/values.js';
|
|
16
|
-
import
|
|
16
|
+
import '../../../shared/utils/classes/storage/localStorage.js';
|
|
17
17
|
import '../../../shared/consts/index.js';
|
|
18
18
|
import '../../../events/dynamicEvents.js';
|
|
19
19
|
import '../../../context/CaptchaContext/CaptchaContext.js';
|
|
20
20
|
import { useErrorContext } from '../../../context/ErrorContext/ErrorContext.js';
|
|
21
|
-
import { createUserProfileFromSdkUser } from '../../functions/createUserProfile/createUserProfile.js';
|
|
22
21
|
import '@dynamic-labs/multi-wallet';
|
|
23
22
|
import 'react-international-phone';
|
|
24
23
|
import 'viem';
|
|
25
24
|
import 'viem/chains';
|
|
26
25
|
import '../../../config/ApiEndpoint.js';
|
|
26
|
+
import { getUserMfaDevices } from '../../../data/api/mfa/mfa.js';
|
|
27
27
|
import '../../../locale/locale.js';
|
|
28
|
-
import '
|
|
28
|
+
import { storeAuthTokenAndUser } from '../../../store/utils/storeAuthTokenAndUser/storeAuthTokenAndUser.js';
|
|
29
|
+
import { updateJWTAndCreateUserProfile } from '../../functions/updateJWTAndCreateUserProfile/updateJWTAndCreateUserProfile.js';
|
|
29
30
|
import '../../../context/AccessDeniedContext/AccessDeniedContext.js';
|
|
30
|
-
import { useAccountExistsContext } from '../../../context/AccountExistsContext/AccountExistsContext.js';
|
|
31
31
|
import '../../../context/UserWalletsContext/UserWalletsContext.js';
|
|
32
32
|
import { useVerification } from '../../../context/VerificationContext/VerificationContext.js';
|
|
33
|
-
import { useCreateUserProfileByJWTCallback } from '../useCreateUserProfileByJWTCallback/useCreateUserProfileByJWTCallback.js';
|
|
34
33
|
import 'react-dom';
|
|
35
34
|
import { useEmbeddedWallet } from '../useEmbeddedWallet/useEmbeddedWallet.js';
|
|
36
35
|
import '../../../context/WalletContext/WalletContext.js';
|
|
@@ -43,6 +42,7 @@ import '../../../context/MockContext/MockContext.js';
|
|
|
43
42
|
import '../../../views/CollectUserDataView/useFields.js';
|
|
44
43
|
import '../useUserUpdateRequest/useUpdateUser/useUpdateUser.js';
|
|
45
44
|
import '../../../context/UserFieldEditorContext/UserFieldEditorContext.js';
|
|
45
|
+
import '@dynamic-labs/store';
|
|
46
46
|
import '@dynamic-labs/rpc-providers';
|
|
47
47
|
import 'react-i18next';
|
|
48
48
|
import '../../../components/Alert/Alert.js';
|
|
@@ -80,39 +80,49 @@ import { useInternalDynamicContext } from '../../../context/DynamicContext/useDy
|
|
|
80
80
|
|
|
81
81
|
const sleepToShowSuccessMessage = () => sleep(1500);
|
|
82
82
|
const useUserAuth = ({ authMethod, }) => {
|
|
83
|
-
const { handleLogOut,
|
|
83
|
+
const { handleLogOut, setShowAuthFlow, setCallback, setMultiWalletWidgetState, environmentId, } = useInternalDynamicContext();
|
|
84
84
|
const { view, setView, goToInitialView } = useViewContext();
|
|
85
85
|
const { setLoading } = useLoadingContext();
|
|
86
86
|
const { setErrorMessage, setError } = useErrorContext();
|
|
87
87
|
const { setExistentAccountData } = useAccountExistsContext();
|
|
88
|
-
const
|
|
89
|
-
const { createUserProfileByJWT } = useCreateUserProfileByJWTCallback();
|
|
88
|
+
const handleVerifiedUser = useHandleVerifiedUser();
|
|
90
89
|
const { displayedDestination: formattedPhone } = useVerification();
|
|
91
90
|
const { shouldAutoCreateEmbeddedWallet } = useEmbeddedWallet();
|
|
92
91
|
const initAuth = (_a) => __awaiter(void 0, [_a], void 0, function* ({ isSignIn = true, verifyFunction, onVerifySuccess, onSettled, onError, showSuccessMessage = false, skipDefaultErrorHandling = false, }) {
|
|
93
|
-
var _b;
|
|
92
|
+
var _b, _c;
|
|
94
93
|
logger.debug('initAuth', { authMethod, isSignIn });
|
|
95
94
|
try {
|
|
96
95
|
const { jwt, minifiedJwt, user } = (yield verifyFunction()) || {};
|
|
97
|
-
if (!
|
|
96
|
+
if (!user) {
|
|
98
97
|
yield cancelAuth();
|
|
99
|
-
throw new DynamicError('No
|
|
98
|
+
throw new DynamicError('No user returned from verify function');
|
|
100
99
|
}
|
|
101
|
-
const userProfile =
|
|
100
|
+
const userProfile = storeAuthTokenAndUser({ jwt, minifiedJwt, user });
|
|
102
101
|
onVerifySuccess === null || onVerifySuccess === void 0 ? void 0 : onVerifySuccess(userProfile);
|
|
103
102
|
if (isSignIn && ((_b = userProfile.missingFields) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
104
|
-
yield handleOnboarding(
|
|
103
|
+
yield handleOnboarding(showSuccessMessage, onSettled);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if ((_c = user.scope) === null || _c === void 0 ? void 0 : _c.includes('requiresAdditionalAuth')) {
|
|
107
|
+
// this is needed because useMfa relies on the jwt being available in LS
|
|
108
|
+
// this function only stores the jwt and creates the user, but does not set
|
|
109
|
+
// the user state
|
|
110
|
+
updateJWTAndCreateUserProfile(jwt, minifiedJwt);
|
|
111
|
+
const devices = yield getUserMfaDevices({ environmentId });
|
|
112
|
+
if (devices.length === 0) {
|
|
113
|
+
setView('mfa-choose-device');
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
setView('mfa-verification');
|
|
117
|
+
}
|
|
105
118
|
return;
|
|
106
119
|
}
|
|
107
120
|
setMultiWalletWidgetState('idle');
|
|
108
|
-
|
|
109
|
-
LocalStorage.removeFromLS(AUTH_ONBOARDING_TOKEN);
|
|
110
|
-
yield handleVerifiedUserWithUser(userProfile);
|
|
121
|
+
yield handleVerifiedUser(userProfile);
|
|
111
122
|
if (showSuccessMessage) {
|
|
112
123
|
// this timeout is set to make sure that the user will see success message
|
|
113
124
|
yield sleepToShowSuccessMessage();
|
|
114
125
|
}
|
|
115
|
-
yield createUserProfileByJWT(jwt, minifiedJwt);
|
|
116
126
|
if (isSignIn) {
|
|
117
127
|
setCallback('authSuccess');
|
|
118
128
|
}
|
|
@@ -137,9 +147,7 @@ const useUserAuth = ({ authMethod, }) => {
|
|
|
137
147
|
onSettled === null || onSettled === void 0 ? void 0 : onSettled();
|
|
138
148
|
}
|
|
139
149
|
});
|
|
140
|
-
const handleOnboarding = (
|
|
141
|
-
setOnboardingOnlyJwt(jwt);
|
|
142
|
-
LocalStorage.setToLS(AUTH_ONBOARDING_TOKEN, jwt, true);
|
|
150
|
+
const handleOnboarding = (showSuccessMessage, onSettled) => __awaiter(void 0, void 0, void 0, function* () {
|
|
143
151
|
if (showSuccessMessage) {
|
|
144
152
|
yield sleepToShowSuccessMessage();
|
|
145
153
|
}
|
|
@@ -180,7 +188,7 @@ const useUserAuth = ({ authMethod, }) => {
|
|
|
180
188
|
// Handle the case where the user has already an account with the email
|
|
181
189
|
if (error instanceof UserHasAccountWithEmailError) {
|
|
182
190
|
setView('merge-user-accounts-with-same-email', {
|
|
183
|
-
returnToView: options.isEmailRecoveryFlow
|
|
191
|
+
returnToView: 'isEmailRecoveryFlow' in options && options.isEmailRecoveryFlow
|
|
184
192
|
? 'passkey-recovery-add-email'
|
|
185
193
|
: undefined,
|
|
186
194
|
});
|
|
@@ -197,7 +205,7 @@ const useUserAuth = ({ authMethod, }) => {
|
|
|
197
205
|
setError(error.message);
|
|
198
206
|
}
|
|
199
207
|
};
|
|
200
|
-
const handleVerifyMissingFields = (
|
|
208
|
+
const handleVerifyMissingFields = (_d) => __awaiter(void 0, [_d], void 0, function* ({ missingFields, isEmailVerificationRequired, isSmsVerificationRequired, }) {
|
|
201
209
|
if (isEmailVerificationRequired &&
|
|
202
210
|
missingFields.find((field) => field.name === 'email')) {
|
|
203
211
|
setView('verify-email');
|
|
@@ -210,13 +218,16 @@ const useUserAuth = ({ authMethod, }) => {
|
|
|
210
218
|
}
|
|
211
219
|
setView(view.type);
|
|
212
220
|
});
|
|
213
|
-
const completeAuth = (
|
|
221
|
+
const completeAuth = (_e) => __awaiter(void 0, [_e], void 0, function* ({ completeSignInFlow, updateJwtFunction, onValidUpdatedJwt, options = {}, }) {
|
|
214
222
|
logger.debug('completeAuth', { authMethod });
|
|
215
223
|
try {
|
|
216
224
|
const { updateUserProfileResponse, isSmsVerificationRequired, isEmailVerificationRequired, missingFields, } = yield updateJwtFunction();
|
|
217
225
|
onValidUpdatedJwt === null || onValidUpdatedJwt === void 0 ? void 0 : onValidUpdatedJwt();
|
|
218
|
-
|
|
219
|
-
|
|
226
|
+
const updatedUser = storeAuthTokenAndUser({
|
|
227
|
+
jwt: updateUserProfileResponse.jwt,
|
|
228
|
+
minifiedJwt: updateUserProfileResponse.minifiedJwt,
|
|
229
|
+
user: updateUserProfileResponse.user,
|
|
230
|
+
});
|
|
220
231
|
if (missingFields.length > 0) {
|
|
221
232
|
yield handleVerifyMissingFields({
|
|
222
233
|
isEmailVerificationRequired,
|
|
@@ -225,13 +236,8 @@ const useUserAuth = ({ authMethod, }) => {
|
|
|
225
236
|
});
|
|
226
237
|
return;
|
|
227
238
|
}
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
yield handleVerifiedUserWithJWT(updateUserProfileResponse.jwt);
|
|
231
|
-
setOnboardingOnlyJwt(undefined);
|
|
232
|
-
LocalStorage.removeFromLS(AUTH_ONBOARDING_TOKEN);
|
|
233
|
-
setCallback('authSuccess');
|
|
234
|
-
}
|
|
239
|
+
yield handleVerifiedUser(updatedUser);
|
|
240
|
+
setCallback('authSuccess');
|
|
235
241
|
if (completeSignInFlow) {
|
|
236
242
|
const shouldReturn = yield completeSignInFlow(updateUserProfileResponse);
|
|
237
243
|
if (shouldReturn) {
|
|
@@ -1,26 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { UpdateSelfResponse, VerifyResponse } from '@dynamic-labs/sdk-api-core';
|
|
2
|
+
import { AuthMethod, AuthOptions } from '@dynamic-labs/types';
|
|
3
|
+
import { UserProfile } from '../../../..';
|
|
3
4
|
import { UpdateUserReturnPayload } from '../useUserUpdateRequest';
|
|
4
|
-
export type
|
|
5
|
-
|
|
6
|
-
sms: SmsOptions;
|
|
7
|
-
social: SocialOptions;
|
|
8
|
-
wallet: WalletOptions;
|
|
9
|
-
};
|
|
10
|
-
export type AuthMethod = keyof AuthOptions;
|
|
11
|
-
export type EmailOptions = {
|
|
12
|
-
email?: string;
|
|
13
|
-
isEmailRecoveryFlow?: boolean;
|
|
14
|
-
};
|
|
15
|
-
export type SmsOptions = {
|
|
16
|
-
phone?: string;
|
|
17
|
-
};
|
|
18
|
-
export type SocialOptions = {
|
|
19
|
-
provider?: ProviderEnum;
|
|
20
|
-
};
|
|
21
|
-
export type WalletOptions = {
|
|
22
|
-
walletAddress?: string;
|
|
23
|
-
walletConnector?: WalletConnector;
|
|
5
|
+
export type UseUserAuthOptions = {
|
|
6
|
+
[K in AuthMethod]: Partial<AuthOptions[K]>;
|
|
24
7
|
};
|
|
25
8
|
export type OnErrorCallback = (error: unknown) => void;
|
|
26
9
|
export type OnSettledCallback = () => void;
|
|
@@ -62,7 +45,7 @@ export type InitUserAuthProps<T extends AuthMethod> = {
|
|
|
62
45
|
* Props specific to the auth method.
|
|
63
46
|
* (e.g. isRecoveryFlow for email auth, provider for social auth, etc.)
|
|
64
47
|
*/
|
|
65
|
-
options?:
|
|
48
|
+
options?: UseUserAuthOptions[T];
|
|
66
49
|
};
|
|
67
50
|
export type CompleteUserAuthProps<T extends AuthMethod> = {
|
|
68
51
|
/**
|
|
@@ -82,5 +65,5 @@ export type CompleteUserAuthProps<T extends AuthMethod> = {
|
|
|
82
65
|
* Props specific to the auth method.
|
|
83
66
|
* (e.g. isRecoveryFlow for email auth, provider for social auth, etc.)
|
|
84
67
|
*/
|
|
85
|
-
options?:
|
|
68
|
+
options?: UseUserAuthOptions[T];
|
|
86
69
|
};
|
|
@@ -78,7 +78,7 @@ const useUserDataForm = ({ onSubmit, onError, userProfile, shouldEnforcePolicies
|
|
|
78
78
|
formikHelper.setErrors({ username: 'Username already exists' });
|
|
79
79
|
}
|
|
80
80
|
else if (e instanceof utils.InvalidPhoneNumberError) {
|
|
81
|
-
formikHelper.setErrors({ phoneNumber:
|
|
81
|
+
formikHelper.setErrors({ phoneNumber: e.message });
|
|
82
82
|
}
|
|
83
83
|
else {
|
|
84
84
|
formikHelper.setErrors({
|
|
@@ -74,7 +74,7 @@ const useUserDataForm = ({ onSubmit, onError, userProfile, shouldEnforcePolicies
|
|
|
74
74
|
formikHelper.setErrors({ username: 'Username already exists' });
|
|
75
75
|
}
|
|
76
76
|
else if (e instanceof InvalidPhoneNumberError) {
|
|
77
|
-
formikHelper.setErrors({ phoneNumber:
|
|
77
|
+
formikHelper.setErrors({ phoneNumber: e.message });
|
|
78
78
|
}
|
|
79
79
|
else {
|
|
80
80
|
formikHelper.setErrors({
|
|
@@ -7,7 +7,6 @@ var _tslib = require('../../../../../../_virtual/_tslib.cjs');
|
|
|
7
7
|
var React = require('react');
|
|
8
8
|
var yup = require('yup');
|
|
9
9
|
require('../../../../context/DynamicContext/DynamicContext.cjs');
|
|
10
|
-
var decodeJwt = require('../../../../shared/utils/functions/decodeJwt/decodeJwt.cjs');
|
|
11
10
|
require('@dynamic-labs/sdk-api-core');
|
|
12
11
|
require('../../../../shared/logger.cjs');
|
|
13
12
|
require('@dynamic-labs/iconic');
|
|
@@ -30,11 +29,11 @@ require('viem/chains');
|
|
|
30
29
|
require('../../../../config/ApiEndpoint.cjs');
|
|
31
30
|
require('../../../../locale/locale.cjs');
|
|
32
31
|
var user = require('../../../../data/api/user/user.cjs');
|
|
32
|
+
require('@dynamic-labs/store');
|
|
33
33
|
require('../../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
|
|
34
34
|
require('../../../../context/AccountExistsContext/AccountExistsContext.cjs');
|
|
35
35
|
require('../../../../context/UserWalletsContext/UserWalletsContext.cjs');
|
|
36
36
|
var VerificationContext = require('../../../../context/VerificationContext/VerificationContext.cjs');
|
|
37
|
-
var useUpdateUserProfileByJWTCallback = require('../../useUpdateUserProfileByJWTCallback/useUpdateUserProfileByJWTCallback.cjs');
|
|
38
37
|
require('react-dom');
|
|
39
38
|
require('../../../../context/WalletContext/WalletContext.cjs');
|
|
40
39
|
require('../../../../context/ThemeContext/ThemeContext.cjs');
|
|
@@ -44,7 +43,6 @@ require('../../../../context/LoadingContext/LoadingContext.cjs');
|
|
|
44
43
|
require('../../../../context/MockContext/MockContext.cjs');
|
|
45
44
|
require('../../../../views/CollectUserDataView/useFields.cjs');
|
|
46
45
|
require('../../../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
|
|
47
|
-
require('@dynamic-labs/store');
|
|
48
46
|
require('@dynamic-labs/rpc-providers');
|
|
49
47
|
require('react-i18next');
|
|
50
48
|
require('../../../../components/Alert/Alert.cjs');
|
|
@@ -104,9 +102,7 @@ const userFieldsSchema = yup.object().shape({
|
|
|
104
102
|
username: yup.string(),
|
|
105
103
|
});
|
|
106
104
|
const useUpdateUser = (validationSchemaStripUnknown) => {
|
|
107
|
-
const {
|
|
108
|
-
const jwtToken = onboardingOnlyJwt || minAuthToken;
|
|
109
|
-
const { updateUserProfileByJWT } = useUpdateUserProfileByJWTCallback.useUpdateUserProfileByJWTCallback();
|
|
105
|
+
const { environmentId, userWithMissingFields, setCallback } = useInternalDynamicContext.useInternalDynamicContext();
|
|
110
106
|
const { setRetryData } = VerificationContext.useVerification();
|
|
111
107
|
const { selectedPhoneCountry } = FieldsStateContext.useFieldsState();
|
|
112
108
|
const updateUser = React.useCallback((userFields, options) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -116,7 +112,7 @@ const useUpdateUser = (validationSchemaStripUnknown) => {
|
|
|
116
112
|
let { metadata } = userFields;
|
|
117
113
|
// when a user has already logged in but a custom field was added to env, in order to not clear the old fields
|
|
118
114
|
metadata = metadata
|
|
119
|
-
? Object.assign(Object.assign({},
|
|
115
|
+
? Object.assign(Object.assign({}, userWithMissingFields === null || userWithMissingFields === void 0 ? void 0 : userWithMissingFields.metadata), metadata) : userWithMissingFields === null || userWithMissingFields === void 0 ? void 0 : userWithMissingFields.metadata;
|
|
120
116
|
// we dont add user.metadata from edit profile because it is already in the metadata request for updateUser
|
|
121
117
|
const validatedUserFields = yield userFieldsSchema.validate(userFields, {
|
|
122
118
|
stripUnknown: validationSchemaStripUnknown,
|
|
@@ -133,17 +129,15 @@ const useUpdateUser = (validationSchemaStripUnknown) => {
|
|
|
133
129
|
});
|
|
134
130
|
const updateUserProfileResponse = yield user.updateUserProfileFields((_a = options === null || options === void 0 ? void 0 : options.userEnvironmentId) !== null && _a !== void 0 ? _a : environmentId, Object.assign(Object.assign({}, validatedUserFields), { metadata }));
|
|
135
131
|
// check if decoded JWT still somehow has missing fields, we can't proceed if it does
|
|
136
|
-
const
|
|
137
|
-
const
|
|
138
|
-
const requiredVerificationDestination = useHandleVerificationRequired.isVerificationRequired(updateUserProfileResponse);
|
|
132
|
+
const missingFields = (_b = updateUserProfileResponse.user.missingFields) !== null && _b !== void 0 ? _b : [];
|
|
133
|
+
const requiredVerificationDestination = useHandleVerificationRequired.getVerificationDestination(updateUserProfileResponse.nextView);
|
|
139
134
|
if (requiredVerificationDestination && handleVerificationRequired.current)
|
|
140
135
|
return handleVerificationRequired.current({
|
|
141
136
|
destination: requiredVerificationDestination,
|
|
142
137
|
missingFields,
|
|
143
138
|
updateUserProfileResponse,
|
|
144
139
|
});
|
|
145
|
-
|
|
146
|
-
yield updateUserProfileByJWT(updateUserProfileResponse.jwt, updateUserProfileResponse.minifiedJwt);
|
|
140
|
+
setCallback('userProfileUpdate');
|
|
147
141
|
return {
|
|
148
142
|
isEmailVerificationRequired: false,
|
|
149
143
|
isSmsVerificationRequired: false,
|
|
@@ -151,13 +145,12 @@ const useUpdateUser = (validationSchemaStripUnknown) => {
|
|
|
151
145
|
updateUserProfileResponse,
|
|
152
146
|
};
|
|
153
147
|
}), [
|
|
148
|
+
userWithMissingFields === null || userWithMissingFields === void 0 ? void 0 : userWithMissingFields.metadata,
|
|
154
149
|
validationSchemaStripUnknown,
|
|
155
150
|
selectedPhoneCountry,
|
|
156
|
-
jwtToken,
|
|
157
|
-
environmentId,
|
|
158
|
-
updateUserProfileByJWT,
|
|
159
151
|
setRetryData,
|
|
160
|
-
|
|
152
|
+
environmentId,
|
|
153
|
+
setCallback,
|
|
161
154
|
]);
|
|
162
155
|
// This is necessary to avoid a circular declaration issue
|
|
163
156
|
const handleVerificationRequired = React.useRef(undefined);
|
|
@@ -3,7 +3,6 @@ import { __awaiter } from '../../../../../../_virtual/_tslib.js';
|
|
|
3
3
|
import { useCallback, useRef } from 'react';
|
|
4
4
|
import { object, string, boolean } from 'yup';
|
|
5
5
|
import '../../../../context/DynamicContext/DynamicContext.js';
|
|
6
|
-
import { decodeJwt } from '../../../../shared/utils/functions/decodeJwt/decodeJwt.js';
|
|
7
6
|
import '@dynamic-labs/sdk-api-core';
|
|
8
7
|
import '../../../../shared/logger.js';
|
|
9
8
|
import '@dynamic-labs/iconic';
|
|
@@ -26,21 +25,20 @@ import 'viem/chains';
|
|
|
26
25
|
import '../../../../config/ApiEndpoint.js';
|
|
27
26
|
import '../../../../locale/locale.js';
|
|
28
27
|
import { updateUserProfileFields } from '../../../../data/api/user/user.js';
|
|
28
|
+
import '@dynamic-labs/store';
|
|
29
29
|
import '../../../../context/AccessDeniedContext/AccessDeniedContext.js';
|
|
30
30
|
import '../../../../context/AccountExistsContext/AccountExistsContext.js';
|
|
31
31
|
import '../../../../context/UserWalletsContext/UserWalletsContext.js';
|
|
32
32
|
import { useVerification } from '../../../../context/VerificationContext/VerificationContext.js';
|
|
33
|
-
import { useUpdateUserProfileByJWTCallback } from '../../useUpdateUserProfileByJWTCallback/useUpdateUserProfileByJWTCallback.js';
|
|
34
33
|
import 'react-dom';
|
|
35
34
|
import '../../../../context/WalletContext/WalletContext.js';
|
|
36
35
|
import '../../../../context/ThemeContext/ThemeContext.js';
|
|
37
|
-
import { useHandleVerificationRequired,
|
|
36
|
+
import { useHandleVerificationRequired, getVerificationDestination } from '../../useHandleVerificationRequired/useHandleVerificationRequired.js';
|
|
38
37
|
import '@dynamic-labs/types';
|
|
39
38
|
import '../../../../context/LoadingContext/LoadingContext.js';
|
|
40
39
|
import '../../../../context/MockContext/MockContext.js';
|
|
41
40
|
import '../../../../views/CollectUserDataView/useFields.js';
|
|
42
41
|
import '../../../../context/UserFieldEditorContext/UserFieldEditorContext.js';
|
|
43
|
-
import '@dynamic-labs/store';
|
|
44
42
|
import '@dynamic-labs/rpc-providers';
|
|
45
43
|
import 'react-i18next';
|
|
46
44
|
import '../../../../components/Alert/Alert.js';
|
|
@@ -100,9 +98,7 @@ const userFieldsSchema = object().shape({
|
|
|
100
98
|
username: string(),
|
|
101
99
|
});
|
|
102
100
|
const useUpdateUser = (validationSchemaStripUnknown) => {
|
|
103
|
-
const {
|
|
104
|
-
const jwtToken = onboardingOnlyJwt || minAuthToken;
|
|
105
|
-
const { updateUserProfileByJWT } = useUpdateUserProfileByJWTCallback();
|
|
101
|
+
const { environmentId, userWithMissingFields, setCallback } = useInternalDynamicContext();
|
|
106
102
|
const { setRetryData } = useVerification();
|
|
107
103
|
const { selectedPhoneCountry } = useFieldsState();
|
|
108
104
|
const updateUser = useCallback((userFields, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -112,7 +108,7 @@ const useUpdateUser = (validationSchemaStripUnknown) => {
|
|
|
112
108
|
let { metadata } = userFields;
|
|
113
109
|
// when a user has already logged in but a custom field was added to env, in order to not clear the old fields
|
|
114
110
|
metadata = metadata
|
|
115
|
-
? Object.assign(Object.assign({},
|
|
111
|
+
? Object.assign(Object.assign({}, userWithMissingFields === null || userWithMissingFields === void 0 ? void 0 : userWithMissingFields.metadata), metadata) : userWithMissingFields === null || userWithMissingFields === void 0 ? void 0 : userWithMissingFields.metadata;
|
|
116
112
|
// we dont add user.metadata from edit profile because it is already in the metadata request for updateUser
|
|
117
113
|
const validatedUserFields = yield userFieldsSchema.validate(userFields, {
|
|
118
114
|
stripUnknown: validationSchemaStripUnknown,
|
|
@@ -129,17 +125,15 @@ const useUpdateUser = (validationSchemaStripUnknown) => {
|
|
|
129
125
|
});
|
|
130
126
|
const updateUserProfileResponse = yield updateUserProfileFields((_a = options === null || options === void 0 ? void 0 : options.userEnvironmentId) !== null && _a !== void 0 ? _a : environmentId, Object.assign(Object.assign({}, validatedUserFields), { metadata }));
|
|
131
127
|
// check if decoded JWT still somehow has missing fields, we can't proceed if it does
|
|
132
|
-
const
|
|
133
|
-
const
|
|
134
|
-
const requiredVerificationDestination = isVerificationRequired(updateUserProfileResponse);
|
|
128
|
+
const missingFields = (_b = updateUserProfileResponse.user.missingFields) !== null && _b !== void 0 ? _b : [];
|
|
129
|
+
const requiredVerificationDestination = getVerificationDestination(updateUserProfileResponse.nextView);
|
|
135
130
|
if (requiredVerificationDestination && handleVerificationRequired.current)
|
|
136
131
|
return handleVerificationRequired.current({
|
|
137
132
|
destination: requiredVerificationDestination,
|
|
138
133
|
missingFields,
|
|
139
134
|
updateUserProfileResponse,
|
|
140
135
|
});
|
|
141
|
-
|
|
142
|
-
yield updateUserProfileByJWT(updateUserProfileResponse.jwt, updateUserProfileResponse.minifiedJwt);
|
|
136
|
+
setCallback('userProfileUpdate');
|
|
143
137
|
return {
|
|
144
138
|
isEmailVerificationRequired: false,
|
|
145
139
|
isSmsVerificationRequired: false,
|
|
@@ -147,13 +141,12 @@ const useUpdateUser = (validationSchemaStripUnknown) => {
|
|
|
147
141
|
updateUserProfileResponse,
|
|
148
142
|
};
|
|
149
143
|
}), [
|
|
144
|
+
userWithMissingFields === null || userWithMissingFields === void 0 ? void 0 : userWithMissingFields.metadata,
|
|
150
145
|
validationSchemaStripUnknown,
|
|
151
146
|
selectedPhoneCountry,
|
|
152
|
-
jwtToken,
|
|
153
|
-
environmentId,
|
|
154
|
-
updateUserProfileByJWT,
|
|
155
147
|
setRetryData,
|
|
156
|
-
|
|
148
|
+
environmentId,
|
|
149
|
+
setCallback,
|
|
157
150
|
]);
|
|
158
151
|
// This is necessary to avoid a circular declaration issue
|
|
159
152
|
const handleVerificationRequired = useRef(undefined);
|
|
@@ -25,8 +25,8 @@ require('viem/chains');
|
|
|
25
25
|
require('../../../config/ApiEndpoint.cjs');
|
|
26
26
|
require('../../../locale/locale.cjs');
|
|
27
27
|
var user = require('../../../data/api/user/user.cjs');
|
|
28
|
-
var isCookieEnabled = require('../../functions/isCookieEnabled/isCookieEnabled.cjs');
|
|
29
28
|
var userActions = require('../../../store/actions/userActions/userActions.cjs');
|
|
29
|
+
var isCookieEnabled = require('../../functions/isCookieEnabled/isCookieEnabled.cjs');
|
|
30
30
|
require('@dynamic-labs/store');
|
|
31
31
|
|
|
32
32
|
const useValidateSession = ({ environmentId, handleLogOut }) => {
|
|
@@ -21,8 +21,8 @@ import 'viem/chains';
|
|
|
21
21
|
import '../../../config/ApiEndpoint.js';
|
|
22
22
|
import '../../../locale/locale.js';
|
|
23
23
|
import { getAuthenticatedUser } from '../../../data/api/user/user.js';
|
|
24
|
-
import { isCookieEnabled } from '../../functions/isCookieEnabled/isCookieEnabled.js';
|
|
25
24
|
import { getUser } from '../../../store/actions/userActions/userActions.js';
|
|
25
|
+
import { isCookieEnabled } from '../../functions/isCookieEnabled/isCookieEnabled.js';
|
|
26
26
|
import '@dynamic-labs/store';
|
|
27
27
|
|
|
28
28
|
const useValidateSession = ({ environmentId, handleLogOut }) => {
|
|
@@ -7,7 +7,7 @@ var _tslib = require('../../../../../_virtual/_tslib.cjs');
|
|
|
7
7
|
var utils = require('@dynamic-labs/utils');
|
|
8
8
|
var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
9
9
|
require('react');
|
|
10
|
-
require('../../../events/dynamicEvents.cjs');
|
|
10
|
+
var dynamicEvents = require('../../../events/dynamicEvents.cjs');
|
|
11
11
|
require('../../../context/DynamicContext/DynamicContext.cjs');
|
|
12
12
|
require('@dynamic-labs/sdk-api-core');
|
|
13
13
|
var logger = require('../../../shared/logger.cjs');
|
|
@@ -92,7 +92,7 @@ const useVerifyWallet = ({ consumeNonce, displaySiweStatement, environmentId, pr
|
|
|
92
92
|
const { setDeniedAddress, setDeniedOauthProvider } = AccessDeniedContext.useAccessDeniedContext();
|
|
93
93
|
const { setView, goToInitialView } = ViewContext.useViewContext();
|
|
94
94
|
const { setErrorMessage, setError } = ErrorContext.useErrorContext();
|
|
95
|
-
const { multiWalletWidgetState, debugError, multiWallet: multiWalletEnabled, appName, primaryWalletId, setShowAuthFlow, setPrimaryWalletId, siweStatement, connectedWallets, authMode, authToken, setAuthMode, removeConnectedWalletsInfo, events, primaryWallet, enableConnectOnlyFallback, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
95
|
+
const { multiWalletWidgetState, debugError, multiWallet: multiWalletEnabled, appName, primaryWalletId, setShowAuthFlow, setPrimaryWalletId, siweStatement, connectedWallets, authMode, authToken, setAuthMode, removeConnectedWalletsInfo, events, primaryWallet, enableConnectOnlyFallback, selectedWalletConnector, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
96
96
|
const { addedWalletsIds } = UserWalletsContext.useInternalUserWallets();
|
|
97
97
|
const { initAuth } = useUserAuth.useUserAuth({ authMethod: 'wallet' });
|
|
98
98
|
// If the user is not already logged it means that we only need to verify
|
|
@@ -170,6 +170,15 @@ const useVerifyWallet = ({ consumeNonce, displaySiweStatement, environmentId, pr
|
|
|
170
170
|
if (e.message === 'ignore') {
|
|
171
171
|
return;
|
|
172
172
|
}
|
|
173
|
+
// Emit failure if this wallet connector was currently selected for auth
|
|
174
|
+
if (selectedWalletConnector &&
|
|
175
|
+
selectedWalletConnector.key === walletConnector.key)
|
|
176
|
+
dynamicEvents.dynamicEvents.emit('authFailure', {
|
|
177
|
+
address,
|
|
178
|
+
connectorName: walletConnector.name,
|
|
179
|
+
option: walletConnector.name,
|
|
180
|
+
type: 'wallet',
|
|
181
|
+
}, { error: e });
|
|
173
182
|
if (e instanceof utils.WalletUsedError) {
|
|
174
183
|
handleDisconnectWallet({ endSession: false, walletConnector });
|
|
175
184
|
return handleWalletUsedError(e);
|
|
@@ -233,6 +242,12 @@ const useVerifyWallet = ({ consumeNonce, displaySiweStatement, environmentId, pr
|
|
|
233
242
|
};
|
|
234
243
|
return (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ walletConnector, getAddressOpts, publicWalletAddress, captchaToken, oauth, signedMessageOverride, messageToSignOverride, }) {
|
|
235
244
|
const walletProvider = getWalletProvider.getWalletProvider(walletConnector);
|
|
245
|
+
dynamicEvents.dynamicEvents.emit('authInit', {
|
|
246
|
+
address: publicWalletAddress,
|
|
247
|
+
connectorName: walletConnector.name,
|
|
248
|
+
option: walletConnector.name,
|
|
249
|
+
type: 'wallet',
|
|
250
|
+
});
|
|
236
251
|
try {
|
|
237
252
|
const { verifyFunction, verifyArgs } = yield generateJWT(walletConnector, walletProvider, getAddressOpts, publicWalletAddress, captchaToken, oauth, signedMessageOverride, messageToSignOverride);
|
|
238
253
|
yield initAuth({
|
|
@@ -266,7 +281,10 @@ const useVerifyWallet = ({ consumeNonce, displaySiweStatement, environmentId, pr
|
|
|
266
281
|
addedWalletsIds.current.push(walletId);
|
|
267
282
|
}
|
|
268
283
|
},
|
|
269
|
-
options: {
|
|
284
|
+
options: {
|
|
285
|
+
address: publicWalletAddress,
|
|
286
|
+
connectorName: walletConnector.name,
|
|
287
|
+
},
|
|
270
288
|
skipDefaultErrorHandling: true,
|
|
271
289
|
verifyFunction,
|
|
272
290
|
});
|
|
@@ -3,7 +3,7 @@ import { __awaiter } from '../../../../../_virtual/_tslib.js';
|
|
|
3
3
|
import { DynamicError, WalletUsedError, MergeAccountsConfirmationError, ChainalysisError, GateBlockedError, NoAccessError, AccountExistsError } from '@dynamic-labs/utils';
|
|
4
4
|
import { isSocialWalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
5
5
|
import 'react';
|
|
6
|
-
import '../../../events/dynamicEvents.js';
|
|
6
|
+
import { dynamicEvents } from '../../../events/dynamicEvents.js';
|
|
7
7
|
import '../../../context/DynamicContext/DynamicContext.js';
|
|
8
8
|
import '@dynamic-labs/sdk-api-core';
|
|
9
9
|
import { logger } from '../../../shared/logger.js';
|
|
@@ -88,7 +88,7 @@ const useVerifyWallet = ({ consumeNonce, displaySiweStatement, environmentId, pr
|
|
|
88
88
|
const { setDeniedAddress, setDeniedOauthProvider } = useAccessDeniedContext();
|
|
89
89
|
const { setView, goToInitialView } = useViewContext();
|
|
90
90
|
const { setErrorMessage, setError } = useErrorContext();
|
|
91
|
-
const { multiWalletWidgetState, debugError, multiWallet: multiWalletEnabled, appName, primaryWalletId, setShowAuthFlow, setPrimaryWalletId, siweStatement, connectedWallets, authMode, authToken, setAuthMode, removeConnectedWalletsInfo, events, primaryWallet, enableConnectOnlyFallback, } = useInternalDynamicContext();
|
|
91
|
+
const { multiWalletWidgetState, debugError, multiWallet: multiWalletEnabled, appName, primaryWalletId, setShowAuthFlow, setPrimaryWalletId, siweStatement, connectedWallets, authMode, authToken, setAuthMode, removeConnectedWalletsInfo, events, primaryWallet, enableConnectOnlyFallback, selectedWalletConnector, } = useInternalDynamicContext();
|
|
92
92
|
const { addedWalletsIds } = useInternalUserWallets();
|
|
93
93
|
const { initAuth } = useUserAuth({ authMethod: 'wallet' });
|
|
94
94
|
// If the user is not already logged it means that we only need to verify
|
|
@@ -166,6 +166,15 @@ const useVerifyWallet = ({ consumeNonce, displaySiweStatement, environmentId, pr
|
|
|
166
166
|
if (e.message === 'ignore') {
|
|
167
167
|
return;
|
|
168
168
|
}
|
|
169
|
+
// Emit failure if this wallet connector was currently selected for auth
|
|
170
|
+
if (selectedWalletConnector &&
|
|
171
|
+
selectedWalletConnector.key === walletConnector.key)
|
|
172
|
+
dynamicEvents.emit('authFailure', {
|
|
173
|
+
address,
|
|
174
|
+
connectorName: walletConnector.name,
|
|
175
|
+
option: walletConnector.name,
|
|
176
|
+
type: 'wallet',
|
|
177
|
+
}, { error: e });
|
|
169
178
|
if (e instanceof WalletUsedError) {
|
|
170
179
|
handleDisconnectWallet({ endSession: false, walletConnector });
|
|
171
180
|
return handleWalletUsedError(e);
|
|
@@ -229,6 +238,12 @@ const useVerifyWallet = ({ consumeNonce, displaySiweStatement, environmentId, pr
|
|
|
229
238
|
};
|
|
230
239
|
return (_a) => __awaiter(void 0, [_a], void 0, function* ({ walletConnector, getAddressOpts, publicWalletAddress, captchaToken, oauth, signedMessageOverride, messageToSignOverride, }) {
|
|
231
240
|
const walletProvider = getWalletProvider(walletConnector);
|
|
241
|
+
dynamicEvents.emit('authInit', {
|
|
242
|
+
address: publicWalletAddress,
|
|
243
|
+
connectorName: walletConnector.name,
|
|
244
|
+
option: walletConnector.name,
|
|
245
|
+
type: 'wallet',
|
|
246
|
+
});
|
|
232
247
|
try {
|
|
233
248
|
const { verifyFunction, verifyArgs } = yield generateJWT(walletConnector, walletProvider, getAddressOpts, publicWalletAddress, captchaToken, oauth, signedMessageOverride, messageToSignOverride);
|
|
234
249
|
yield initAuth({
|
|
@@ -262,7 +277,10 @@ const useVerifyWallet = ({ consumeNonce, displaySiweStatement, environmentId, pr
|
|
|
262
277
|
addedWalletsIds.current.push(walletId);
|
|
263
278
|
}
|
|
264
279
|
},
|
|
265
|
-
options: {
|
|
280
|
+
options: {
|
|
281
|
+
address: publicWalletAddress,
|
|
282
|
+
connectorName: walletConnector.name,
|
|
283
|
+
},
|
|
266
284
|
skipDefaultErrorHandling: true,
|
|
267
285
|
verifyFunction,
|
|
268
286
|
});
|
|
@@ -8,7 +8,6 @@ var React = require('react');
|
|
|
8
8
|
var utils = require('@dynamic-labs/utils');
|
|
9
9
|
var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
10
10
|
var UserWalletsContext = require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
|
|
11
|
-
var decodeJwt = require('../../../shared/utils/functions/decodeJwt/decodeJwt.cjs');
|
|
12
11
|
require('@dynamic-labs/sdk-api-core');
|
|
13
12
|
var logger = require('../../../shared/logger.cjs');
|
|
14
13
|
require('@dynamic-labs/iconic');
|
|
@@ -19,7 +18,6 @@ require('../../constants/colors.cjs');
|
|
|
19
18
|
require('../../constants/values.cjs');
|
|
20
19
|
require('../../../shared/utils/classes/storage/localStorage.cjs');
|
|
21
20
|
require('../../../shared/consts/index.cjs');
|
|
22
|
-
var createUserProfile = require('../../functions/createUserProfile/createUserProfile.cjs');
|
|
23
21
|
require('@dynamic-labs/multi-wallet');
|
|
24
22
|
require('react-international-phone');
|
|
25
23
|
var getWalletIdentifier = require('../../functions/getWalletIdentifier/getWalletIdentifier.cjs');
|
|
@@ -33,39 +31,25 @@ var reconnectSocialWallet = require('./reconnectSocialWallet.cjs');
|
|
|
33
31
|
var createLinkedWalletsFromWalletOptions = require('./utils/createLinkedWalletsFromWalletOptions/createLinkedWalletsFromWalletOptions.cjs');
|
|
34
32
|
var updateUserWalletsFromLinkedWallets = require('./utils/updateUserWalletsFromLinkedWallets/updateUserWalletsFromLinkedWallets.cjs');
|
|
35
33
|
|
|
36
|
-
const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOptions, multiWalletWidgetState, setDesktopUri, setMultiWalletWidgetState, setQrcodeUri, primaryWalletId, setPrimaryWalletId, user,
|
|
34
|
+
const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOptions, multiWalletWidgetState, setDesktopUri, setMultiWalletWidgetState, setQrcodeUri, primaryWalletId, setPrimaryWalletId, user, canHaveMultipleWalletsConnected, }) => {
|
|
37
35
|
const [showQrcodeModal, setShowQrcodeModal] = React.useState(false);
|
|
38
36
|
const linkedWallets = React.useMemo(() => {
|
|
39
|
-
if (!user
|
|
37
|
+
if (!user) {
|
|
40
38
|
return [];
|
|
41
39
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
const decodedJwt = decodeJwt.decodeJwt(onboardingOnlyJwt);
|
|
50
|
-
if (!decodedJwt) {
|
|
51
|
-
return [];
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
const onboardingUser = createUserProfile.createUserProfile(decodedJwt);
|
|
55
|
-
return createLinkedWalletsFromWalletOptions.createLinkedWalletsFromWalletOptions({
|
|
56
|
-
primaryWalletId,
|
|
57
|
-
user: onboardingUser,
|
|
58
|
-
walletConnectorOptions,
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
}, [user, primaryWalletId, walletConnectorOptions, onboardingOnlyJwt]);
|
|
40
|
+
return createLinkedWalletsFromWalletOptions.createLinkedWalletsFromWalletOptions({
|
|
41
|
+
primaryWalletId,
|
|
42
|
+
user,
|
|
43
|
+
walletConnectorOptions,
|
|
44
|
+
});
|
|
45
|
+
}, [user, primaryWalletId, walletConnectorOptions]);
|
|
62
46
|
const walletsBasedOnAuthMode = React.useMemo(() => {
|
|
63
47
|
// Before signing the first message we are using connected wallets list
|
|
64
48
|
// This is because we want the first connected wallet to have events applied by useWalletEventListeners
|
|
65
49
|
// In connect-and-sign mode, events are only applied after the message is signed.
|
|
66
50
|
// This change ensures that events will be applied even before the signature.
|
|
67
51
|
// After signing the message user could be undefined in scenarios like OTP
|
|
68
|
-
if (authMode === 'connect-and-sign' &&
|
|
52
|
+
if (authMode === 'connect-and-sign' && user) {
|
|
69
53
|
return linkedWallets;
|
|
70
54
|
}
|
|
71
55
|
/**
|
|
@@ -77,7 +61,7 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
|
|
|
77
61
|
return linkedWallets;
|
|
78
62
|
}
|
|
79
63
|
return connectedWallets !== null && connectedWallets !== void 0 ? connectedWallets : [];
|
|
80
|
-
}, [authMode, connectedWallets, linkedWallets, user
|
|
64
|
+
}, [authMode, connectedWallets, linkedWallets, user]);
|
|
81
65
|
/**
|
|
82
66
|
* This useEffect is temporary.
|
|
83
67
|
* While the wallet connectors don't use the event emitter, we need to manually
|