@dynamic-labs/sdk-react-core 4.57.0 → 4.57.2

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 CHANGED
@@ -1,4 +1,13 @@
1
1
 
2
+ ### [4.57.2](https://github.com/dynamic-labs/dynamic-auth/compare/v4.57.1...v4.57.2) (2026-01-23)
3
+
4
+ ### [4.57.1](https://github.com/dynamic-labs/dynamic-auth/compare/v4.57.0...v4.57.1) (2026-01-22)
5
+
6
+
7
+ ### Bug Fixes
8
+
9
+ * prevent No wallet provider found error when initializating ([#10277](https://github.com/dynamic-labs/dynamic-auth/issues/10277)) ([7427765](https://github.com/dynamic-labs/dynamic-auth/commit/74277654f2c823b6dd66a7cace29ea62f832bb77))
10
+
2
11
  ## [4.57.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.56.0...v4.57.0) (2026-01-20)
3
12
 
4
13
 
package/package.cjs CHANGED
@@ -3,10 +3,10 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "4.57.0";
6
+ var version = "4.57.2";
7
7
  var dependencies = {
8
8
  "@dynamic-labs/sdk-api-core": "0.0.860",
9
- "@dynamic-labs-sdk/client": "0.3.0",
9
+ "@dynamic-labs-sdk/client": "0.4.0",
10
10
  "@hcaptcha/react-hcaptcha": "1.4.4",
11
11
  "@thumbmarkjs/thumbmarkjs": "0.16.0",
12
12
  "country-list": "2.3.0",
package/package.js CHANGED
@@ -1,8 +1,8 @@
1
1
  'use client'
2
- var version = "4.57.0";
2
+ var version = "4.57.2";
3
3
  var dependencies = {
4
4
  "@dynamic-labs/sdk-api-core": "0.0.860",
5
- "@dynamic-labs-sdk/client": "0.3.0",
5
+ "@dynamic-labs-sdk/client": "0.4.0",
6
6
  "@hcaptcha/react-hcaptcha": "1.4.4",
7
7
  "@thumbmarkjs/thumbmarkjs": "0.16.0",
8
8
  "country-list": "2.3.0",
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@dynamic-labs/sdk-react-core",
3
- "version": "4.57.0",
3
+ "version": "4.57.2",
4
4
  "dependencies": {
5
5
  "@dynamic-labs/sdk-api-core": "0.0.860",
6
- "@dynamic-labs-sdk/client": "0.3.0",
6
+ "@dynamic-labs-sdk/client": "0.4.0",
7
7
  "@hcaptcha/react-hcaptcha": "1.4.4",
8
8
  "@thumbmarkjs/thumbmarkjs": "0.16.0",
9
9
  "country-list": "2.3.0",
@@ -15,17 +15,17 @@
15
15
  "yup": "0.32.11",
16
16
  "react-international-phone": "4.5.0",
17
17
  "bs58": "5.0.0",
18
- "@dynamic-labs/assert-package-version": "4.57.0",
19
- "@dynamic-labs/iconic": "4.57.0",
20
- "@dynamic-labs/locale": "4.57.0",
21
- "@dynamic-labs/logger": "4.57.0",
22
- "@dynamic-labs/multi-wallet": "4.57.0",
23
- "@dynamic-labs/rpc-providers": "4.57.0",
24
- "@dynamic-labs/store": "4.57.0",
25
- "@dynamic-labs/types": "4.57.0",
26
- "@dynamic-labs/utils": "4.57.0",
27
- "@dynamic-labs/wallet-book": "4.57.0",
28
- "@dynamic-labs/wallet-connector-core": "4.57.0",
18
+ "@dynamic-labs/assert-package-version": "4.57.2",
19
+ "@dynamic-labs/iconic": "4.57.2",
20
+ "@dynamic-labs/locale": "4.57.2",
21
+ "@dynamic-labs/logger": "4.57.2",
22
+ "@dynamic-labs/multi-wallet": "4.57.2",
23
+ "@dynamic-labs/rpc-providers": "4.57.2",
24
+ "@dynamic-labs/store": "4.57.2",
25
+ "@dynamic-labs/types": "4.57.2",
26
+ "@dynamic-labs/utils": "4.57.2",
27
+ "@dynamic-labs/wallet-book": "4.57.2",
28
+ "@dynamic-labs/wallet-connector-core": "4.57.2",
29
29
  "eventemitter3": "5.0.1"
30
30
  },
31
31
  "devDependencies": {
@@ -19,7 +19,7 @@ const getMobileOauthUrl = (provider, loginData) => {
19
19
  }
20
20
  return provider.redirectUrl.replace('redirect', 'authorizeHtml');
21
21
  };
22
- const getOauthLoginUrl = (providers, providerType) => {
22
+ const getOauthLoginUrl = (providers, providerType, options) => {
23
23
  var _a, _b, _c;
24
24
  const provider = getProviderByType.getProviderByType(providers, providerType);
25
25
  if (!(provider === null || provider === void 0 ? void 0 : provider.clientId)) {
@@ -56,6 +56,9 @@ const getOauthLoginUrl = (providers, providerType) => {
56
56
  }
57
57
  if (providerType === sdkApiCore.ProviderEnum.Google) {
58
58
  baseProps.access_type = 'offline';
59
+ if (options === null || options === void 0 ? void 0 : options.isGoogleDriveBackupEnabled) {
60
+ baseProps.prompt = 'consent';
61
+ }
59
62
  }
60
63
  if (provider.scopes) {
61
64
  baseProps.scope = provider.scopes;
@@ -1,2 +1,6 @@
1
1
  import { Provider, ProviderEnum } from '@dynamic-labs/sdk-api-core';
2
- export declare const getOauthLoginUrl: (providers: Provider[], providerType: ProviderEnum) => string;
2
+ type GetOauthLoginUrlOptions = {
3
+ isGoogleDriveBackupEnabled?: boolean;
4
+ };
5
+ export declare const getOauthLoginUrl: (providers: Provider[], providerType: ProviderEnum, options?: GetOauthLoginUrlOptions) => string;
6
+ export {};
@@ -15,7 +15,7 @@ const getMobileOauthUrl = (provider, loginData) => {
15
15
  }
16
16
  return provider.redirectUrl.replace('redirect', 'authorizeHtml');
17
17
  };
18
- const getOauthLoginUrl = (providers, providerType) => {
18
+ const getOauthLoginUrl = (providers, providerType, options) => {
19
19
  var _a, _b, _c;
20
20
  const provider = getProviderByType(providers, providerType);
21
21
  if (!(provider === null || provider === void 0 ? void 0 : provider.clientId)) {
@@ -52,6 +52,9 @@ const getOauthLoginUrl = (providers, providerType) => {
52
52
  }
53
53
  if (providerType === ProviderEnum.Google) {
54
54
  baseProps.access_type = 'offline';
55
+ if (options === null || options === void 0 ? void 0 : options.isGoogleDriveBackupEnabled) {
56
+ baseProps.prompt = 'consent';
57
+ }
55
58
  }
56
59
  if (provider.scopes) {
57
60
  baseProps.scope = provider.scopes;
@@ -140,7 +140,7 @@ const socialProviders = [
140
140
  const providersRequiringPkce = ['twitter', 'github'];
141
141
  // Hook to handle common social auth logic (for social linking and social sign in)
142
142
  const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
143
- var _a;
143
+ var _a, _b, _c;
144
144
  const { environmentId, setShowAuthFlow, socialSettings, projectSettings, redirectUrl: defaultRedirectUrl, } = useInternalDynamicContext.useInternalDynamicContext();
145
145
  /**
146
146
  * Represents if the SDK will use a popup or redirect for social auth
@@ -213,7 +213,7 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
213
213
  verifyFunction: () => apiCall(),
214
214
  });
215
215
  }), [handleError, initAuth, onSettled]);
216
- const completeConnection = React.useCallback((_b) => _tslib.__awaiter(void 0, [_b], void 0, function* ({ authMode, provider, state, authCode, captchaToken, verifier, telegramAuthToken, forceCreateUser = false, ssoProviderId, }) {
216
+ const completeConnection = React.useCallback((_d) => _tslib.__awaiter(void 0, [_d], void 0, function* ({ authMode, provider, state, authCode, captchaToken, verifier, telegramAuthToken, forceCreateUser = false, ssoProviderId, }) {
217
217
  try {
218
218
  let sessionPublicKey = undefined;
219
219
  utils.tracing.logEvent('oauth', 'completeConnection', utils.tracing.formatObject({
@@ -292,7 +292,7 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
292
292
  shouldRegisterSessionKeysOnSignin,
293
293
  signInAccount,
294
294
  ]);
295
- const connectWithFarcaster = React.useCallback((authMode_1, _c) => _tslib.__awaiter(void 0, [authMode_1, _c], void 0, function* (authMode, { captchaToken, redirectUrl }) {
295
+ const connectWithFarcaster = React.useCallback((authMode_1, _e) => _tslib.__awaiter(void 0, [authMode_1, _e], void 0, function* (authMode, { captchaToken, redirectUrl }) {
296
296
  let dynamicNonce;
297
297
  try {
298
298
  dynamicNonce = nonce.consumeNonce();
@@ -384,8 +384,8 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
384
384
  shouldRegisterSessionKeysOnSignin,
385
385
  signInAccount,
386
386
  ]);
387
- const connectSocialAccount = React.useCallback((_d) => _tslib.__awaiter(void 0, [_d], void 0, function* ({ authMode, provider, validator, captchaToken, isHeadlessSocialSignIn, payingWithDynamic, triggerFundFromExchangeOnSuccess, redirectUrl, telegramAuthToken, showWidgetAfterConnection, forcePopup, ssoProviderId, }) {
388
- var _e, _f;
387
+ const connectSocialAccount = React.useCallback((_f) => _tslib.__awaiter(void 0, [_f], void 0, function* ({ authMode, provider, validator, captchaToken, isHeadlessSocialSignIn, payingWithDynamic, triggerFundFromExchangeOnSuccess, redirectUrl, telegramAuthToken, showWidgetAfterConnection, forcePopup, ssoProviderId, }) {
388
+ var _g, _h, _j, _k, _l;
389
389
  clearError();
390
390
  setIsProcessing(true);
391
391
  if (!authMode) {
@@ -425,7 +425,8 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
425
425
  state,
426
426
  triggerFundFromExchangeOnSuccess,
427
427
  });
428
- const loginUrlString = getOauthLoginUrl.getOauthLoginUrl((_e = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) !== null && _e !== void 0 ? _e : [], provider);
428
+ const isGoogleDriveBackupEnabled = (_j = (_h = (_g = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _g === void 0 ? void 0 : _g.waas) === null || _h === void 0 ? void 0 : _h.backupOptions) === null || _j === void 0 ? void 0 : _j.includes(sdkApiCore.WaasBackupOptionsEnum.GoogleDrive);
429
+ const loginUrlString = getOauthLoginUrl.getOauthLoginUrl((_k = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) !== null && _k !== void 0 ? _k : [], provider, { isGoogleDriveBackupEnabled });
429
430
  if (!loginUrlString) {
430
431
  handleError(provider, types.SocialOAuthErrorCode.NO_OAUTH_URL, `Failed to get login url to connect social account: ${provider}`, { raiseAuthFailure: authMode === 'signin' });
431
432
  return;
@@ -442,7 +443,7 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
442
443
  try {
443
444
  const effectiveStrategy = forcePopup ? 'popup' : strategy;
444
445
  const authCode = yield utils.Oauth2Service.getOauthCode({
445
- apiProvider: getProviderByType.getProviderByType((_f = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) !== null && _f !== void 0 ? _f : [], provider),
446
+ apiProvider: getProviderByType.getProviderByType((_l = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) !== null && _l !== void 0 ? _l : [], provider),
446
447
  getOAuthResultFromApi: () => oauth.getOAuthResult(environmentId, provider, {
447
448
  state,
448
449
  }),
@@ -495,17 +496,18 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
495
496
  onFailed,
496
497
  onSettled,
497
498
  projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers,
499
+ (_b = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _a === void 0 ? void 0 : _a.waas) === null || _b === void 0 ? void 0 : _b.backupOptions,
498
500
  strategy,
499
501
  ]);
500
502
  const checkCaptchaAndConnect = React.useCallback((props) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
501
- var _g;
503
+ var _m;
502
504
  if (props.authMode === 'signin' && client.getDynamicClient().user) {
503
505
  throw new utils.DynamicError('User is already logged in');
504
506
  }
505
507
  else if (props.authMode === 'link' && !client.getDynamicClient().user) {
506
508
  throw new utils.DynamicError('User is not logged in');
507
509
  }
508
- if (!((_g = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.security.hCaptcha) === null || _g === void 0 ? void 0 : _g.enabled)) {
510
+ if (!((_m = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.security.hCaptcha) === null || _m === void 0 ? void 0 : _m.enabled)) {
509
511
  yield connectSocialAccount(props);
510
512
  return;
511
513
  }
@@ -526,7 +528,7 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
526
528
  setShowAuthFlow,
527
529
  connectSocialAccount,
528
530
  engageCaptcha,
529
- (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.security.hCaptcha) === null || _a === void 0 ? void 0 : _a.enabled,
531
+ (_c = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.security.hCaptcha) === null || _c === void 0 ? void 0 : _c.enabled,
530
532
  ]);
531
533
  return React.useMemo(() => ({
532
534
  checkValidProvider,
@@ -1,7 +1,7 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
3
  import { useMemo, useState, useCallback } from 'react';
4
- import { ProviderEnum } from '@dynamic-labs/sdk-api-core';
4
+ import { ProviderEnum, WaasBackupOptionsEnum } from '@dynamic-labs/sdk-api-core';
5
5
  import { SocialOAuthErrorCode } from '@dynamic-labs/types';
6
6
  import { SocialAccountAlreadyExistsError, tracing, PlatformService, isMobile, Oauth2Service, DynamicError } from '@dynamic-labs/utils';
7
7
  import { getDynamicClient } from '../../../client/client.js';
@@ -136,7 +136,7 @@ const socialProviders = [
136
136
  const providersRequiringPkce = ['twitter', 'github'];
137
137
  // Hook to handle common social auth logic (for social linking and social sign in)
138
138
  const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
139
- var _a;
139
+ var _a, _b, _c;
140
140
  const { environmentId, setShowAuthFlow, socialSettings, projectSettings, redirectUrl: defaultRedirectUrl, } = useInternalDynamicContext();
141
141
  /**
142
142
  * Represents if the SDK will use a popup or redirect for social auth
@@ -209,7 +209,7 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
209
209
  verifyFunction: () => apiCall(),
210
210
  });
211
211
  }), [handleError, initAuth$1, onSettled]);
212
- const completeConnection = useCallback((_b) => __awaiter(void 0, [_b], void 0, function* ({ authMode, provider, state, authCode, captchaToken, verifier, telegramAuthToken, forceCreateUser = false, ssoProviderId, }) {
212
+ const completeConnection = useCallback((_d) => __awaiter(void 0, [_d], void 0, function* ({ authMode, provider, state, authCode, captchaToken, verifier, telegramAuthToken, forceCreateUser = false, ssoProviderId, }) {
213
213
  try {
214
214
  let sessionPublicKey = undefined;
215
215
  tracing.logEvent('oauth', 'completeConnection', tracing.formatObject({
@@ -288,7 +288,7 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
288
288
  shouldRegisterSessionKeysOnSignin,
289
289
  signInAccount,
290
290
  ]);
291
- const connectWithFarcaster = useCallback((authMode_1, _c) => __awaiter(void 0, [authMode_1, _c], void 0, function* (authMode, { captchaToken, redirectUrl }) {
291
+ const connectWithFarcaster = useCallback((authMode_1, _e) => __awaiter(void 0, [authMode_1, _e], void 0, function* (authMode, { captchaToken, redirectUrl }) {
292
292
  let dynamicNonce;
293
293
  try {
294
294
  dynamicNonce = consumeNonce();
@@ -380,8 +380,8 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
380
380
  shouldRegisterSessionKeysOnSignin,
381
381
  signInAccount,
382
382
  ]);
383
- const connectSocialAccount = useCallback((_d) => __awaiter(void 0, [_d], void 0, function* ({ authMode, provider, validator, captchaToken, isHeadlessSocialSignIn, payingWithDynamic, triggerFundFromExchangeOnSuccess, redirectUrl, telegramAuthToken, showWidgetAfterConnection, forcePopup, ssoProviderId, }) {
384
- var _e, _f;
383
+ const connectSocialAccount = useCallback((_f) => __awaiter(void 0, [_f], void 0, function* ({ authMode, provider, validator, captchaToken, isHeadlessSocialSignIn, payingWithDynamic, triggerFundFromExchangeOnSuccess, redirectUrl, telegramAuthToken, showWidgetAfterConnection, forcePopup, ssoProviderId, }) {
384
+ var _g, _h, _j, _k, _l;
385
385
  clearError();
386
386
  setIsProcessing(true);
387
387
  if (!authMode) {
@@ -421,7 +421,8 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
421
421
  state,
422
422
  triggerFundFromExchangeOnSuccess,
423
423
  });
424
- const loginUrlString = getOauthLoginUrl((_e = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) !== null && _e !== void 0 ? _e : [], provider);
424
+ const isGoogleDriveBackupEnabled = (_j = (_h = (_g = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _g === void 0 ? void 0 : _g.waas) === null || _h === void 0 ? void 0 : _h.backupOptions) === null || _j === void 0 ? void 0 : _j.includes(WaasBackupOptionsEnum.GoogleDrive);
425
+ const loginUrlString = getOauthLoginUrl((_k = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) !== null && _k !== void 0 ? _k : [], provider, { isGoogleDriveBackupEnabled });
425
426
  if (!loginUrlString) {
426
427
  handleError(provider, SocialOAuthErrorCode.NO_OAUTH_URL, `Failed to get login url to connect social account: ${provider}`, { raiseAuthFailure: authMode === 'signin' });
427
428
  return;
@@ -438,7 +439,7 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
438
439
  try {
439
440
  const effectiveStrategy = forcePopup ? 'popup' : strategy;
440
441
  const authCode = yield Oauth2Service.getOauthCode({
441
- apiProvider: getProviderByType((_f = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) !== null && _f !== void 0 ? _f : [], provider),
442
+ apiProvider: getProviderByType((_l = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) !== null && _l !== void 0 ? _l : [], provider),
442
443
  getOAuthResultFromApi: () => getOAuthResult(environmentId, provider, {
443
444
  state,
444
445
  }),
@@ -491,17 +492,18 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
491
492
  onFailed,
492
493
  onSettled,
493
494
  projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers,
495
+ (_b = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _a === void 0 ? void 0 : _a.waas) === null || _b === void 0 ? void 0 : _b.backupOptions,
494
496
  strategy,
495
497
  ]);
496
498
  const checkCaptchaAndConnect = useCallback((props) => __awaiter(void 0, void 0, void 0, function* () {
497
- var _g;
499
+ var _m;
498
500
  if (props.authMode === 'signin' && getDynamicClient().user) {
499
501
  throw new DynamicError('User is already logged in');
500
502
  }
501
503
  else if (props.authMode === 'link' && !getDynamicClient().user) {
502
504
  throw new DynamicError('User is not logged in');
503
505
  }
504
- if (!((_g = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.security.hCaptcha) === null || _g === void 0 ? void 0 : _g.enabled)) {
506
+ if (!((_m = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.security.hCaptcha) === null || _m === void 0 ? void 0 : _m.enabled)) {
505
507
  yield connectSocialAccount(props);
506
508
  return;
507
509
  }
@@ -522,7 +524,7 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
522
524
  setShowAuthFlow,
523
525
  connectSocialAccount,
524
526
  engageCaptcha,
525
- (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.security.hCaptcha) === null || _a === void 0 ? void 0 : _a.enabled,
527
+ (_c = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.security.hCaptcha) === null || _c === void 0 ? void 0 : _c.enabled,
526
528
  ]);
527
529
  return useMemo(() => ({
528
530
  checkValidProvider,