@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.
Files changed (170) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +13 -13
  5. package/src/index.d.ts +5 -1
  6. package/src/lib/components/AuthProviderIcon/AuthProviderIcon.cjs +2 -6
  7. package/src/lib/components/AuthProviderIcon/AuthProviderIcon.js +2 -6
  8. package/src/lib/components/SyncEmbeddedWalletAuthFlow/SyncEmbeddedWalletAuthFlow.cjs +11 -5
  9. package/src/lib/components/SyncEmbeddedWalletAuthFlow/SyncEmbeddedWalletAuthFlow.js +11 -5
  10. package/src/lib/context/DynamicContext/DynamicContext.cjs +8 -17
  11. package/src/lib/context/DynamicContext/DynamicContext.js +8 -17
  12. package/src/lib/context/DynamicContext/hooks/useHandleLogout/types.d.ts +0 -1
  13. package/src/lib/context/DynamicContext/hooks/useHandleLogout/useHandleLogout.cjs +0 -2
  14. package/src/lib/context/DynamicContext/hooks/useHandleLogout/useHandleLogout.js +1 -3
  15. package/src/lib/context/DynamicContext/hooks/useIsAuthenticated/index.d.ts +1 -0
  16. package/src/lib/context/DynamicContext/hooks/useIsAuthenticated/useIsAuthenticated.cjs +37 -0
  17. package/src/lib/context/DynamicContext/hooks/useIsAuthenticated/useIsAuthenticated.d.ts +1 -0
  18. package/src/lib/context/DynamicContext/hooks/useIsAuthenticated/useIsAuthenticated.js +33 -0
  19. package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.cjs +9 -1
  20. package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.js +9 -1
  21. package/src/lib/context/DynamicContext/types/index.d.ts +1 -4
  22. package/src/lib/context/LoadingContext/LoadingContext.cjs +1 -1
  23. package/src/lib/context/LoadingContext/LoadingContext.js +1 -1
  24. package/src/lib/context/PhantomRedirectContext/useResponseHandlers.cjs +1 -1
  25. package/src/lib/context/PhantomRedirectContext/useResponseHandlers.js +1 -1
  26. package/src/lib/context/SocialRedirectContext/SocialRedirectContext.cjs +1 -1
  27. package/src/lib/context/SocialRedirectContext/SocialRedirectContext.js +1 -1
  28. package/src/lib/data/api/api.cjs +1 -3
  29. package/src/lib/data/api/api.js +1 -3
  30. package/src/lib/data/api/user/user.cjs +9 -6
  31. package/src/lib/data/api/user/user.d.ts +5 -5
  32. package/src/lib/data/api/user/user.js +9 -6
  33. package/src/lib/data/api/wallets/wallets.cjs +6 -3
  34. package/src/lib/data/api/wallets/wallets.d.ts +3 -2
  35. package/src/lib/data/api/wallets/wallets.js +7 -4
  36. package/src/lib/events/auth.d.ts +38 -0
  37. package/src/lib/events/dynamicEvents.d.ts +8 -32
  38. package/src/lib/events/embeddedWallet.d.ts +14 -0
  39. package/src/lib/events/otp.d.ts +5 -0
  40. package/src/lib/events/passkey.d.ts +5 -0
  41. package/src/lib/events/social.d.ts +3 -0
  42. package/src/lib/events/ui.d.ts +10 -0
  43. package/src/lib/events/wallets.d.ts +7 -0
  44. package/src/lib/layout/DynamicAuthLayout/Header/header.cjs +6 -1
  45. package/src/lib/layout/DynamicAuthLayout/Header/header.js +6 -1
  46. package/src/lib/shared/types/dynamicEventsCallbacks.d.ts +11 -0
  47. package/src/lib/store/utils/storeAuthTokenAndUser/storeAuthTokenAndUser.cjs +1 -2
  48. package/src/lib/store/utils/storeAuthTokenAndUser/storeAuthTokenAndUser.d.ts +6 -2
  49. package/src/lib/store/utils/storeAuthTokenAndUser/storeAuthTokenAndUser.js +1 -2
  50. package/src/lib/utils/constants/index.d.ts +1 -1
  51. package/src/lib/utils/constants/localStorage.cjs +0 -2
  52. package/src/lib/utils/constants/localStorage.d.ts +0 -1
  53. package/src/lib/utils/constants/localStorage.js +1 -2
  54. package/src/lib/utils/functions/index.d.ts +0 -1
  55. package/src/lib/utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.cjs +1 -1
  56. package/src/lib/utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.js +1 -1
  57. package/src/lib/utils/hooks/authenticationHooks/useConnectAndSignSplitSteps/useConnectAndSignSplitSteps.cjs +1 -1
  58. package/src/lib/utils/hooks/authenticationHooks/useConnectAndSignSplitSteps/useConnectAndSignSplitSteps.js +1 -1
  59. package/src/lib/utils/hooks/authenticationHooks/useOtpVerificationRequest/useOtpVerificationRequest.cjs +12 -7
  60. package/src/lib/utils/hooks/authenticationHooks/useOtpVerificationRequest/useOtpVerificationRequest.js +13 -8
  61. package/src/lib/utils/hooks/authenticationHooks/useSignConnectOnlyUser/useSignConnectOnlyUser.cjs +1 -1
  62. package/src/lib/utils/hooks/authenticationHooks/useSignConnectOnlyUser/useSignConnectOnlyUser.js +1 -1
  63. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.d.ts +2 -2
  64. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.cjs +1 -2
  65. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.d.ts +1 -2
  66. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.js +1 -2
  67. package/src/lib/utils/hooks/useEmailProvider/useEmailProvider.cjs +29 -14
  68. package/src/lib/utils/hooks/useEmailProvider/useEmailProvider.js +29 -14
  69. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +4 -3
  70. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +4 -3
  71. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.cjs +1 -1
  72. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.js +2 -2
  73. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.cjs +4 -5
  74. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.js +5 -6
  75. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.cjs +0 -1
  76. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.js +0 -1
  77. package/src/lib/utils/hooks/useEmbeddedWalletPassword/useEmbeddedWalletPassword.cjs +2 -2
  78. package/src/lib/utils/hooks/useEmbeddedWalletPassword/useEmbeddedWalletPassword.js +2 -2
  79. package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.cjs +8 -6
  80. package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.js +8 -6
  81. package/src/lib/utils/hooks/useHandleVerificationRequired/useHandleVerificationRequired.cjs +4 -4
  82. package/src/lib/utils/hooks/useHandleVerificationRequired/useHandleVerificationRequired.d.ts +4 -3
  83. package/src/lib/utils/hooks/useHandleVerificationRequired/useHandleVerificationRequired.js +4 -4
  84. package/src/lib/utils/hooks/useHandleVerifiedUser/useHandleVerifiedUser.cjs +1 -16
  85. package/src/lib/utils/hooks/useHandleVerifiedUser/useHandleVerifiedUser.d.ts +1 -4
  86. package/src/lib/utils/hooks/useHandleVerifiedUser/useHandleVerifiedUser.js +1 -16
  87. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.cjs +1 -1
  88. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.js +1 -1
  89. package/src/lib/utils/hooks/useMfa/useMfa.cjs +37 -20
  90. package/src/lib/utils/hooks/useMfa/useMfa.js +37 -20
  91. package/src/lib/utils/hooks/useNetworkNotSupported/useNetworkNotSupported.cjs +1 -1
  92. package/src/lib/utils/hooks/useNetworkNotSupported/useNetworkNotSupported.js +1 -1
  93. package/src/lib/utils/hooks/usePasskeyRecovery/usePasskeyRecovery.cjs +13 -12
  94. package/src/lib/utils/hooks/usePasskeyRecovery/usePasskeyRecovery.js +13 -12
  95. package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.cjs +6 -11
  96. package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.d.ts +3 -2
  97. package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.js +6 -11
  98. package/src/lib/utils/hooks/useSetWalletConnectorVerifiedCredentials/useSetWalletConnectorVerifiedCredentials.cjs +3 -22
  99. package/src/lib/utils/hooks/useSetWalletConnectorVerifiedCredentials/useSetWalletConnectorVerifiedCredentials.d.ts +2 -1
  100. package/src/lib/utils/hooks/useSetWalletConnectorVerifiedCredentials/useSetWalletConnectorVerifiedCredentials.js +3 -22
  101. package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.cjs +8 -8
  102. package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.js +8 -8
  103. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +39 -27
  104. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.d.ts +5 -3
  105. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +39 -27
  106. package/src/lib/utils/hooks/useUserAuth/useUserAuth.cjs +39 -33
  107. package/src/lib/utils/hooks/useUserAuth/useUserAuth.d.ts +2 -2
  108. package/src/lib/utils/hooks/useUserAuth/useUserAuth.js +39 -33
  109. package/src/lib/utils/hooks/useUserAuth/useUserAuth.types.d.ts +7 -24
  110. package/src/lib/utils/hooks/useUserDataForm/useUserDataForm.cjs +1 -1
  111. package/src/lib/utils/hooks/useUserDataForm/useUserDataForm.js +1 -1
  112. package/src/lib/utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.cjs +9 -16
  113. package/src/lib/utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.js +10 -17
  114. package/src/lib/utils/hooks/useValidateSession/useValidateSession.cjs +1 -1
  115. package/src/lib/utils/hooks/useValidateSession/useValidateSession.js +1 -1
  116. package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.cjs +21 -3
  117. package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.js +21 -3
  118. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.cjs +10 -26
  119. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.d.ts +1 -2
  120. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.js +10 -26
  121. package/src/lib/views/CollectUserDataView/CollectUserDataView.cjs +4 -6
  122. package/src/lib/views/CollectUserDataView/CollectUserDataView.js +4 -6
  123. package/src/lib/views/CollectUserDataView/OnboardingUserDataForm/OnboardingUserDataForm.cjs +3 -5
  124. package/src/lib/views/CollectUserDataView/OnboardingUserDataForm/OnboardingUserDataForm.js +3 -5
  125. package/src/lib/views/CollectUserDataViewNoWallet/CollectUserDataViewNoWallet.cjs +3 -5
  126. package/src/lib/views/CollectUserDataViewNoWallet/CollectUserDataViewNoWallet.js +3 -5
  127. package/src/lib/views/EmailVerification/EmailVerification.cjs +8 -5
  128. package/src/lib/views/EmailVerification/EmailVerification.js +8 -5
  129. package/src/lib/views/EmailWalletOTPVerificationView/EmailWalletOTPVerificationView.cjs +5 -0
  130. package/src/lib/views/EmailWalletOTPVerificationView/EmailWalletOTPVerificationView.js +5 -0
  131. package/src/lib/views/EmbeddedReveal/EmbeddedRevealView/EmbeddedRevealView.cjs +3 -6
  132. package/src/lib/views/EmbeddedReveal/EmbeddedRevealView/EmbeddedRevealView.js +3 -6
  133. package/src/lib/views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.cjs +7 -13
  134. package/src/lib/views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.d.ts +3 -3
  135. package/src/lib/views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.js +8 -14
  136. package/src/lib/views/LoginView/LoginView.cjs +3 -21
  137. package/src/lib/views/LoginView/LoginView.js +4 -22
  138. package/src/lib/views/LoginView/sections/PhoneNumberSignInSection/useSubmitPhoneNumber/useSubmitPhoneNumber.cjs +11 -1
  139. package/src/lib/views/LoginView/sections/PhoneNumberSignInSection/useSubmitPhoneNumber/useSubmitPhoneNumber.js +11 -1
  140. package/src/lib/views/MergeUserAccountsWithSameEmailView/MergeUserAccountsWithSameEmailView.cjs +3 -3
  141. package/src/lib/views/MergeUserAccountsWithSameEmailView/MergeUserAccountsWithSameEmailView.js +3 -3
  142. package/src/lib/views/NoAccess/NoAccess.cjs +2 -2
  143. package/src/lib/views/NoAccess/NoAccess.js +2 -2
  144. package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.cjs +2 -8
  145. package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.js +2 -8
  146. package/src/lib/views/Passkey/PasskeyRecovery/BundleValidation/PasskeyBundleRecovery.cjs +3 -3
  147. package/src/lib/views/Passkey/PasskeyRecovery/BundleValidation/PasskeyBundleRecovery.js +3 -3
  148. package/src/lib/views/Passkey/PasskeyRecovery/CompleteRecovery/PasskeyCompleteRecovery.cjs +1 -2
  149. package/src/lib/views/Passkey/PasskeyRecovery/CompleteRecovery/PasskeyCompleteRecovery.js +1 -2
  150. package/src/lib/views/Passkey/utils/createEmbeddedWalletRequest/createEmbeddedWalletRequest.cjs +1 -4
  151. package/src/lib/views/Passkey/utils/createEmbeddedWalletRequest/createEmbeddedWalletRequest.d.ts +1 -2
  152. package/src/lib/views/Passkey/utils/createEmbeddedWalletRequest/createEmbeddedWalletRequest.js +1 -4
  153. package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.cjs +15 -20
  154. package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.d.ts +8 -13
  155. package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.js +15 -20
  156. package/src/lib/views/SmsVerification/useSmsVerification/useSmsVerification.cjs +11 -8
  157. package/src/lib/views/SmsVerification/useSmsVerification/useSmsVerification.js +11 -8
  158. package/src/lib/views/viewToComponentMap.cjs +1 -1
  159. package/src/lib/views/viewToComponentMap.d.ts +1 -1
  160. package/src/lib/views/viewToComponentMap.js +1 -1
  161. package/src/lib/widgets/DynamicWidget/context/DynamicWidgetContext.cjs +1 -1
  162. package/src/lib/widgets/DynamicWidget/context/DynamicWidgetContext.js +1 -1
  163. package/src/lib/utils/functions/getOnboardingAuthToken/getOnboardingAuthToken.cjs +0 -31
  164. package/src/lib/utils/functions/getOnboardingAuthToken/getOnboardingAuthToken.d.ts +0 -1
  165. package/src/lib/utils/functions/getOnboardingAuthToken/getOnboardingAuthToken.js +0 -27
  166. package/src/lib/utils/functions/getOnboardingAuthToken/index.d.ts +0 -1
  167. package/src/lib/utils/functions/handleUnlinkHelper/handleUnlinkHelper.cjs +0 -49
  168. package/src/lib/utils/functions/handleUnlinkHelper/handleUnlinkHelper.d.ts +0 -13
  169. package/src/lib/utils/functions/handleUnlinkHelper/handleUnlinkHelper.js +0 -45
  170. package/src/lib/utils/functions/handleUnlinkHelper/index.d.ts +0 -1
