@dynamic-labs/sdk-react-core 4.57.1 → 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 +2 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +12 -12
- package/src/lib/utils/functions/getOauthLoginUrl/getOauthLoginUrl.cjs +4 -1
- package/src/lib/utils/functions/getOauthLoginUrl/getOauthLoginUrl.d.ts +5 -1
- package/src/lib/utils/functions/getOauthLoginUrl/getOauthLoginUrl.js +4 -1
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +12 -10
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +13 -11
package/CHANGELOG.md
CHANGED
package/package.cjs
CHANGED
package/package.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/sdk-react-core",
|
|
3
|
-
"version": "4.57.
|
|
3
|
+
"version": "4.57.2",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"@dynamic-labs/sdk-api-core": "0.0.860",
|
|
6
6
|
"@dynamic-labs-sdk/client": "0.4.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.
|
|
19
|
-
"@dynamic-labs/iconic": "4.57.
|
|
20
|
-
"@dynamic-labs/locale": "4.57.
|
|
21
|
-
"@dynamic-labs/logger": "4.57.
|
|
22
|
-
"@dynamic-labs/multi-wallet": "4.57.
|
|
23
|
-
"@dynamic-labs/rpc-providers": "4.57.
|
|
24
|
-
"@dynamic-labs/store": "4.57.
|
|
25
|
-
"@dynamic-labs/types": "4.57.
|
|
26
|
-
"@dynamic-labs/utils": "4.57.
|
|
27
|
-
"@dynamic-labs/wallet-book": "4.57.
|
|
28
|
-
"@dynamic-labs/wallet-connector-core": "4.57.
|
|
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
|
-
|
|
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((
|
|
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,
|
|
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((
|
|
388
|
-
var
|
|
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
|
|
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((
|
|
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
|
|
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 (!((
|
|
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
|
-
(
|
|
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((
|
|
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,
|
|
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((
|
|
384
|
-
var
|
|
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
|
|
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((
|
|
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
|
|
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 (!((
|
|
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
|
-
(
|
|
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,
|