@dynamic-labs/sdk-react-core 0.19.0-alpha.25 → 0.19.0-alpha.27
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 +39 -0
- package/package.cjs +2 -2
- package/package.js +2 -2
- package/package.json +10 -10
- package/src/lib/components/Accordion/components/VerticalAccordion/VerticalAccordion.cjs +1 -1
- package/src/lib/components/Accordion/components/VerticalAccordion/VerticalAccordion.js +1 -1
- package/src/lib/components/Accordion/components/VerticalAccordion/VerticalAccordion.types.d.ts +2 -4
- package/src/lib/components/Button/Button.cjs +1 -0
- package/src/lib/components/Button/Button.d.ts +1 -1
- package/src/lib/components/Button/Button.js +1 -0
- package/src/lib/components/LogoutButton/LogoutButton.cjs +1 -3
- package/src/lib/components/LogoutButton/LogoutButton.js +1 -3
- package/src/lib/components/NetworkPicker/NetworkPicker.cjs +5 -2
- package/src/lib/components/NetworkPicker/NetworkPicker.js +5 -2
- package/src/lib/components/SendBalancePageLayout/SendBalancePageLayout.cjs +1 -1
- package/src/lib/components/SendBalancePageLayout/SendBalancePageLayout.js +2 -2
- package/src/lib/components/SocialSignIn/SocialSignIn.cjs +8 -3
- package/src/lib/components/SocialSignIn/SocialSignIn.js +8 -3
- package/src/lib/components/Typography/Typography.cjs +1 -0
- package/src/lib/components/Typography/Typography.js +1 -0
- package/src/lib/components/Typography/Typography.types.d.ts +1 -1
- package/src/lib/components/UserProfile/parts/UserProfileField/UserProfileField.cjs +1 -1
- package/src/lib/components/UserProfile/parts/UserProfileField/UserProfileField.js +1 -1
- package/src/lib/context/DynamicContext/DynamicContext.cjs +5 -3
- package/src/lib/context/DynamicContext/DynamicContext.js +5 -3
- package/src/lib/context/DynamicContext/internalEvents/internalEvents.d.ts +0 -1
- package/src/lib/context/DynamicContext/useDynamicContext.cjs +1 -2
- package/src/lib/context/DynamicContext/useDynamicContext.d.ts +1 -1
- package/src/lib/context/DynamicContext/useDynamicContext.js +1 -2
- package/src/lib/context/SocialRedirectContext/SocialRedirectContext.cjs +8 -8
- package/src/lib/context/SocialRedirectContext/SocialRedirectContext.js +8 -8
- package/src/lib/context/ViewContext/ViewContext.cjs +14 -1
- package/src/lib/context/ViewContext/ViewContext.d.ts +3 -1
- package/src/lib/context/ViewContext/ViewContext.js +15 -2
- package/src/lib/layout/DynamicAuthLayout/DynamicAuthLayout.cjs +2 -2
- package/src/lib/layout/DynamicAuthLayout/DynamicAuthLayout.d.ts +2 -2
- package/src/lib/layout/DynamicAuthLayout/DynamicAuthLayout.js +2 -2
- package/src/lib/layout/DynamicUserProfileLayout/DynamicUserProfileLayout.cjs +3 -2
- package/src/lib/layout/DynamicUserProfileLayout/DynamicUserProfileLayout.d.ts +2 -3
- package/src/lib/layout/DynamicUserProfileLayout/DynamicUserProfileLayout.js +4 -3
- package/src/lib/shared/utils/hooks/useOnClickOutside/index.cjs +2 -2
- package/src/lib/shared/utils/hooks/useOnClickOutside/index.js +2 -2
- package/src/lib/styles/index.shadow.cjs +1 -1
- package/src/lib/styles/index.shadow.js +1 -1
- package/src/lib/utils/functions/getUserWalletsFromVerifiedCredentials/getUserWalletsFromVerifiedCredentials.cjs +26 -0
- package/src/lib/utils/functions/getUserWalletsFromVerifiedCredentials/getUserWalletsFromVerifiedCredentials.d.ts +1 -0
- package/src/lib/utils/functions/getUserWalletsFromVerifiedCredentials/getUserWalletsFromVerifiedCredentials.js +22 -0
- package/src/lib/utils/functions/getUserWalletsFromVerifiedCredentials/index.d.ts +1 -0
- package/src/lib/utils/functions/index.d.ts +1 -0
- package/src/lib/utils/hooks/multiWallet/useSyncPrimaryWallet/useSyncPrimaryWallet.cjs +2 -5
- package/src/lib/utils/hooks/multiWallet/useSyncPrimaryWallet/useSyncPrimaryWallet.js +2 -5
- package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +12 -6
- package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +12 -6
- package/src/lib/utils/hooks/useFetchProjectSettings/useFetchProjectSettings.cjs +1 -7
- package/src/lib/utils/hooks/useFetchProjectSettings/useFetchProjectSettings.js +2 -8
- package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.cjs +2 -6
- package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.d.ts +1 -2
- package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.js +2 -6
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +15 -5
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +15 -5
- package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.cjs +4 -2
- package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.d.ts +2 -1
- package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.js +4 -2
- package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.cjs +3 -8
- package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.js +3 -8
- package/src/lib/utils/types/ClassStyleProps.d.ts +5 -0
- package/src/lib/utils/types/index.d.ts +1 -0
- package/src/lib/views/LoginView/LoginView.cjs +1 -1
- package/src/lib/views/LoginView/LoginView.js +1 -1
- package/src/lib/views/LoginView/sections/EmailSignInSection/LoginEmailForm.cjs +7 -2
- package/src/lib/views/LoginView/sections/EmailSignInSection/LoginEmailForm.js +8 -3
- package/src/lib/views/LoginView/sections/SocialSignInSection/MagicSocialSignIn/MagicSocialSignIn.cjs +2 -4
- package/src/lib/views/LoginView/sections/SocialSignInSection/MagicSocialSignIn/MagicSocialSignIn.js +2 -4
- package/src/lib/views/LoginView/useLoginView.cjs +31 -17
- package/src/lib/views/LoginView/useLoginView.js +32 -18
- package/src/lib/views/PendingSignatureView/PendingSignatureView.cjs +1 -1
- package/src/lib/views/PendingSignatureView/PendingSignatureView.js +1 -1
- package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedAuthFlow/DynamicEmbeddedAuthFlow.cjs +2 -2
- package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedAuthFlow/DynamicEmbeddedAuthFlow.d.ts +4 -1
- package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedAuthFlow/DynamicEmbeddedAuthFlow.js +2 -2
- package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedUserProfile/DynamicEmbeddedUserProfile.cjs +2 -2
- package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedUserProfile/DynamicEmbeddedUserProfile.d.ts +4 -1
- package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedUserProfile/DynamicEmbeddedUserProfile.js +2 -2
- package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedWidget.cjs +2 -2
- package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedWidget.d.ts +4 -1
- package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedWidget.js +2 -2
- package/src/lib/widgets/DynamicWidget/components/ActiveWalletInformation/ActiveWalletInformation.cjs +2 -2
- package/src/lib/widgets/DynamicWidget/components/ActiveWalletInformation/ActiveWalletInformation.js +2 -2
- package/src/lib/widgets/DynamicWidget/components/DynamicUserProfile/DynamicUserProfile.cjs +1 -1
- package/src/lib/widgets/DynamicWidget/components/DynamicUserProfile/DynamicUserProfile.js +1 -1
- package/src/lib/widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetWalletHeader/DynamicWidgetWalletHeader.cjs +1 -1
- package/src/lib/widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetWalletHeader/DynamicWidgetWalletHeader.js +2 -2
- package/src/lib/widgets/DynamicWidget/components/DynamicWidgetWallets/DynamicWidgetWallets.cjs +2 -2
- package/src/lib/widgets/DynamicWidget/components/DynamicWidgetWallets/DynamicWidgetWallets.js +2 -2
- package/src/lib/utils/hooks/useWalletEventListeners/utils/index.d.ts +0 -1
- package/src/lib/utils/hooks/useWalletEventListeners/utils/sortAccountsByPrimaryWallet/index.d.ts +0 -1
- package/src/lib/utils/hooks/useWalletEventListeners/utils/sortAccountsByPrimaryWallet/sortAccountsByPrimaryWallet.cjs +0 -9
- package/src/lib/utils/hooks/useWalletEventListeners/utils/sortAccountsByPrimaryWallet/sortAccountsByPrimaryWallet.d.ts +0 -2
- package/src/lib/utils/hooks/useWalletEventListeners/utils/sortAccountsByPrimaryWallet/sortAccountsByPrimaryWallet.js +0 -5
|
@@ -20,10 +20,11 @@ import { isTurnkeyEnabled } from '../../functions/isTurnkeyEnabled/isTurnkeyEnab
|
|
|
20
20
|
import { isEmbeddedWalletPresent } from '../../functions/isEmbeddedWalletPresent/isEmbeddedWalletPresent.js';
|
|
21
21
|
import { findEmbeddedWalletFromVerifiedCredentials } from '../../functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.js';
|
|
22
22
|
import { findTurnkeyWallet } from '../../functions/findTurnkeyWallet/findTurnkeyWallet.js';
|
|
23
|
+
import { getUserWalletsFromVerifiedCredentials } from '../../functions/getUserWalletsFromVerifiedCredentials/getUserWalletsFromVerifiedCredentials.js';
|
|
23
24
|
|
|
24
25
|
// Hook exposed to customers and used internally to trigger embedded wallet creation
|
|
25
26
|
const useEmbeddedWallet = () => {
|
|
26
|
-
const { projectSettings, onboardingOnlyJwt, setPrimaryWalletId, wallets, internalSetShowAuthFlow, internalEvents, } = useInternalDynamicContext();
|
|
27
|
+
const { projectSettings, onboardingOnlyJwt, setPrimaryWalletId, wallets, internalSetShowAuthFlow, internalEvents, primaryWallet, } = useInternalDynamicContext();
|
|
27
28
|
const { setView } = useViewContext();
|
|
28
29
|
const userHasEmbeddedWallet = () => {
|
|
29
30
|
var _a;
|
|
@@ -42,9 +43,9 @@ const useEmbeddedWallet = () => {
|
|
|
42
43
|
if (!isTurnkeyEnabled(projectSettings)) {
|
|
43
44
|
throw new Error('Passkey embedded wallet is not enabled');
|
|
44
45
|
}
|
|
45
|
-
const
|
|
46
|
-
// if user doesn't have
|
|
47
|
-
if (!
|
|
46
|
+
const userWaletsCredentials = getUserWalletsFromVerifiedCredentials(jwt);
|
|
47
|
+
// if user doesn't have a wallet yet, show the passkey view to create an embedded wallet
|
|
48
|
+
if (!(userWaletsCredentials === null || userWaletsCredentials === void 0 ? void 0 : userWaletsCredentials.length)) {
|
|
48
49
|
internalSetShowAuthFlow(true);
|
|
49
50
|
setView('passkey-intro');
|
|
50
51
|
return new Promise((resolve, reject) => {
|
|
@@ -52,14 +53,19 @@ const useEmbeddedWallet = () => {
|
|
|
52
53
|
internalEvents.current.once('embeddedWalletFailed', (error) => reject(error));
|
|
53
54
|
});
|
|
54
55
|
}
|
|
55
|
-
|
|
56
|
+
internalSetShowAuthFlow(false);
|
|
57
|
+
const embeddedWalletVerifiedCredential = findEmbeddedWalletFromVerifiedCredentials(jwt);
|
|
56
58
|
const turnkeyWallet = findTurnkeyWallet(wallets);
|
|
59
|
+
// if user logged in with MM for example, just continue the flow
|
|
60
|
+
if (!embeddedWalletVerifiedCredential) {
|
|
61
|
+
return Promise.resolve(primaryWallet);
|
|
62
|
+
}
|
|
63
|
+
const decodedJwt = decodeJwt(jwt);
|
|
57
64
|
// if user already has embedded wallet, set it as primary wallet
|
|
58
65
|
if (decodedJwt) {
|
|
59
66
|
(_b = turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector) === null || _b === void 0 ? void 0 : _b.setVerifiedCredentials(decodedJwt.verifiedCredentials);
|
|
60
67
|
setPrimaryWalletId(embeddedWalletVerifiedCredential.id);
|
|
61
68
|
}
|
|
62
|
-
internalSetShowAuthFlow(false);
|
|
63
69
|
const passkeyWallet = {
|
|
64
70
|
address: (yield ((_c = turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector) === null || _c === void 0 ? void 0 : _c.fetchPublicAddress())) || '',
|
|
65
71
|
chain: ((_d = turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector) === null || _d === void 0 ? void 0 : _d.connectedChain) || '',
|
|
@@ -14,7 +14,7 @@ require('../../../context/ViewContext/ViewContext.cjs');
|
|
|
14
14
|
require('@dynamic-labs/wallet-book');
|
|
15
15
|
var localStorage = require('../../constants/localStorage.cjs');
|
|
16
16
|
require('../../constants/colors.cjs');
|
|
17
|
-
|
|
17
|
+
require('../../../shared/utils/classes/storage/localStorage.cjs');
|
|
18
18
|
require('viem');
|
|
19
19
|
var useLocalStorage = require('../../../shared/utils/hooks/useLocalStorage/useLocalStorage.cjs');
|
|
20
20
|
require('../../../shared/consts/index.cjs');
|
|
@@ -42,12 +42,6 @@ const useFetchProjectSettings = ({ authToken, environmentId, maxRetries = 2, dyn
|
|
|
42
42
|
}
|
|
43
43
|
return overrideSettings;
|
|
44
44
|
};
|
|
45
|
-
React.useEffect(() => {
|
|
46
|
-
const [connectedWalletData] = localStorage$1.LocalStorage.getFromLS(localStorage.CONNECTED_WALLETS_INFO) || [];
|
|
47
|
-
if (!authToken && !connectedWalletData) {
|
|
48
|
-
removeLsSettings();
|
|
49
|
-
}
|
|
50
|
-
}, [authToken, removeLsSettings]);
|
|
51
45
|
React.useEffect(() => {
|
|
52
46
|
if (!lsSettingsExists &&
|
|
53
47
|
!isLoading &&
|
|
@@ -8,9 +8,9 @@ import '@dynamic-labs/wallet-connector-core';
|
|
|
8
8
|
import 'react/jsx-runtime';
|
|
9
9
|
import '../../../context/ViewContext/ViewContext.js';
|
|
10
10
|
import '@dynamic-labs/wallet-book';
|
|
11
|
-
import { PROJECT_SETTINGS_STORAGE_KEY
|
|
11
|
+
import { PROJECT_SETTINGS_STORAGE_KEY } from '../../constants/localStorage.js';
|
|
12
12
|
import '../../constants/colors.js';
|
|
13
|
-
import
|
|
13
|
+
import '../../../shared/utils/classes/storage/localStorage.js';
|
|
14
14
|
import 'viem';
|
|
15
15
|
import { useLocalStorage } from '../../../shared/utils/hooks/useLocalStorage/useLocalStorage.js';
|
|
16
16
|
import '../../../shared/consts/index.js';
|
|
@@ -38,12 +38,6 @@ const useFetchProjectSettings = ({ authToken, environmentId, maxRetries = 2, dyn
|
|
|
38
38
|
}
|
|
39
39
|
return overrideSettings;
|
|
40
40
|
};
|
|
41
|
-
useEffect(() => {
|
|
42
|
-
const [connectedWalletData] = LocalStorage.getFromLS(CONNECTED_WALLETS_INFO) || [];
|
|
43
|
-
if (!authToken && !connectedWalletData) {
|
|
44
|
-
removeLsSettings();
|
|
45
|
-
}
|
|
46
|
-
}, [authToken, removeLsSettings]);
|
|
47
41
|
useEffect(() => {
|
|
48
42
|
if (!lsSettingsExists &&
|
|
49
43
|
!isLoading &&
|
|
@@ -20,15 +20,11 @@ require('../../../shared/consts/index.cjs');
|
|
|
20
20
|
var primaryWalletIdValidator = require('../useWalletConnectors/utils/primaryWalletIdValidator/primaryWalletIdValidator.cjs');
|
|
21
21
|
require('@dynamic-labs/multi-wallet');
|
|
22
22
|
|
|
23
|
-
const usePrimaryWalletId = (
|
|
24
|
-
const [primaryWalletId, setPrimaryWalletIdState,
|
|
23
|
+
const usePrimaryWalletId = () => {
|
|
24
|
+
const [primaryWalletId, setPrimaryWalletIdState, clearPrimaryWalletId] = useLocalStorage.useLocalStorage(localStorage.PRIMARY_WALLET_ID, undefined, primaryWalletIdValidator.primaryWalletIdValidator);
|
|
25
25
|
const setPrimaryWalletId = React.useCallback((walletId) => {
|
|
26
26
|
setPrimaryWalletIdState(walletId);
|
|
27
27
|
}, [setPrimaryWalletIdState]);
|
|
28
|
-
const clearPrimaryWalletId = React.useCallback(() => {
|
|
29
|
-
clearPrimaryWalletIdStorage();
|
|
30
|
-
internalEvents.emit('clearPrimaryWallet');
|
|
31
|
-
}, [clearPrimaryWalletIdStorage, internalEvents]);
|
|
32
28
|
return {
|
|
33
29
|
clearPrimaryWalletId,
|
|
34
30
|
primaryWalletId,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const usePrimaryWalletId: (internalEvents: InternalEventEmitter) => {
|
|
1
|
+
export declare const usePrimaryWalletId: () => {
|
|
3
2
|
clearPrimaryWalletId: () => void;
|
|
4
3
|
primaryWalletId: string | undefined;
|
|
5
4
|
setPrimaryWalletId: (walletId: string) => void;
|
|
@@ -16,15 +16,11 @@ import '../../../shared/consts/index.js';
|
|
|
16
16
|
import { primaryWalletIdValidator } from '../useWalletConnectors/utils/primaryWalletIdValidator/primaryWalletIdValidator.js';
|
|
17
17
|
import '@dynamic-labs/multi-wallet';
|
|
18
18
|
|
|
19
|
-
const usePrimaryWalletId = (
|
|
20
|
-
const [primaryWalletId, setPrimaryWalletIdState,
|
|
19
|
+
const usePrimaryWalletId = () => {
|
|
20
|
+
const [primaryWalletId, setPrimaryWalletIdState, clearPrimaryWalletId] = useLocalStorage(PRIMARY_WALLET_ID, undefined, primaryWalletIdValidator);
|
|
21
21
|
const setPrimaryWalletId = useCallback((walletId) => {
|
|
22
22
|
setPrimaryWalletIdState(walletId);
|
|
23
23
|
}, [setPrimaryWalletIdState]);
|
|
24
|
-
const clearPrimaryWalletId = useCallback(() => {
|
|
25
|
-
clearPrimaryWalletIdStorage();
|
|
26
|
-
internalEvents.emit('clearPrimaryWallet');
|
|
27
|
-
}, [clearPrimaryWalletIdStorage, internalEvents]);
|
|
28
24
|
return {
|
|
29
25
|
clearPrimaryWalletId,
|
|
30
26
|
primaryWalletId,
|
|
@@ -192,10 +192,6 @@ const useSocialAuth = ({ sessionTimeout, authMode, onSettled, onError, }) => {
|
|
|
192
192
|
const handleAuthWindowMessage = (event) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
193
193
|
var _e, _f;
|
|
194
194
|
const message = event.data;
|
|
195
|
-
const isAuthorizationMessage = (message === null || message === void 0 ? void 0 : message.type) === 'authorization_response';
|
|
196
|
-
if (isAuthorizationMessage) {
|
|
197
|
-
logger.logger.debug('Message received', { data: message });
|
|
198
|
-
}
|
|
199
195
|
const apiProvider = getProviderByType.getProviderByType((_e = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) !== null && _e !== void 0 ? _e : [], provider);
|
|
200
196
|
if (!(apiProvider === null || apiProvider === void 0 ? void 0 : apiProvider.redirectUrl)) {
|
|
201
197
|
return;
|
|
@@ -213,6 +209,18 @@ const useSocialAuth = ({ sessionTimeout, authMode, onSettled, onError, }) => {
|
|
|
213
209
|
return;
|
|
214
210
|
}
|
|
215
211
|
}
|
|
212
|
+
if ((message === null || message === void 0 ? void 0 : message.type) === 'origin_check' && authWindow) {
|
|
213
|
+
logger.logger.debug('Origin check message received. Sending response now.', {
|
|
214
|
+
data: message,
|
|
215
|
+
expectedOrigin,
|
|
216
|
+
});
|
|
217
|
+
authWindow.postMessage('origin_check_response', expectedOrigin);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
const isAuthorizationMessage = (message === null || message === void 0 ? void 0 : message.type) === 'authorization_response';
|
|
221
|
+
if (isAuthorizationMessage) {
|
|
222
|
+
logger.logger.debug('Message received', { data: message });
|
|
223
|
+
}
|
|
216
224
|
const isExpectedOrigin = event.origin === expectedOrigin;
|
|
217
225
|
const isValidMessage = isAuthorizationMessage &&
|
|
218
226
|
(message === null || message === void 0 ? void 0 : message.provider) === provider &&
|
|
@@ -234,7 +242,9 @@ const useSocialAuth = ({ sessionTimeout, authMode, onSettled, onError, }) => {
|
|
|
234
242
|
}
|
|
235
243
|
// check that the state we receive from message is the same state we calculated earlier
|
|
236
244
|
// this could be an attack
|
|
237
|
-
|
|
245
|
+
// this state check is used only by providers with an open window opener reference (eg, not twitter)
|
|
246
|
+
if (!providersWithoutWindowOpenerRefence.includes(provider) &&
|
|
247
|
+
state !== authState) {
|
|
238
248
|
handleError(types.SocialOAuthErrorCode.OAUTH_ERROR, `Failed to connect ${provider} social account: Invalid random state`);
|
|
239
249
|
return;
|
|
240
250
|
}
|
|
@@ -188,10 +188,6 @@ const useSocialAuth = ({ sessionTimeout, authMode, onSettled, onError, }) => {
|
|
|
188
188
|
const handleAuthWindowMessage = (event) => __awaiter(void 0, void 0, void 0, function* () {
|
|
189
189
|
var _e, _f;
|
|
190
190
|
const message = event.data;
|
|
191
|
-
const isAuthorizationMessage = (message === null || message === void 0 ? void 0 : message.type) === 'authorization_response';
|
|
192
|
-
if (isAuthorizationMessage) {
|
|
193
|
-
logger.debug('Message received', { data: message });
|
|
194
|
-
}
|
|
195
191
|
const apiProvider = getProviderByType((_e = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) !== null && _e !== void 0 ? _e : [], provider);
|
|
196
192
|
if (!(apiProvider === null || apiProvider === void 0 ? void 0 : apiProvider.redirectUrl)) {
|
|
197
193
|
return;
|
|
@@ -209,6 +205,18 @@ const useSocialAuth = ({ sessionTimeout, authMode, onSettled, onError, }) => {
|
|
|
209
205
|
return;
|
|
210
206
|
}
|
|
211
207
|
}
|
|
208
|
+
if ((message === null || message === void 0 ? void 0 : message.type) === 'origin_check' && authWindow) {
|
|
209
|
+
logger.debug('Origin check message received. Sending response now.', {
|
|
210
|
+
data: message,
|
|
211
|
+
expectedOrigin,
|
|
212
|
+
});
|
|
213
|
+
authWindow.postMessage('origin_check_response', expectedOrigin);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
const isAuthorizationMessage = (message === null || message === void 0 ? void 0 : message.type) === 'authorization_response';
|
|
217
|
+
if (isAuthorizationMessage) {
|
|
218
|
+
logger.debug('Message received', { data: message });
|
|
219
|
+
}
|
|
212
220
|
const isExpectedOrigin = event.origin === expectedOrigin;
|
|
213
221
|
const isValidMessage = isAuthorizationMessage &&
|
|
214
222
|
(message === null || message === void 0 ? void 0 : message.provider) === provider &&
|
|
@@ -230,7 +238,9 @@ const useSocialAuth = ({ sessionTimeout, authMode, onSettled, onError, }) => {
|
|
|
230
238
|
}
|
|
231
239
|
// check that the state we receive from message is the same state we calculated earlier
|
|
232
240
|
// this could be an attack
|
|
233
|
-
|
|
241
|
+
// this state check is used only by providers with an open window opener reference (eg, not twitter)
|
|
242
|
+
if (!providersWithoutWindowOpenerRefence.includes(provider) &&
|
|
243
|
+
state !== authState) {
|
|
234
244
|
handleError(SocialOAuthErrorCode.OAUTH_ERROR, `Failed to connect ${provider} social account: Invalid random state`);
|
|
235
245
|
return;
|
|
236
246
|
}
|
|
@@ -21,7 +21,7 @@ var useWalletsConnectionState = require('../useWalletsConnectionState/useWallets
|
|
|
21
21
|
var createLinkedWalletsFromWalletOptions = require('./utils/createLinkedWalletsFromWalletOptions/createLinkedWalletsFromWalletOptions.cjs');
|
|
22
22
|
var reconnectSocialWallet = require('./reconnectSocialWallet.cjs');
|
|
23
23
|
|
|
24
|
-
const useWalletConnectors = ({ authMode, authToken, connectedWallets, wallets: availableWallets, multiWalletWidgetState, setDesktopUri, setMultiWalletWidgetState, setQrcodeUri, primaryWalletId, setPrimaryWalletId, user, onboardingOnlyJwt, }) => {
|
|
24
|
+
const useWalletConnectors = ({ authMode, authToken, connectedWallets, wallets: availableWallets, multiWalletWidgetState, setDesktopUri, setMultiWalletWidgetState, setQrcodeUri, primaryWalletId, setPrimaryWalletId, user, onboardingOnlyJwt, canHaveMultipleWalletsConnected, }) => {
|
|
25
25
|
const [showQrcodeModal, setShowQrcodeModal] = React.useState(false);
|
|
26
26
|
const linkedWallets = React.useMemo(() => {
|
|
27
27
|
if (!authToken) {
|
|
@@ -60,7 +60,9 @@ const useWalletConnectors = ({ authMode, authToken, connectedWallets, wallets: a
|
|
|
60
60
|
computeConnectedStateForWallets();
|
|
61
61
|
}, [primaryWalletId, computeConnectedStateForWallets]);
|
|
62
62
|
const getPrimaryWallet = React.useCallback(() => { var _a; return (_a = wallets.find((wallet) => wallet.id === primaryWalletId)) !== null && _a !== void 0 ? _a : null; }, [primaryWalletId, wallets]);
|
|
63
|
-
const getSecondaryWallets = React.useCallback(() =>
|
|
63
|
+
const getSecondaryWallets = React.useCallback(() => canHaveMultipleWalletsConnected
|
|
64
|
+
? wallets.filter((wallet) => wallet.id !== primaryWalletId)
|
|
65
|
+
: [], [primaryWalletId, wallets, canHaveMultipleWalletsConnected]);
|
|
64
66
|
const getSelectedWallet = React.useCallback((walletId) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
65
67
|
const newWallet = wallets.find(({ id }) => id === walletId);
|
|
66
68
|
if (!newWallet) {
|
|
@@ -15,6 +15,7 @@ type Props = {
|
|
|
15
15
|
primaryWalletId: string | undefined;
|
|
16
16
|
user?: UserProfile;
|
|
17
17
|
onboardingOnlyJwt?: string;
|
|
18
|
+
canHaveMultipleWalletsConnected?: boolean;
|
|
18
19
|
};
|
|
19
20
|
export interface UseWalletConnectors {
|
|
20
21
|
computeConnectedStateForWallets: () => Promise<void>;
|
|
@@ -29,5 +30,5 @@ export interface UseWalletConnectors {
|
|
|
29
30
|
walletConnectors: WalletConnector[];
|
|
30
31
|
wallets: Wallet[];
|
|
31
32
|
}
|
|
32
|
-
export declare const useWalletConnectors: ({ authMode, authToken, connectedWallets, wallets: availableWallets, multiWalletWidgetState, setDesktopUri, setMultiWalletWidgetState, setQrcodeUri, primaryWalletId, setPrimaryWalletId, user, onboardingOnlyJwt, }: Props) => UseWalletConnectors;
|
|
33
|
+
export declare const useWalletConnectors: ({ authMode, authToken, connectedWallets, wallets: availableWallets, multiWalletWidgetState, setDesktopUri, setMultiWalletWidgetState, setQrcodeUri, primaryWalletId, setPrimaryWalletId, user, onboardingOnlyJwt, canHaveMultipleWalletsConnected, }: Props) => UseWalletConnectors;
|
|
33
34
|
export {};
|
|
@@ -17,7 +17,7 @@ import { useWalletsConnectionState } from '../useWalletsConnectionState/useWalle
|
|
|
17
17
|
import { createLinkedWalletsFromWalletOptions } from './utils/createLinkedWalletsFromWalletOptions/createLinkedWalletsFromWalletOptions.js';
|
|
18
18
|
import { reconnectSocialWallet } from './reconnectSocialWallet.js';
|
|
19
19
|
|
|
20
|
-
const useWalletConnectors = ({ authMode, authToken, connectedWallets, wallets: availableWallets, multiWalletWidgetState, setDesktopUri, setMultiWalletWidgetState, setQrcodeUri, primaryWalletId, setPrimaryWalletId, user, onboardingOnlyJwt, }) => {
|
|
20
|
+
const useWalletConnectors = ({ authMode, authToken, connectedWallets, wallets: availableWallets, multiWalletWidgetState, setDesktopUri, setMultiWalletWidgetState, setQrcodeUri, primaryWalletId, setPrimaryWalletId, user, onboardingOnlyJwt, canHaveMultipleWalletsConnected, }) => {
|
|
21
21
|
const [showQrcodeModal, setShowQrcodeModal] = useState(false);
|
|
22
22
|
const linkedWallets = useMemo(() => {
|
|
23
23
|
if (!authToken) {
|
|
@@ -56,7 +56,9 @@ const useWalletConnectors = ({ authMode, authToken, connectedWallets, wallets: a
|
|
|
56
56
|
computeConnectedStateForWallets();
|
|
57
57
|
}, [primaryWalletId, computeConnectedStateForWallets]);
|
|
58
58
|
const getPrimaryWallet = useCallback(() => { var _a; return (_a = wallets.find((wallet) => wallet.id === primaryWalletId)) !== null && _a !== void 0 ? _a : null; }, [primaryWalletId, wallets]);
|
|
59
|
-
const getSecondaryWallets = useCallback(() =>
|
|
59
|
+
const getSecondaryWallets = useCallback(() => canHaveMultipleWalletsConnected
|
|
60
|
+
? wallets.filter((wallet) => wallet.id !== primaryWalletId)
|
|
61
|
+
: [], [primaryWalletId, wallets, canHaveMultipleWalletsConnected]);
|
|
60
62
|
const getSelectedWallet = useCallback((walletId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
61
63
|
const newWallet = wallets.find(({ id }) => id === walletId);
|
|
62
64
|
if (!newWallet) {
|
|
@@ -17,7 +17,6 @@ require('../../../shared/utils/classes/storage/localStorage.cjs');
|
|
|
17
17
|
require('viem');
|
|
18
18
|
require('../../../shared/consts/index.cjs');
|
|
19
19
|
var useWalletConnectorEvent = require('../useWalletConnectorEvent/useWalletConnectorEvent.cjs');
|
|
20
|
-
var sortAccountsByPrimaryWallet = require('./utils/sortAccountsByPrimaryWallet/sortAccountsByPrimaryWallet.cjs');
|
|
21
20
|
|
|
22
21
|
const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut, multiWallet, multiWalletWidgetState, primaryWallet, secondaryWallets, selectedWalletConnector, selectedWalletWithAction, setSelectedWalletConnector, setSelectedWalletWithAction, setMultiWalletWidgetState, user, setPrimaryWalletId, authMode, refreshConnectedWallet, }) => {
|
|
23
22
|
const [loadingNetwork, setLoadingNetwork] = React.useState(true);
|
|
@@ -25,7 +24,7 @@ const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut
|
|
|
25
24
|
React.useEffect(() => {
|
|
26
25
|
const fetchNetwork = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
27
26
|
try {
|
|
28
|
-
if (!primaryWallet)
|
|
27
|
+
if (!(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector))
|
|
29
28
|
return;
|
|
30
29
|
const network = yield primaryWallet.connector.getNetwork();
|
|
31
30
|
setNetwork(network);
|
|
@@ -39,7 +38,7 @@ const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut
|
|
|
39
38
|
}
|
|
40
39
|
});
|
|
41
40
|
fetchNetwork();
|
|
42
|
-
}, [primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.
|
|
41
|
+
}, [primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector]);
|
|
43
42
|
useWalletConnectorEvent.useWalletConnectorEvent(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, 'disconnect', () => {
|
|
44
43
|
logger.logger.debug('primary wallet disconnect');
|
|
45
44
|
handleLogOut();
|
|
@@ -65,11 +64,7 @@ const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut
|
|
|
65
64
|
// change the api here
|
|
66
65
|
if (!primaryWallet)
|
|
67
66
|
return;
|
|
68
|
-
|
|
69
|
-
// when multiWallet is disabled to ensure we find the primary address
|
|
70
|
-
const [newAddress] = multiWallet
|
|
71
|
-
? accounts
|
|
72
|
-
: sortAccountsByPrimaryWallet.sortAccountsByPrimaryWallet(accounts, primaryWallet);
|
|
67
|
+
const [newAddress] = accounts;
|
|
73
68
|
const newWallet = secondaryWallets.find((wallet) => walletConnectorCore.isSameAddress(wallet.address, newAddress, wallet.chain));
|
|
74
69
|
if (authMode === 'connect-only') {
|
|
75
70
|
refreshConnectedWallet(primaryWallet.id, primaryWallet.connector);
|
|
@@ -13,7 +13,6 @@ import '../../../shared/utils/classes/storage/localStorage.js';
|
|
|
13
13
|
import 'viem';
|
|
14
14
|
import '../../../shared/consts/index.js';
|
|
15
15
|
import { useWalletConnectorEvent } from '../useWalletConnectorEvent/useWalletConnectorEvent.js';
|
|
16
|
-
import { sortAccountsByPrimaryWallet } from './utils/sortAccountsByPrimaryWallet/sortAccountsByPrimaryWallet.js';
|
|
17
16
|
|
|
18
17
|
const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut, multiWallet, multiWalletWidgetState, primaryWallet, secondaryWallets, selectedWalletConnector, selectedWalletWithAction, setSelectedWalletConnector, setSelectedWalletWithAction, setMultiWalletWidgetState, user, setPrimaryWalletId, authMode, refreshConnectedWallet, }) => {
|
|
19
18
|
const [loadingNetwork, setLoadingNetwork] = useState(true);
|
|
@@ -21,7 +20,7 @@ const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut
|
|
|
21
20
|
useEffect(() => {
|
|
22
21
|
const fetchNetwork = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
23
22
|
try {
|
|
24
|
-
if (!primaryWallet)
|
|
23
|
+
if (!(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector))
|
|
25
24
|
return;
|
|
26
25
|
const network = yield primaryWallet.connector.getNetwork();
|
|
27
26
|
setNetwork(network);
|
|
@@ -35,7 +34,7 @@ const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut
|
|
|
35
34
|
}
|
|
36
35
|
});
|
|
37
36
|
fetchNetwork();
|
|
38
|
-
}, [primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.
|
|
37
|
+
}, [primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector]);
|
|
39
38
|
useWalletConnectorEvent(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, 'disconnect', () => {
|
|
40
39
|
logger.debug('primary wallet disconnect');
|
|
41
40
|
handleLogOut();
|
|
@@ -61,11 +60,7 @@ const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut
|
|
|
61
60
|
// change the api here
|
|
62
61
|
if (!primaryWallet)
|
|
63
62
|
return;
|
|
64
|
-
|
|
65
|
-
// when multiWallet is disabled to ensure we find the primary address
|
|
66
|
-
const [newAddress] = multiWallet
|
|
67
|
-
? accounts
|
|
68
|
-
: sortAccountsByPrimaryWallet(accounts, primaryWallet);
|
|
63
|
+
const [newAddress] = accounts;
|
|
69
64
|
const newWallet = secondaryWallets.find((wallet) => isSameAddress(wallet.address, newAddress, wallet.chain));
|
|
70
65
|
if (authMode === 'connect-only') {
|
|
71
66
|
refreshConnectedWallet(primaryWallet.id, primaryWallet.connector);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ClassStyleProps';
|
|
@@ -53,6 +53,7 @@ require('../../../../utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUse
|
|
|
53
53
|
require('../../../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
|
|
54
54
|
require('formik');
|
|
55
55
|
require('yup');
|
|
56
|
+
var Button = require('../../../../components/Button/Button.cjs');
|
|
56
57
|
var IconButton = require('../../../../components/IconButton/IconButton.cjs');
|
|
57
58
|
require('../../../../components/Alert/Alert.cjs');
|
|
58
59
|
require('../../../../components/Popper/Popper/Popper.cjs');
|
|
@@ -63,7 +64,7 @@ var useEmailProvider = require('../../../../utils/hooks/useEmailProvider/useEmai
|
|
|
63
64
|
|
|
64
65
|
const EMAIL_REGEX = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i;
|
|
65
66
|
const LoginEmailForm = ({ isLoading: isExternalLoading, onSubmit, onSubmitError, currentEmail, }) => {
|
|
66
|
-
var _a;
|
|
67
|
+
var _a, _b, _c;
|
|
67
68
|
const { t } = reactI18next.useTranslation();
|
|
68
69
|
const { environmentId, wallets, projectSettings } = useInternalDynamicContext.useInternalDynamicContext();
|
|
69
70
|
const { setErrorMessage } = ErrorContext.useErrorContext();
|
|
@@ -122,7 +123,11 @@ const LoginEmailForm = ({ isLoading: isExternalLoading, onSubmit, onSubmitError,
|
|
|
122
123
|
}
|
|
123
124
|
});
|
|
124
125
|
// social sign in currently coupled to email... might be better to decouple
|
|
125
|
-
return (jsxRuntime.
|
|
126
|
+
return (jsxRuntime.jsxs("form", { className: 'login-with-email-form', onSubmit: (e) => handleSubmit(e), children: [jsxRuntime.jsx(Input.Input, { id: 'email_field', value: emailInput, onChange: handleEmailOnChangeEvent, label: 'Enter your email', error: invalidEmail, message: invalidEmail && t('dyn_login.helper.email_form.invalid_email'), suffix: ((_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design.modal) === null || _b === void 0 ? void 0 : _b.emailSubmitButtonInsideInput)
|
|
127
|
+
? emailInputSuffixIcon
|
|
128
|
+
: null, disabled: isLoading }), !((_c = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design.modal) === null || _c === void 0 ? void 0 : _c.emailSubmitButtonInsideInput) && (jsxRuntime.jsx(Button.Button, { dataTestId: 'email_submit_button', buttonClassName: 'login-with-email-form__button', type: 'submit', loading: isLoading, disabled: isLoading, buttonVariant: 'brand-primary', buttonPadding: 'large', expanded: true, typographyProps: {
|
|
129
|
+
color: 'inherit',
|
|
130
|
+
}, children: "Continue" }))] }));
|
|
126
131
|
};
|
|
127
132
|
|
|
128
133
|
exports.EMAIL_REGEX = EMAIL_REGEX;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __awaiter } from '../../../../../../_virtual/_tslib.js';
|
|
2
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
3
|
import { useState, useMemo } from 'react';
|
|
4
4
|
import { useTranslation } from 'react-i18next';
|
|
5
5
|
import { isEmailWalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
@@ -49,6 +49,7 @@ import '../../../../utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser
|
|
|
49
49
|
import '../../../../context/UserFieldEditorContext/UserFieldEditorContext.js';
|
|
50
50
|
import 'formik';
|
|
51
51
|
import 'yup';
|
|
52
|
+
import { Button } from '../../../../components/Button/Button.js';
|
|
52
53
|
import { IconButton } from '../../../../components/IconButton/IconButton.js';
|
|
53
54
|
import '../../../../components/Alert/Alert.js';
|
|
54
55
|
import '../../../../components/Popper/Popper/Popper.js';
|
|
@@ -59,7 +60,7 @@ import { useEmailProvider } from '../../../../utils/hooks/useEmailProvider/useEm
|
|
|
59
60
|
|
|
60
61
|
const EMAIL_REGEX = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i;
|
|
61
62
|
const LoginEmailForm = ({ isLoading: isExternalLoading, onSubmit, onSubmitError, currentEmail, }) => {
|
|
62
|
-
var _a;
|
|
63
|
+
var _a, _b, _c;
|
|
63
64
|
const { t } = useTranslation();
|
|
64
65
|
const { environmentId, wallets, projectSettings } = useInternalDynamicContext();
|
|
65
66
|
const { setErrorMessage } = useErrorContext();
|
|
@@ -118,7 +119,11 @@ const LoginEmailForm = ({ isLoading: isExternalLoading, onSubmit, onSubmitError,
|
|
|
118
119
|
}
|
|
119
120
|
});
|
|
120
121
|
// social sign in currently coupled to email... might be better to decouple
|
|
121
|
-
return (
|
|
122
|
+
return (jsxs("form", { className: 'login-with-email-form', onSubmit: (e) => handleSubmit(e), children: [jsx(Input, { id: 'email_field', value: emailInput, onChange: handleEmailOnChangeEvent, label: 'Enter your email', error: invalidEmail, message: invalidEmail && t('dyn_login.helper.email_form.invalid_email'), suffix: ((_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design.modal) === null || _b === void 0 ? void 0 : _b.emailSubmitButtonInsideInput)
|
|
123
|
+
? emailInputSuffixIcon
|
|
124
|
+
: null, disabled: isLoading }), !((_c = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design.modal) === null || _c === void 0 ? void 0 : _c.emailSubmitButtonInsideInput) && (jsx(Button, { dataTestId: 'email_submit_button', buttonClassName: 'login-with-email-form__button', type: 'submit', loading: isLoading, disabled: isLoading, buttonVariant: 'brand-primary', buttonPadding: 'large', expanded: true, typographyProps: {
|
|
125
|
+
color: 'inherit',
|
|
126
|
+
}, children: "Continue" }))] }));
|
|
122
127
|
};
|
|
123
128
|
|
|
124
129
|
export { EMAIL_REGEX, LoginEmailForm };
|
package/src/lib/views/LoginView/sections/SocialSignInSection/MagicSocialSignIn/MagicSocialSignIn.cjs
CHANGED
|
@@ -16,7 +16,7 @@ require('../../../../../utils/constants/colors.cjs');
|
|
|
16
16
|
require('../../../../../shared/utils/classes/storage/localStorage.cjs');
|
|
17
17
|
require('viem');
|
|
18
18
|
require('../../../../../shared/consts/index.cjs');
|
|
19
|
-
|
|
19
|
+
require('../../../../../context/DynamicContext/DynamicContext.cjs');
|
|
20
20
|
require('@dynamic-labs/multi-wallet');
|
|
21
21
|
require('../../../../../components/ShadowDOM/ShadowDOM.cjs');
|
|
22
22
|
require('../../../../../context/ThemeContext/ThemeContext.cjs');
|
|
@@ -61,15 +61,13 @@ var SocialSignIn = require('../../../../../components/SocialSignIn/SocialSignIn.
|
|
|
61
61
|
var SocialRedirectContext = require('../../../../../context/SocialRedirectContext/SocialRedirectContext.cjs');
|
|
62
62
|
|
|
63
63
|
const MagicSocialSignIn = ({ defaultProvider, numOfItemsToDisplay, collapsedLayout, }) => {
|
|
64
|
-
const { socialProvidersFilter = (providers) => providers } = useInternalDynamicContext.useInternalDynamicContext();
|
|
65
64
|
const { socialProvider, setSocialProvider, socialWalletConnector, enabledSocialProviders, } = SocialRedirectContext.useSocialRedirectContext();
|
|
66
|
-
const socialProviders = socialProvidersFilter(enabledSocialProviders);
|
|
67
65
|
const { mutate: onClickProvider, isLoading } = useMutation.useMutation((provider) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
68
66
|
setSocialProvider(provider);
|
|
69
67
|
yield (socialWalletConnector === null || socialWalletConnector === void 0 ? void 0 : socialWalletConnector.endSession());
|
|
70
68
|
return socialWalletConnector === null || socialWalletConnector === void 0 ? void 0 : socialWalletConnector.connect(provider);
|
|
71
69
|
}));
|
|
72
|
-
return (jsxRuntime.jsx(SocialSignIn.SocialSignIn, { onSelectProvider: onClickProvider, providers:
|
|
70
|
+
return (jsxRuntime.jsx(SocialSignIn.SocialSignIn, { onSelectProvider: onClickProvider, providers: enabledSocialProviders, selectedProvider: socialProvider, isLoading: isLoading, testId: 'magic-social-sign-in', defaultProvider: defaultProvider, numOfItemsToDisplay: numOfItemsToDisplay, collapsedLayout: collapsedLayout }));
|
|
73
71
|
};
|
|
74
72
|
|
|
75
73
|
exports.MagicSocialSignIn = MagicSocialSignIn;
|
package/src/lib/views/LoginView/sections/SocialSignInSection/MagicSocialSignIn/MagicSocialSignIn.js
CHANGED
|
@@ -12,7 +12,7 @@ import '../../../../../utils/constants/colors.js';
|
|
|
12
12
|
import '../../../../../shared/utils/classes/storage/localStorage.js';
|
|
13
13
|
import 'viem';
|
|
14
14
|
import '../../../../../shared/consts/index.js';
|
|
15
|
-
import
|
|
15
|
+
import '../../../../../context/DynamicContext/DynamicContext.js';
|
|
16
16
|
import '@dynamic-labs/multi-wallet';
|
|
17
17
|
import '../../../../../components/ShadowDOM/ShadowDOM.js';
|
|
18
18
|
import '../../../../../context/ThemeContext/ThemeContext.js';
|
|
@@ -57,15 +57,13 @@ import { SocialSignIn } from '../../../../../components/SocialSignIn/SocialSignI
|
|
|
57
57
|
import { useSocialRedirectContext } from '../../../../../context/SocialRedirectContext/SocialRedirectContext.js';
|
|
58
58
|
|
|
59
59
|
const MagicSocialSignIn = ({ defaultProvider, numOfItemsToDisplay, collapsedLayout, }) => {
|
|
60
|
-
const { socialProvidersFilter = (providers) => providers } = useInternalDynamicContext();
|
|
61
60
|
const { socialProvider, setSocialProvider, socialWalletConnector, enabledSocialProviders, } = useSocialRedirectContext();
|
|
62
|
-
const socialProviders = socialProvidersFilter(enabledSocialProviders);
|
|
63
61
|
const { mutate: onClickProvider, isLoading } = useMutation((provider) => __awaiter(void 0, void 0, void 0, function* () {
|
|
64
62
|
setSocialProvider(provider);
|
|
65
63
|
yield (socialWalletConnector === null || socialWalletConnector === void 0 ? void 0 : socialWalletConnector.endSession());
|
|
66
64
|
return socialWalletConnector === null || socialWalletConnector === void 0 ? void 0 : socialWalletConnector.connect(provider);
|
|
67
65
|
}));
|
|
68
|
-
return (jsx(SocialSignIn, { onSelectProvider: onClickProvider, providers:
|
|
66
|
+
return (jsx(SocialSignIn, { onSelectProvider: onClickProvider, providers: enabledSocialProviders, selectedProvider: socialProvider, isLoading: isLoading, testId: 'magic-social-sign-in', defaultProvider: defaultProvider, numOfItemsToDisplay: numOfItemsToDisplay, collapsedLayout: collapsedLayout }));
|
|
69
67
|
};
|
|
70
68
|
|
|
71
69
|
export { MagicSocialSignIn };
|