@@ -19,7 +19,7 @@ require('../../constants/colors.cjs');
19
19
  require('../../constants/values.cjs');
20
20
  require('../../../shared/utils/classes/storage/localStorage.cjs');
21
21
  require('../../../shared/consts/index.cjs');
22
- require('../../../events/dynamicEvents.cjs');
22
+ var dynamicEvents = require('../../../events/dynamicEvents.cjs');
23
23
  require('../../../context/CaptchaContext/CaptchaContext.cjs');
24
24
  var ErrorContext = require('../../../context/ErrorContext/ErrorContext.cjs');
25
25
  var digestSHA256 = require('../../functions/digestSHA256/digestSHA256.cjs');
@@ -120,13 +120,23 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
120
120
  setError(undefined);
121
121
  setContextError(undefined);
122
122
  };
123
- const handleError = (code, message) => {
123
+ const onFailed = (provider, reason, options) => {
124
+ onError === null || onError === void 0 ? void 0 : onError();
125
+ onSettled === null || onSettled === void 0 ? void 0 : onSettled();
126
+ if (provider && (options === null || options === void 0 ? void 0 : options.raiseAuthFailure))
127
+ dynamicEvents.dynamicEvents.emit('authFailure', {
128
+ option: provider,
129
+ provider,
130
+ type: 'social',
131
+ }, reason);
132
+ };
133
+ const handleError = (provider, code, message, options) => {
134
+ const error = { code, message };
124
135
  logger.logger.error(message);
125
136
  setIsProcessing(false);
126
- setError({ code, message });
137
+ setError(error);
127
138
  setErrorMessage(code);
128
- onError === null || onError === void 0 ? void 0 : onError();
129
- onSettled === null || onSettled === void 0 ? void 0 : onSettled();
139
+ onFailed(provider, { error }, options);
130
140
  };
131
141
  const poolOauthResult = (provider, state) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
132
142
  if (!shouldPool.current) {
@@ -148,13 +158,13 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
148
158
  };
149
159
  window.postMessage(authMessage, '*');
150
160
  });
151
- const checkValidProvider = (provider) => {
161
+ const checkValidProvider = (provider, authMode) => {
152
162
  if (!provider) {
153
- handleError(types.SocialOAuthErrorCode.NO_PROVIDER, 'Provider is required');
163
+ handleError(provider, types.SocialOAuthErrorCode.NO_PROVIDER, 'Provider is required', { raiseAuthFailure: authMode === 'signin' });
154
164
  return false;
155
165
  }
156
166
  if (!socialProviders.includes(provider)) {
157
- handleError(types.SocialOAuthErrorCode.INVALID_PROVIDER, `Invalid social provider. Valid providers are: ${socialProviders.join(', ')}`);
167
+ handleError(provider, types.SocialOAuthErrorCode.INVALID_PROVIDER, `Invalid social provider. Valid providers are: ${socialProviders.join(', ')}`, { raiseAuthFailure: authMode === 'signin' });
158
168
  return false;
159
169
  }
160
170
  return true;
@@ -163,7 +173,7 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
163
173
  try {
164
174
  const response = yield apiCall();
165
175
  if (!response) {
166
- handleError(types.SocialOAuthErrorCode.VERIFICATION_ERROR, `Failed to link social account: ${provider}`);
176
+ handleError(provider, types.SocialOAuthErrorCode.VERIFICATION_ERROR, `Failed to link social account: ${provider}`, { raiseAuthFailure: false });
167
177
  return;
168
178
  }
169
179
  yield updateUserProfileByJWT(response.jwt, response.minifiedJwt);
@@ -171,13 +181,13 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
171
181
  }
172
182
  catch (error) {
173
183
  if (error instanceof utils.SocialAccountAlreadyExistsError) {
174
- handleError(types.SocialOAuthErrorCode.ACCOUNT_ALREADY_LINKED_TO_DIFFERENT_PROFILE, `Social account already linked to a different profile: ${provider}`);
184
+ handleError(provider, types.SocialOAuthErrorCode.ACCOUNT_ALREADY_LINKED_TO_DIFFERENT_PROFILE, `Social account already linked to a different profile: ${provider}`, { raiseAuthFailure: false });
175
185
  }
176
186
  }
177
187
  });
178
188
  const signInAccount = (provider, apiCall) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
179
189
  yield initAuth({
180
- onError: () => handleError(types.SocialOAuthErrorCode.SIGNIN_ERROR, `Failed to sign-in with social account: ${provider}`),
190
+ onError: () => handleError(provider, types.SocialOAuthErrorCode.SIGNIN_ERROR, `Failed to sign-in with social account: ${provider}`, { raiseAuthFailure: true }),
181
191
  onSettled,
182
192
  options: { provider },
183
193
  verifyFunction: () => apiCall(),
@@ -192,17 +202,20 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
192
202
  logger.logger.error('Auth mode is required. Please use either "link" or "signin"');
193
203
  return;
194
204
  }
195
- if (!checkValidProvider(provider)) {
205
+ if (!checkValidProvider(provider, authMode)) {
196
206
  return;
197
207
  }
198
208
  // invalid connect request
199
209
  if (validator && !validator(provider)) {
200
210
  return;
201
211
  }
202
- if (provider === sdkApiCore.ProviderEnum.Farcaster) {
203
- connectWithFarcaster(authMode);
204
- return;
205
- }
212
+ dynamicEvents.dynamicEvents.emit('authInit', {
213
+ option: provider,
214
+ provider,
215
+ type: 'social',
216
+ });
217
+ if (provider === sdkApiCore.ProviderEnum.Farcaster)
218
+ return connectWithFarcaster(authMode);
206
219
  const authWindow = window.open('', '_blank', 'width=500,height=600');
207
220
  const state = randomString.randomString(8);
208
221
  const verifier = randomString.randomString(43);
@@ -252,13 +265,13 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
252
265
  }
253
266
  setIsProcessing(true);
254
267
  if (!((_e = providersWaitingOauthMessage.current) === null || _e === void 0 ? void 0 : _e[provider])) {
255
- handleError(types.SocialOAuthErrorCode.SESSION_TIMEOUT, `Connecting ${provider} account session timeout.`);
268
+ handleError(provider, types.SocialOAuthErrorCode.SESSION_TIMEOUT, `Connecting ${provider} account session timeout.`, { raiseAuthFailure: authMode === 'signin' });
256
269
  return;
257
270
  }
258
271
  clearListeners();
259
272
  const { code, error, state: authState } = message;
260
273
  if (error && error !== 'undefined') {
261
- handleError(types.SocialOAuthErrorCode.OAUTH_ERROR, `Failed to connect ${provider} social account: ${error}`);
274
+ handleError(provider, types.SocialOAuthErrorCode.OAUTH_ERROR, `Failed to connect ${provider} social account: ${error}`, { raiseAuthFailure: authMode === 'signin' });
262
275
  return;
263
276
  }
264
277
  // check that the state we receive from message is the same state we calculated earlier
@@ -266,11 +279,11 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
266
279
  // this state check is used only by providers with an open window opener reference (eg, not twitter)
267
280
  if (!providersWithoutWindowOpenerRefence.includes(provider) &&
268
281
  state !== authState) {
269
- handleError(types.SocialOAuthErrorCode.OAUTH_ERROR, `Failed to connect ${provider} social account: Invalid random state`);
282
+ handleError(provider, types.SocialOAuthErrorCode.OAUTH_ERROR, `Failed to connect ${provider} social account: Invalid random state`, { raiseAuthFailure: authMode === 'signin' });
270
283
  return;
271
284
  }
272
285
  if (!code) {
273
- handleError(types.SocialOAuthErrorCode.NO_AUTH_CODE, `Failed to connect ${provider} social account: no authorization code`);
286
+ handleError(provider, types.SocialOAuthErrorCode.NO_AUTH_CODE, `Failed to connect ${provider} social account: no authorization code`, { raiseAuthFailure: authMode === 'signin' });
274
287
  return;
275
288
  }
276
289
  if (authMode === 'signin') {
@@ -294,7 +307,7 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
294
307
  });
295
308
  const loginUrl = getOauthLoginUrl.getOauthLoginUrl((_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) !== null && _b !== void 0 ? _b : [], provider);
296
309
  if (!loginUrl) {
297
- handleError(types.SocialOAuthErrorCode.NO_OAUTH_URL, `Failed to get login url to connect social account: ${provider}`);
310
+ handleError(provider, types.SocialOAuthErrorCode.NO_OAUTH_URL, `Failed to get login url to connect social account: ${provider}`, { raiseAuthFailure: authMode === 'signin' });
298
311
  return;
299
312
  }
300
313
  if (!((_c = providersWaitingOauthMessage.current) === null || _c === void 0 ? void 0 : _c[provider])) {
@@ -327,8 +340,7 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
327
340
  setIsProcessing(false);
328
341
  // user didn't complete oauth
329
342
  if ((_a = providersWaitingOauthMessage.current) === null || _a === void 0 ? void 0 : _a[provider]) {
330
- onError === null || onError === void 0 ? void 0 : onError();
331
- onSettled === null || onSettled === void 0 ? void 0 : onSettled();
343
+ onFailed(provider, 'user-cancelled');
332
344
  }
333
345
  }, 2000);
334
346
  }
@@ -350,7 +362,7 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
350
362
  // clear all states/listeners, assuming user closed the window before completing oauth
351
363
  if ((_f = providersWaitingOauthMessage.current) === null || _f === void 0 ? void 0 : _f[provider]) {
352
364
  clearListeners();
353
- handleError(types.SocialOAuthErrorCode.OAUTH_WINDOW_TIMEOUT, `Connecting ${provider} account window timeout.`);
365
+ handleError(provider, types.SocialOAuthErrorCode.OAUTH_WINDOW_TIMEOUT, `Connecting ${provider} account window timeout.`, { raiseAuthFailure: authMode === 'signin' });
354
366
  }
355
367
  clearInterval(authWindowInterval.current);
356
368
  setIsProcessing(false);
@@ -368,7 +380,7 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
368
380
  siweUri: window.location.origin,
369
381
  });
370
382
  if (!(data === null || data === void 0 ? void 0 : data.url) || !(data === null || data === void 0 ? void 0 : data.channelToken)) {
371
- handleError(types.SocialOAuthErrorCode.GENERAL_ERROR, "Farcaster didn't return a valid url.");
383
+ handleError(sdkApiCore.ProviderEnum.Farcaster, types.SocialOAuthErrorCode.GENERAL_ERROR, "Farcaster didn't return a valid url.", { raiseAuthFailure: authMode === 'signin' });
372
384
  return;
373
385
  }
374
386
  // If on mobile, we want to redirect to the Warpcast app.
@@ -393,7 +405,7 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
393
405
  !(status === null || status === void 0 ? void 0 : status.custody) ||
394
406
  !(status === null || status === void 0 ? void 0 : status.signature) ||
395
407
  !(status === null || status === void 0 ? void 0 : status.nonce)) {
396
- handleError(types.SocialOAuthErrorCode.GENERAL_ERROR, "Farcaster didn't return valid data.");
408
+ handleError(sdkApiCore.ProviderEnum.Farcaster, types.SocialOAuthErrorCode.GENERAL_ERROR, "Farcaster didn't return valid data.", { raiseAuthFailure: authMode === 'signin' });
397
409
  return;
398
410
  }
399
411
  const { custody: address, message, signature, nonce } = status;
@@ -408,7 +420,7 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
408
420
  yield signInAccount(sdkApiCore.ProviderEnum.Farcaster, apiCall);
409
421
  }
410
422
  else {
411
- handleError(types.SocialOAuthErrorCode.GENERAL_ERROR, 'Linking with Farcaster is not supported at the moment.');
423
+ handleError(sdkApiCore.ProviderEnum.Farcaster, types.SocialOAuthErrorCode.GENERAL_ERROR, 'Linking with Farcaster is not supported at the moment.', { raiseAuthFailure: true });
412
424
  }
413
425
  setIsProcessing(false);
414
426
  });
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { ProviderEnum } from '@dynamic-labs/sdk-api-core';
3
3
  import { SocialOAuthError, SocialOAuthErrorCode } from '@dynamic-labs/types';
4
- type SocialAuthMode = 'link' | 'signin';
4
+ type SocialAuthMode = 'link' | 'signin' | 'unlink';
5
5
  type UseSocialAuthProps = {
6
6
  sessionTimeout: number;
7
7
  onSettled?: () => void;
@@ -9,7 +9,7 @@ type UseSocialAuthProps = {
9
9
  onFarcasterUrl?: (url: string) => void;
10
10
  };
11
11
  export declare const useSocialAuth: ({ sessionTimeout, onSettled, onError, onFarcasterUrl, }: UseSocialAuthProps) => {
12
- readonly checkValidProvider: (provider: ProviderEnum) => boolean;
12
+ readonly checkValidProvider: (provider: ProviderEnum, authMode: SocialAuthMode) => boolean;
13
13
  readonly connectSocialAccount: ({ authMode, provider, validator, captchaToken, }: {
14
14
  authMode: SocialAuthMode;
15
15
  provider: ProviderEnum;
@@ -17,7 +17,9 @@ export declare const useSocialAuth: ({ sessionTimeout, onSettled, onError, onFar
17
17
  captchaToken?: string;
18
18
  }) => Promise<void>;
19
19
  readonly error: SocialOAuthError | undefined;
20
- readonly handleError: (code: SocialOAuthErrorCode, message: string) => void;
20
+ readonly handleError: (provider: ProviderEnum | undefined, code: SocialOAuthErrorCode, message: string, options?: {
21
+ raiseAuthFailure?: boolean | undefined;
22
+ } | undefined) => void;
21
23
  readonly isProcessing: boolean;
22
24
  readonly setError: import("react").Dispatch<import("react").SetStateAction<SocialOAuthError | undefined>>;
23
25
  readonly setIsProcessing: import("react").Dispatch<import("react").SetStateAction<boolean>>;
@@ -15,7 +15,7 @@ import '../../constants/colors.js';
15
15
  import '../../constants/values.js';
16
16
  import '../../../shared/utils/classes/storage/localStorage.js';
17
17
  import '../../../shared/consts/index.js';
18
- import '../../../events/dynamicEvents.js';
18
+ import { dynamicEvents } from '../../../events/dynamicEvents.js';
19
19
  import '../../../context/CaptchaContext/CaptchaContext.js';
20
20
  import { useErrorContext } from '../../../context/ErrorContext/ErrorContext.js';
21
21
  import { digestSHA256 } from '../../functions/digestSHA256/digestSHA256.js';
@@ -116,13 +116,23 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
116
116
  setError(undefined);
117
117
  setContextError(undefined);
118
118
  };
119
- const handleError = (code, message) => {
119
+ const onFailed = (provider, reason, options) => {
120
+ onError === null || onError === void 0 ? void 0 : onError();
121
+ onSettled === null || onSettled === void 0 ? void 0 : onSettled();
122
+ if (provider && (options === null || options === void 0 ? void 0 : options.raiseAuthFailure))
123
+ dynamicEvents.emit('authFailure', {
124
+ option: provider,
125
+ provider,
126
+ type: 'social',
127
+ }, reason);
128
+ };
129
+ const handleError = (provider, code, message, options) => {
130
+ const error = { code, message };
120
131
  logger.error(message);
121
132
  setIsProcessing(false);
122
- setError({ code, message });
133
+ setError(error);
123
134
  setErrorMessage(code);
124
- onError === null || onError === void 0 ? void 0 : onError();
125
- onSettled === null || onSettled === void 0 ? void 0 : onSettled();
135
+ onFailed(provider, { error }, options);
126
136
  };
127
137
  const poolOauthResult = (provider, state) => __awaiter(void 0, void 0, void 0, function* () {
128
138
  if (!shouldPool.current) {
@@ -144,13 +154,13 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
144
154
  };
145
155
  window.postMessage(authMessage, '*');
146
156
  });
147
- const checkValidProvider = (provider) => {
157
+ const checkValidProvider = (provider, authMode) => {
148
158
  if (!provider) {
149
- handleError(SocialOAuthErrorCode.NO_PROVIDER, 'Provider is required');
159
+ handleError(provider, SocialOAuthErrorCode.NO_PROVIDER, 'Provider is required', { raiseAuthFailure: authMode === 'signin' });
150
160
  return false;
151
161
  }
152
162
  if (!socialProviders.includes(provider)) {
153
- handleError(SocialOAuthErrorCode.INVALID_PROVIDER, `Invalid social provider. Valid providers are: ${socialProviders.join(', ')}`);
163
+ handleError(provider, SocialOAuthErrorCode.INVALID_PROVIDER, `Invalid social provider. Valid providers are: ${socialProviders.join(', ')}`, { raiseAuthFailure: authMode === 'signin' });
154
164
  return false;
155
165
  }
156
166
  return true;
@@ -159,7 +169,7 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
159
169
  try {
160
170
  const response = yield apiCall();
161
171
  if (!response) {
162
- handleError(SocialOAuthErrorCode.VERIFICATION_ERROR, `Failed to link social account: ${provider}`);
172
+ handleError(provider, SocialOAuthErrorCode.VERIFICATION_ERROR, `Failed to link social account: ${provider}`, { raiseAuthFailure: false });
163
173
  return;
164
174
  }
165
175
  yield updateUserProfileByJWT(response.jwt, response.minifiedJwt);
@@ -167,13 +177,13 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
167
177
  }
168
178
  catch (error) {
169
179
  if (error instanceof SocialAccountAlreadyExistsError) {
170
- handleError(SocialOAuthErrorCode.ACCOUNT_ALREADY_LINKED_TO_DIFFERENT_PROFILE, `Social account already linked to a different profile: ${provider}`);
180
+ handleError(provider, SocialOAuthErrorCode.ACCOUNT_ALREADY_LINKED_TO_DIFFERENT_PROFILE, `Social account already linked to a different profile: ${provider}`, { raiseAuthFailure: false });
171
181
  }
172
182
  }
173
183
  });
174
184
  const signInAccount = (provider, apiCall) => __awaiter(void 0, void 0, void 0, function* () {
175
185
  yield initAuth({
176
- onError: () => handleError(SocialOAuthErrorCode.SIGNIN_ERROR, `Failed to sign-in with social account: ${provider}`),
186
+ onError: () => handleError(provider, SocialOAuthErrorCode.SIGNIN_ERROR, `Failed to sign-in with social account: ${provider}`, { raiseAuthFailure: true }),
177
187
  onSettled,
178
188
  options: { provider },
179
189
  verifyFunction: () => apiCall(),
@@ -188,17 +198,20 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
188
198
  logger.error('Auth mode is required. Please use either "link" or "signin"');
189
199
  return;
190
200
  }
191
- if (!checkValidProvider(provider)) {
201
+ if (!checkValidProvider(provider, authMode)) {
192
202
  return;
193
203
  }
194
204
  // invalid connect request
195
205
  if (validator && !validator(provider)) {
196
206
  return;
197
207
  }
198
- if (provider === ProviderEnum.Farcaster) {
199
- connectWithFarcaster(authMode);
200
- return;
201
- }
208
+ dynamicEvents.emit('authInit', {
209
+ option: provider,
210
+ provider,
211
+ type: 'social',
212
+ });
213
+ if (provider === ProviderEnum.Farcaster)
214
+ return connectWithFarcaster(authMode);
202
215
  const authWindow = window.open('', '_blank', 'width=500,height=600');
203
216
  const state = randomString(8);
204
217
  const verifier = randomString(43);
@@ -248,13 +261,13 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
248
261
  }
249
262
  setIsProcessing(true);
250
263
  if (!((_e = providersWaitingOauthMessage.current) === null || _e === void 0 ? void 0 : _e[provider])) {
251
- handleError(SocialOAuthErrorCode.SESSION_TIMEOUT, `Connecting ${provider} account session timeout.`);
264
+ handleError(provider, SocialOAuthErrorCode.SESSION_TIMEOUT, `Connecting ${provider} account session timeout.`, { raiseAuthFailure: authMode === 'signin' });
252
265
  return;
253
266
  }
254
267
  clearListeners();
255
268
  const { code, error, state: authState } = message;
256
269
  if (error && error !== 'undefined') {
257
- handleError(SocialOAuthErrorCode.OAUTH_ERROR, `Failed to connect ${provider} social account: ${error}`);
270
+ handleError(provider, SocialOAuthErrorCode.OAUTH_ERROR, `Failed to connect ${provider} social account: ${error}`, { raiseAuthFailure: authMode === 'signin' });
258
271
  return;
259
272
  }
260
273
  // check that the state we receive from message is the same state we calculated earlier
@@ -262,11 +275,11 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
262
275
  // this state check is used only by providers with an open window opener reference (eg, not twitter)
263
276
  if (!providersWithoutWindowOpenerRefence.includes(provider) &&
264
277
  state !== authState) {
265
- handleError(SocialOAuthErrorCode.OAUTH_ERROR, `Failed to connect ${provider} social account: Invalid random state`);
278
+ handleError(provider, SocialOAuthErrorCode.OAUTH_ERROR, `Failed to connect ${provider} social account: Invalid random state`, { raiseAuthFailure: authMode === 'signin' });
266
279
  return;
267
280
  }
268
281
  if (!code) {
269
- handleError(SocialOAuthErrorCode.NO_AUTH_CODE, `Failed to connect ${provider} social account: no authorization code`);
282
+ handleError(provider, SocialOAuthErrorCode.NO_AUTH_CODE, `Failed to connect ${provider} social account: no authorization code`, { raiseAuthFailure: authMode === 'signin' });
270
283
  return;
271
284
  }
272
285
  if (authMode === 'signin') {
@@ -290,7 +303,7 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
290
303
  });
291
304
  const loginUrl = getOauthLoginUrl((_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) !== null && _b !== void 0 ? _b : [], provider);
292
305
  if (!loginUrl) {
293
- handleError(SocialOAuthErrorCode.NO_OAUTH_URL, `Failed to get login url to connect social account: ${provider}`);
306
+ handleError(provider, SocialOAuthErrorCode.NO_OAUTH_URL, `Failed to get login url to connect social account: ${provider}`, { raiseAuthFailure: authMode === 'signin' });
294
307
  return;
295
308
  }
296
309
  if (!((_c = providersWaitingOauthMessage.current) === null || _c === void 0 ? void 0 : _c[provider])) {
@@ -323,8 +336,7 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
323
336
  setIsProcessing(false);
324
337
  // user didn't complete oauth
325
338
  if ((_a = providersWaitingOauthMessage.current) === null || _a === void 0 ? void 0 : _a[provider]) {
326
- onError === null || onError === void 0 ? void 0 : onError();
327
- onSettled === null || onSettled === void 0 ? void 0 : onSettled();
339
+ onFailed(provider, 'user-cancelled');
328
340
  }
329
341
  }, 2000);
330
342
  }
@@ -346,7 +358,7 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
346
358
  // clear all states/listeners, assuming user closed the window before completing oauth
347
359
  if ((_f = providersWaitingOauthMessage.current) === null || _f === void 0 ? void 0 : _f[provider]) {
348
360
  clearListeners();
349
- handleError(SocialOAuthErrorCode.OAUTH_WINDOW_TIMEOUT, `Connecting ${provider} account window timeout.`);
361
+ handleError(provider, SocialOAuthErrorCode.OAUTH_WINDOW_TIMEOUT, `Connecting ${provider} account window timeout.`, { raiseAuthFailure: authMode === 'signin' });
350
362
  }
351
363
  clearInterval(authWindowInterval.current);
352
364
  setIsProcessing(false);
@@ -364,7 +376,7 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
364
376
  siweUri: window.location.origin,
365
377
  });
366
378
  if (!(data === null || data === void 0 ? void 0 : data.url) || !(data === null || data === void 0 ? void 0 : data.channelToken)) {
367
- handleError(SocialOAuthErrorCode.GENERAL_ERROR, "Farcaster didn't return a valid url.");
379
+ handleError(ProviderEnum.Farcaster, SocialOAuthErrorCode.GENERAL_ERROR, "Farcaster didn't return a valid url.", { raiseAuthFailure: authMode === 'signin' });
368
380
  return;
369
381
  }
370
382
  // If on mobile, we want to redirect to the Warpcast app.
@@ -389,7 +401,7 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
389
401
  !(status === null || status === void 0 ? void 0 : status.custody) ||
390
402
  !(status === null || status === void 0 ? void 0 : status.signature) ||
391
403
  !(status === null || status === void 0 ? void 0 : status.nonce)) {
392
- handleError(SocialOAuthErrorCode.GENERAL_ERROR, "Farcaster didn't return valid data.");
404
+ handleError(ProviderEnum.Farcaster, SocialOAuthErrorCode.GENERAL_ERROR, "Farcaster didn't return valid data.", { raiseAuthFailure: authMode === 'signin' });
393
405
  return;
394
406
  }
395
407
  const { custody: address, message, signature, nonce } = status;
@@ -404,7 +416,7 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
404
416
  yield signInAccount(ProviderEnum.Farcaster, apiCall);
405
417
  }
406
418
  else {
407
- handleError(SocialOAuthErrorCode.GENERAL_ERROR, 'Linking with Farcaster is not supported at the moment.');
419
+ handleError(ProviderEnum.Farcaster, SocialOAuthErrorCode.GENERAL_ERROR, 'Linking with Farcaster is not supported at the moment.', { raiseAuthFailure: true });
408
420
  }
409
421
  setIsProcessing(false);
410
422
  });
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var _tslib = require('../../../../../_virtual/_tslib.cjs');
7
7
  var utils = require('@dynamic-labs/utils');
8
+ var AccountExistsContext = require('../../../context/AccountExistsContext/AccountExistsContext.cjs');
8
9
  require('react');
9
10
  require('../../../context/DynamicContext/DynamicContext.cjs');
10
11
  require('@dynamic-labs/sdk-api-core');
@@ -14,27 +15,25 @@ require('@dynamic-labs/wallet-connector-core');
14
15
  require('react/jsx-runtime');
15
16
  var ViewContext = require('../../../context/ViewContext/ViewContext.cjs');
16
17
  require('@dynamic-labs/wallet-book');
17
- var localStorage$1 = require('../../constants/localStorage.cjs');
18
18
  require('../../constants/colors.cjs');
19
19
  require('../../constants/values.cjs');
20
- var localStorage = require('../../../shared/utils/classes/storage/localStorage.cjs');
20
+ require('../../../shared/utils/classes/storage/localStorage.cjs');
21
21
  require('../../../shared/consts/index.cjs');
22
22
  require('../../../events/dynamicEvents.cjs');
23
23
  require('../../../context/CaptchaContext/CaptchaContext.cjs');
24
24
  var ErrorContext = require('../../../context/ErrorContext/ErrorContext.cjs');
25
- var createUserProfile = require('../../functions/createUserProfile/createUserProfile.cjs');
26
25
  require('@dynamic-labs/multi-wallet');
27
26
  require('react-international-phone');
28
27
  require('viem');
29
28
  require('viem/chains');
30
29
  require('../../../config/ApiEndpoint.cjs');
30
+ var mfa = require('../../../data/api/mfa/mfa.cjs');
31
31
  require('../../../locale/locale.cjs');
32
- require('@dynamic-labs/store');
32
+ var storeAuthTokenAndUser = require('../../../store/utils/storeAuthTokenAndUser/storeAuthTokenAndUser.cjs');
33
+ var updateJWTAndCreateUserProfile = require('../../functions/updateJWTAndCreateUserProfile/updateJWTAndCreateUserProfile.cjs');
33
34
  require('../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
34
- var AccountExistsContext = require('../../../context/AccountExistsContext/AccountExistsContext.cjs');
35
35
  require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
36
36
  var VerificationContext = require('../../../context/VerificationContext/VerificationContext.cjs');
37
- var useCreateUserProfileByJWTCallback = require('../useCreateUserProfileByJWTCallback/useCreateUserProfileByJWTCallback.cjs');
38
37
  require('react-dom');
39
38
  var useEmbeddedWallet = require('../useEmbeddedWallet/useEmbeddedWallet.cjs');
40
39
  require('../../../context/WalletContext/WalletContext.cjs');
@@ -47,6 +46,7 @@ require('../../../context/MockContext/MockContext.cjs');
47
46
  require('../../../views/CollectUserDataView/useFields.cjs');
48
47
  require('../useUserUpdateRequest/useUpdateUser/useUpdateUser.cjs');
49
48
  require('../../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
49
+ require('@dynamic-labs/store');
50
50
  require('@dynamic-labs/rpc-providers');
51
51
  require('react-i18next');
52
52
  require('../../../components/Alert/Alert.cjs');
@@ -84,39 +84,49 @@ var useInternalDynamicContext = require('../../../context/DynamicContext/useDyna
84
84
 
85
85
  const sleepToShowSuccessMessage = () => utils.sleep(1500);
86
86
  const useUserAuth = ({ authMethod, }) => {
87
- const { handleLogOut, setOnboardingOnlyJwt, setShowAuthFlow, setCallback, onboardingOnlyJwt, setMultiWalletWidgetState, } = useInternalDynamicContext.useInternalDynamicContext();
87
+ const { handleLogOut, setShowAuthFlow, setCallback, setMultiWalletWidgetState, environmentId, } = useInternalDynamicContext.useInternalDynamicContext();
88
88
  const { view, setView, goToInitialView } = ViewContext.useViewContext();
89
89
  const { setLoading } = LoadingContext.useLoadingContext();
90
90
  const { setErrorMessage, setError } = ErrorContext.useErrorContext();
91
91
  const { setExistentAccountData } = AccountExistsContext.useAccountExistsContext();
92
- const { handleVerifiedUserWithJWT, handleVerifiedUserWithUser } = useHandleVerifiedUser.useHandleVerifiedUser();
93
- const { createUserProfileByJWT } = useCreateUserProfileByJWTCallback.useCreateUserProfileByJWTCallback();
92
+ const handleVerifiedUser = useHandleVerifiedUser.useHandleVerifiedUser();
94
93
  const { displayedDestination: formattedPhone } = VerificationContext.useVerification();
95
94
  const { shouldAutoCreateEmbeddedWallet } = useEmbeddedWallet.useEmbeddedWallet();
96
95
  const initAuth = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ isSignIn = true, verifyFunction, onVerifySuccess, onSettled, onError, showSuccessMessage = false, skipDefaultErrorHandling = false, }) {
97
- var _b;
96
+ var _b, _c;
98
97
  logger.logger.debug('initAuth', { authMethod, isSignIn });
99
98
  try {
100
99
  const { jwt, minifiedJwt, user } = (yield verifyFunction()) || {};
101
- if (!jwt || !minifiedJwt || !user) {
100
+ if (!user) {
102
101
  yield cancelAuth();
103
- throw new utils.DynamicError('No jwt returned from verify function');
102
+ throw new utils.DynamicError('No user returned from verify function');
104
103
  }
105
- const userProfile = createUserProfile.createUserProfileFromSdkUser(user);
104
+ const userProfile = storeAuthTokenAndUser.storeAuthTokenAndUser({ jwt, minifiedJwt, user });
106
105
  onVerifySuccess === null || onVerifySuccess === void 0 ? void 0 : onVerifySuccess(userProfile);
107
106
  if (isSignIn && ((_b = userProfile.missingFields) === null || _b === void 0 ? void 0 : _b.length)) {
108
- yield handleOnboarding(jwt, showSuccessMessage, onSettled);
107
+ yield handleOnboarding(showSuccessMessage, onSettled);
108
+ return;
109
+ }
110
+ if ((_c = user.scope) === null || _c === void 0 ? void 0 : _c.includes('requiresAdditionalAuth')) {
111
+ // this is needed because useMfa relies on the jwt being available in LS
112
+ // this function only stores the jwt and creates the user, but does not set
113
+ // the user state
114
+ updateJWTAndCreateUserProfile.updateJWTAndCreateUserProfile(jwt, minifiedJwt);
115
+ const devices = yield mfa.getUserMfaDevices({ environmentId });
116
+ if (devices.length === 0) {
117
+ setView('mfa-choose-device');
118
+ }
119
+ else {
120
+ setView('mfa-verification');
121
+ }
109
122
  return;
110
123
  }
111
124
  setMultiWalletWidgetState('idle');
112
- setOnboardingOnlyJwt(undefined);
113
- localStorage.LocalStorage.removeFromLS(localStorage$1.AUTH_ONBOARDING_TOKEN);
114
- yield handleVerifiedUserWithUser(userProfile);
125
+ yield handleVerifiedUser(userProfile);
115
126
  if (showSuccessMessage) {
116
127
  // this timeout is set to make sure that the user will see success message
117
128
  yield sleepToShowSuccessMessage();
118
129
  }
119
- yield createUserProfileByJWT(jwt, minifiedJwt);
120
130
  if (isSignIn) {
121
131
  setCallback('authSuccess');
122
132
  }
@@ -141,9 +151,7 @@ const useUserAuth = ({ authMethod, }) => {
141
151
  onSettled === null || onSettled === void 0 ? void 0 : onSettled();
142
152
  }
143
153
  });
144
- const handleOnboarding = (jwt, showSuccessMessage, onSettled) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
145
- setOnboardingOnlyJwt(jwt);
146
- localStorage.LocalStorage.setToLS(localStorage$1.AUTH_ONBOARDING_TOKEN, jwt, true);
154
+ const handleOnboarding = (showSuccessMessage, onSettled) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
147
155
  if (showSuccessMessage) {
148
156
  yield sleepToShowSuccessMessage();
149
157
  }
@@ -184,7 +192,7 @@ const useUserAuth = ({ authMethod, }) => {
184
192
  // Handle the case where the user has already an account with the email
185
193
  if (error instanceof utils.UserHasAccountWithEmailError) {
186
194
  setView('merge-user-accounts-with-same-email', {
187
- returnToView: options.isEmailRecoveryFlow
195
+ returnToView: 'isEmailRecoveryFlow' in options && options.isEmailRecoveryFlow
188
196
  ? 'passkey-recovery-add-email'
189
197
  : undefined,
190
198
  });
@@ -201,7 +209,7 @@ const useUserAuth = ({ authMethod, }) => {
201
209
  setError(error.message);
202
210
  }
203
211
  };
204
- const handleVerifyMissingFields = (_c) => _tslib.__awaiter(void 0, [_c], void 0, function* ({ missingFields, isEmailVerificationRequired, isSmsVerificationRequired, }) {
212
+ const handleVerifyMissingFields = (_d) => _tslib.__awaiter(void 0, [_d], void 0, function* ({ missingFields, isEmailVerificationRequired, isSmsVerificationRequired, }) {
205
213
  if (isEmailVerificationRequired &&
206
214
  missingFields.find((field) => field.name === 'email')) {
207
215
  setView('verify-email');
@@ -214,13 +222,16 @@ const useUserAuth = ({ authMethod, }) => {
214
222
  }
215
223
  setView(view.type);
216
224
  });
217
- const completeAuth = (_d) => _tslib.__awaiter(void 0, [_d], void 0, function* ({ completeSignInFlow, updateJwtFunction, onValidUpdatedJwt, options = {}, }) {
225
+ const completeAuth = (_e) => _tslib.__awaiter(void 0, [_e], void 0, function* ({ completeSignInFlow, updateJwtFunction, onValidUpdatedJwt, options = {}, }) {
218
226
  logger.logger.debug('completeAuth', { authMethod });
219
227
  try {
220
228
  const { updateUserProfileResponse, isSmsVerificationRequired, isEmailVerificationRequired, missingFields, } = yield updateJwtFunction();
221
229
  onValidUpdatedJwt === null || onValidUpdatedJwt === void 0 ? void 0 : onValidUpdatedJwt();
222
- setOnboardingOnlyJwt(updateUserProfileResponse.jwt);
223
- localStorage.LocalStorage.setToLS(localStorage$1.AUTH_ONBOARDING_TOKEN, updateUserProfileResponse.minifiedJwt, true);
230
+ const updatedUser = storeAuthTokenAndUser.storeAuthTokenAndUser({
231
+ jwt: updateUserProfileResponse.jwt,
232
+ minifiedJwt: updateUserProfileResponse.minifiedJwt,
233
+ user: updateUserProfileResponse.user,
234
+ });
224
235
  if (missingFields.length > 0) {
225
236
  yield handleVerifyMissingFields({
226
237
  isEmailVerificationRequired,
@@ -229,13 +240,8 @@ const useUserAuth = ({ authMethod, }) => {
229
240
  });
230
241
  return;
231
242
  }
232
- // no more onboarding needed, clean up onboarding jwt
233
- if (onboardingOnlyJwt) {
234
- yield handleVerifiedUserWithJWT(updateUserProfileResponse.jwt);
235
- setOnboardingOnlyJwt(undefined);
236
- localStorage.LocalStorage.removeFromLS(localStorage$1.AUTH_ONBOARDING_TOKEN);
237
- setCallback('authSuccess');
238
- }
243
+ yield handleVerifiedUser(updatedUser);
244
+ setCallback('authSuccess');
239
245
  if (completeSignInFlow) {
240
246
  const shouldReturn = yield completeSignInFlow(updateUserProfileResponse);
241
247
  if (shouldReturn) {
@@ -1,5 +1,5 @@
1
- import { CompleteUserAuthProps, UseUserAuthProps, InitUserAuthProps, AuthOptions } from './useUserAuth.types';
2
- export declare const useUserAuth: <T extends keyof AuthOptions>({ authMethod, }: UseUserAuthProps<T>) => {
1
+ import { CompleteUserAuthProps, InitUserAuthProps, UseUserAuthProps } from './useUserAuth.types';
2
+ export declare const useUserAuth: <T extends keyof import("@dynamic-labs/types").AuthOptions>({ authMethod, }: UseUserAuthProps<T>) => {
3
3
  cancelAuth: () => Promise<void>;
4
4
  completeAuth: ({ completeSignInFlow, updateJwtFunction, onValidUpdatedJwt, options, }: CompleteUserAuthProps<T>) => Promise<void>;
5
5
  initAuth: ({ isSignIn, verifyFunction, onVerifySuccess, onSettled, onError, showSuccessMessage, skipDefaultErrorHandling, }: InitUserAuthProps<T>) => Promise<void>;